Rumah >hujung hadapan web >tutorial js >[Kompilasi dan perkongsian] Beberapa soalan temu bual webpack (dengan analisis jawapan)
1.
pak web ialah pengikat modul statik Apabila pek web memproses aplikasi, ia secara rekursif membina graf pergantungan yang mengandungi setiap modul yang diperlukan oleh aplikasi, dan kemudian membungkus modul ini ke dalam satu atau Berbilang berkas.
Webpack adalah seperti barisan pengeluaran Ia mesti melalui satu siri proses pemprosesan (pemuat) sebelum fail sumber boleh ditukar kepada hasil output. Setiap proses pemprosesan pada barisan pengeluaran ini mempunyai satu tanggungjawab, dan terdapat kebergantungan antara pelbagai proses Hanya selepas pemprosesan semasa selesai, ia boleh diserahkan kepada proses seterusnya untuk pemprosesan.
Pemalam adalah seperti fungsi yang dimasukkan ke dalam barisan pengeluaran, yang memproses sumber pada barisan pengeluaran pada masa tertentu. Webpack akan menyiarkan acara semasa proses berjalan Pemalam hanya perlu mendengar acara yang penting dan boleh menyertai barisan pengeluaran untuk menukar operasi barisan pengeluaran.
2. Bolehkah anda bercakap tentang proses pembungkusan/proses pembinaan
3. Bolehkah anda bercakap tentang pengoptimuman operasi bahagian hadapan
Proses menjalankan pek web ialah proses bersiri dan aliran kerjanya adalah untuk menyambungkan pelbagai pemalam secara bersiri.
Pelaksanaan baris perintahnpx webpack
Arahan pembungkusan bermula
1.初始化编译参数
: Baca dan cantumkan parameter daripada fail konfigurasi dan arahan shell
2.开始编译
:Mengikut langkah sebelumnya Mulakan Objek pengkompil dengan parameter, muatkan semua Pemalam yang dikonfigurasikan, dan laksanakan kaedah jalankan objek untuk memulakan penyusunan.
3. 确定入口
: Cari semua fail kemasukan mengikut entri dalam konfigurasi
4. 编译模块
: Dicetuskan daripada fail masukan, panggil semua Pemuat yang dikonfigurasikan untuk menterjemah modul, dan kemudian ketahui modul modul dependencies, dan kemudian ulangi langkah ini sehingga semua fail yang bergantung kepada kemasukan diterjemahkan.
5. 完成模块编译
: Selepas menggunakan Loader untuk menterjemah semua modul dalam langkah 4, kandungan terjemahan akhir setiap modul dan graf kebergantungan di antara modul tersebut diperolehi.
6. 输出资源
: Menurut graf pergantungan, kumpulkan Chunks yang mengandungi berbilang modul, kemudian tukar setiap Chunk menjadi fail berasingan dan tambahkannya pada senarai output, dan tentukan laluan output dan nama fail mengikut konfigurasi. , keluaran.
Dalam proses di atas, Webpack
akan menyiarkan acara tertentu pada masa tertentu dan pemalam akan melaksanakan logik tertentu selepas mendengar acara yang menarik.
Ringkasan
Objek kompilasi pengkompil mengawal kitaran hayat webpack dan tidak melaksanakan tugas tertentu, tetapi hanya melakukan beberapa kerja penjadualan. Sebagai contoh, lakukan penciptaan modul, pengumpulan kebergantungan, chunking, pembungkusan, dsb.
Selepas memanggil run, buat tika Compiltation baharu akan dibuat untuk setiap binaan, termasuk maklumat asas binaan iniWebpack
akan berada dalam Acara khusus disiarkan pada masa tertentu dan pemalam akan melaksanakan logik tertentu selepas mendengar acara yang menarik.
Daripada entri yang dinyatakan dalam fail konfigurasi (webpack.config.js), mula menghuraikan fail untuk membina pepohon sintaks AST
Entri yang berbeza menjana ketulan yang berbeza, dan import dinamik juga akan menjana ketulannya sendiri
Pemuat ialah pek web menyediakan mekanisme untuk mengendalikan berbilang format fail Oleh kerana pek web hanya mengetahui JS dan JSON, Pemuat adalah setara dengan penterjemah, yang menukar jenis sumber lain Lakukan prapemprosesan. .
digunakan untuk menukar "kod sumber" modul.
Pemuat menyokong panggilan berantai, dan susunan panggilan adalah dari kanan ke kiri. **Setiap pemuat dalam rantaian akan memproses sumber yang telah diproses sebelum ini, dan akhirnya menjadi kod js.
Menyediakan lebih banyak keupayaan kepada ekosistem JavaScript melalui fungsi prapemprosesan pemuat.
Semasa pembangunan, kami sering menggunakan kurang prapemproses untuk menulis gaya css kecekapan
Plugin adalah lebih berkuasa untuk menyelesaikan perkara yang tidak dapat dicapai oleh pemuat, seperti pengoptimuman pembungkusan dan pemampatan kod.
Selepas Pemalam dimuatkan, fungsi yang ditakrifkan oleh pemalam akan dicetuskan pada titik masa tertentu semasa binaan webpack untuk membantu webpack melakukan sesuatu. Laksanakan sambungan berfungsi pada pek web.
Secara amnya
webpack adalah seperti barisan pengeluaran, melalui siri proses Hanya selepas proses (pemuat) fail sumber boleh ditukar kepada hasil keluaran. Setiap proses pemprosesan pada barisan pengeluaran ini mempunyai satu tanggungjawab, dan terdapat kebergantungan antara pelbagai proses Hanya selepas pemprosesan semasa selesai, ia boleh diserahkan kepada proses seterusnya untuk pemprosesan.
Pemalam adalah seperti fungsi yang dimasukkan ke dalam barisan pengeluaran, yang memproses sumber pada barisan pengeluaran pada masa tertentu. Webpack akan menyiarkan acara semasa proses berjalan Pemalam hanya perlu mendengar acara yang penting dan boleh menyertai barisan pengeluaran untuk menukar operasi barisan pengeluaran.
Atau gunakan ringkasan sebelumnya untuk menerangkan apakah Pemuat dan Pemalam masing-masing
Masa jalan
1. Pemuat berjalan dalam kompilasi fasa
2. Pemalam berfungsi sepanjang kitaran
Penggunaan
Pemuat: 1. Muat turun 2. Gunakan
Pemalam: 1. Muat turun 2 .Petikan 3. Apakah kaedah pengoptimuman yang telah dilakukan menggunakan
Bagaimana cara menggunakan pek web untuk mengoptimumkan prestasi bahagian hadapan? Persoalannya ialah mengenai pengoptimuman persekitaran pengeluaran
Bagaimana untuk meningkatkan kelajuan binaan pek web? Persoalannya ialah mengenai pengoptimuman kelajuan binaan
pokok- goncangan ialah Sejenis pembungkusan teknologi Penghapusan Kod Mati berdasarkan spesifikasi Modul ES Semasa proses pembungkusan, modul yang belum dirujuk dalam projek dikesan dan ditanda, dan modul yang belum dirujuk dipadamkan, yang menambah baik. membina kelajuan dan mengurangkan masa berjalan program.
1. Lalai ialah mode = production
dan persekitaran pengeluaran mendayakan fungsi tree-shaking
secara lalai.
2. Kod modul perlu ditulis menggunakan spesifikasi ES6 kebergantungan modul ES6 adalah deterministik dan tiada kaitan dengan status masa jalan
3. Cuba jangan menulis kod dengan kesan sampingan. Sebagai contoh, anda telah menulis fungsi pelaksanaan segera, menggunakan pembolehubah luaran dalam fungsi tersebut, dsb.
Pemuatan atas permintaan
1 Anda boleh membungkus kod dalam node__mudules ke dalam output chunk (contohnya, menggunakan jqury?)
2. Akan menganalisis bahagian berbilang entri secara automatik untuk melihat. jika terdapat mana-mana yang biasa Fail, jika ada, akan dibungkus ke dalam bahagian yang berasingan dan tidak akan dibungkus berulang kali
Dalam keadaan biasa node_module akan Pakej ke dalam fail
Gunakan teknologi dll untuk membungkus rangka kerja dan perpustakaan yang tidak kerap dikemas kini secara berasingan, dan menjana sebahagian
Semua modul yang dirujuk oleh fungsi import() dalam kod akan dibungkus ke dalam pakej yang berasingan dan diletakkan dalam direktori tempat bongkahan disimpan. Apabila penyemak imbas menjalankan baris kod ini, ia akan meminta sumber ini secara automatik dan melaksanakan pemuatan tak segerak.
1. Konfigurasikan pemalam sebagai pemampat untuk pemampatan dalam item konfigurasi pengoptimuman.
2. Gunakan pemalam ini untuk pemampatan dalam pemalam
mampatan js: menggunakan terser-webpack-plugin
mampatan css: menggunakan optimize-css-assets -pemalam webpack-plugin
Mengalih keluar konsol, ulasan, ruang, pemisah baris, kod css yang tidak digunakan, dsb.
Idea 1: Kurangkan fail atau kod yang perlu dibina
Kod sumber projek juga perlu dipecahkan, dan fail yang dibungkus boleh dibahagikan mengikut penghalaan--> Bagaimana untuk melaksanakan pemuatan asynchronous komponen dalam webpack?
Idea 2: Bina dalam pelbagai proses
Pemuat benang pakej berbilang proses dan letakkannya sebelum pemuat yang memakan masa
,[Cadangan berkaitan:
tutorial video javascript
Video pengaturcaraan】
Atas ialah kandungan terperinci [Kompilasi dan perkongsian] Beberapa soalan temu bual webpack (dengan analisis jawapan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!