Saya baru mula berhubung dengan pembangunan modular bahagian hadapan. Saya menulis demo untuk mempelajari pek web pada dasarnya saya memahami fail konfigurasi dan proses operasi, tetapi pemuatan atas permintaan sentiasa gagal
Dalam fail entri, 3 kaedah digunakan untuk memuatkan:
import test from './index/test.js';
// const test=(resolve) => require(['./index/test.js'], resolve)
// const test=resolve => { require.ensure(['./index/test.js'], () => { resolve(require('./index/test.js')) }) }
test.exe('显示测试文字');//执行
Kandungan test.js sangat mudah, cuma cetak untuk konsol:
const test={
exe:function (res) {
console.log('test方法的输出:'+res);
}
};
export default test
Tiga kaedah telah diuji Hanya kaedah import langsung yang pertama berjalan seperti biasa. Jika anda mengulas keluar
dan hanya memuatkan tetapi tidak melaksanakan, tiada ralat akan dilaporkan. test.exe('显示测试文字');
Pemahaman saya ialah tidak ada yang salah dengan memuatkan kod, tetapi apabila ia perlu dimuatkan, ia tidak berjaya dimuatkan. Mengapa ini? Adakah saya menulis sesuatu yang salah di suatu tempat? Atau adakah saya perlu membuat konfigurasi tambahan kepada webpack.config.jx?
Beri anda contoh untuk rujukan
html
Pemalam fail js.js yang perlu dimuatkan secara tidak segerak
masukan fail kompilasi entri webpack.js
Kesannya ialah mod1.js dimuatkan dan dimasukkan ke dalam kepala apabila diklik, tetapi ia tidak dimuatkan pada mulanya
Akhir sekali, mengenai konfigurasi webpack.config.js.
Saya telah menghadapi masalah yang sama baru-baru ini, izinkan saya menerangkannya secara ringkas.
Apabila webpack dinaik taraf kepada 2, kaedah kredit kedua dan ketiga anda tidak dibungkus terus ke main.js.
Maksudnya, untuk modul yang diperlukan untuk pemuatan skrin pertama, mod pemuatan tak segerak tidak boleh digunakan lagi, tetapi boleh dimuatkan atas permintaan.
Anda boleh melihat dalam fail yang dibungkus Kecuali kaedah pertama, kaedah ujian anda belum dibungkus ke dalam js anda.
Apa yang anda mahu lakukan dengan kaedah penulisan kedua dan ketiga? Adakah anda ingin mensimulasikan kaedah penulisan spesifikasi AMD atau CMD?
Spesifikasi modul yang paling biasa ialah modul ES6 dan spesifikasi commonJS node.js, kerana terdapat perbezaan dalam butiran pemuatan tertentu, seperti masa pemuatan dan cara rujukan fail yang berbeza. Tetapi tujuan menggunakan webpack adalah untuk menyatukan spesifikasi yang berbeza Webpack akan membungkus semua modul bersama-sama terlebih dahulu, masing-masing memberi mereka id, dan merujuknya dengan id, supaya tiada perbezaan antara modul ES6 dan spesifikasi CommonJS selepas webpack disusun yang sama berlaku untuk spesifikasi AMD dan CMD.
Jika poster ingin menggunakan webpack untuk melaksanakan pemuatan tertunda CMD, idea ini adalah salah, kerana tidak kira kaedah pemuatan mana pun, apa yang dilakukan oleh webpack adalah untuk membungkus semua modul yang anda bergantung pada (atau akan bergantung pada) ke dalam satu fail, supaya Pakej yang sepadan boleh ditemui oleh id semasa runtime, melemahkan perbezaan antara spesifikasiSaya tidak tahu persekitaran khusus anda Persekitaran saya sendiri telah dinaik taraf kepada Webpack2 + React Router v4 Anda boleh merujuk kepada dokumen: https://reacttraining.cn/web/...
Mula-mula anda perlu mengekod dan mencipta komponen Bundle untuk memuatkan modul dan fail komponen yang diperlukan atas permintaan.
Kod di atas disalin daripada dokumen dan kaedah permulaan keadaan diubah suai Jika anda tidak mengubah suai kaedah permulaan keadaan, anda perlu menggunakan
babel-plugin-transform-class-properties
.babel-plugin-transform-class-properties
.使用的时候包含三个个步骤
导入
Bundle
模块异步加载
初始化
当然, 你还需要配置你的
.babelrc
和webpack.config.js
, 下面我给我我自己的, 你可以研究一下.webpack.config.js
.babelrc
还有公共块输出插件的配置
通过上述N个步骤后, 组件
Ada tiga langkah untuk digunakan🎜Home
- 🎜Import modul
rrreeeBundle
🎜- 🎜Pemuatan tak segerak🎜
rrreee- 🎜Inisialisasi🎜
rrreee 🎜Sudah tentu, anda juga perlu mengkonfigurasi.babelrc
danwebpack.config.js
anda, saya akan berikan saya sendiri di bawah, anda boleh mempelajarinya.🎜 🎜webpack.config.js🎜 rrreee 🎜.babelrc🎜 rrreee 🎜Terdapat juga konfigurasi pemalam keluaran blok awam🎜 rrreee 🎜Selepas melepasi N langkah di atas, komponenHome
boleh digunakan.🎜