Webpack的dll功能的使用
这篇文章主要介绍了Webpack的dll功能使用,内容挺不错,现在分享给大家,也给大家做个参考。
最近使用Webpack遇到了一个坑。
我们构建前端项目的时候,往往希望第三方库(vendors)和自己写的代码可以分开打包,因为第三方库往往不需要经常打包更新。对此Webpack的文档建议用CommonsChunkPlugin
来单独打包第三方库。
entry: { vendor: ["jquery", "other-lib"], app: "./entry" } new CommonsChunkPlugin({ name: "vendor", // filename: "vendor.js" // (Give the chunk a different name) minChunks: Infinity, // (with more entries, this ensures that no other module // goes into the vendor chunk) })
通常为了对抗缓存,我们会给售出文件的文件名中加入hash的后缀——但是——我们编辑了app部分的代码后,重新打包,发现vendor的hash也变化了!
这么一来,意味着每次发布版本的时候,vendor代码都要刷新,即使我并没有修改其中的代码。这样并不符合我们分开打包的初衷。
带着问题我浏览了Github上的讨论,发现了一个神器:dll。
Dll是Webpack最近新加的功能,我在网上并没有找到什么中文的介绍,所以在这里我就简单介绍一下。
Dll这个概念应该是借鉴了Windows系统的dll。一个dll包,就是一个纯纯的依赖库,它本身不能运行,是用来给你的app引用的。
打包dll的时候,Webpack会将所有包含的库做一个索引,写在一个manifest文件中,而引用dll的代码(dll user)在打包的时候,只需要读取这个manifest文件,就可以了。
这么一来有几个好处:
Dll打包以后是独立存在的,只要其包含的库没有增减、升级,hash也不会变化,因此线上的dll代码不需要随着版本发布频繁更新。
App部分代码修改后,只需要编译app部分的代码,dll部分,只要包含的库没有增减、升级,就不需要重新打包。这样也大大提高了每次编译的速度。
假设你有多个项目,使用了相同的一些依赖库,它们就可以共用一个dll。
如何使用呢?
首先要先建立一个dll的配置文件,entry
只包含第三方库:
const webpack = require('webpack'); const vendors = [ 'antd', 'isomorphic-fetch', 'react', 'react-dom', 'react-redux', 'react-router', 'redux', 'redux-promise-middleware', 'redux-thunk', 'superagent', ]; module.exports = { output: { path: 'build', filename: '[name].[chunkhash].js', library: '[name]_[chunkhash]', }, entry: { vendor: vendors, }, plugins: [ new webpack.DllPlugin({ path: 'manifest.json', name: '[name]_[chunkhash]', context: __dirname, }), ], };
webpack.DllPlugin
的选项中,path
是manifest文件的输出路径;name
是dll暴露的对象名,要跟output.library
保持一致;context
是解析包路径的上下文,这个要跟接下来配置的dll user一致。
运行Webpack,会输出两个文件一个是打包好的vendor.js,一个就是manifest.json,长这样:
{ "name": "vendor_ac51ba426d4f259b8b18", "content": { "./node_modules/antd/dist/antd.js": 1, "./node_modules/react/react.js": 2, "./node_modules/react/lib/React.js": 3, "./node_modules/react/node_modules/object-assign/index.js": 4, "./node_modules/react/lib/ReactChildren.js": 5, "./node_modules/react/lib/PooledClass.js": 6, "./node_modules/react/lib/reactProdInvariant.js": 7, "./node_modules/fbjs/lib/invariant.js": 8, "./node_modules/react/lib/ReactElement.js": 9, ............
Webpack将每个库都进行了编号索引,之后的dll user可以读取这个文件,直接用id来引用。
Dll user的配置:
const webpack = require('webpack'); module.exports = { output: { path: 'build', filename: '[name].[chunkhash].js', }, entry: { app: './src/index.js', }, plugins: [ new webpack.DllReferencePlugin({ context: __dirname, manifest: require('./manifest.json'), }), ], };
DllReferencePlugin
的选项中,context
需要跟之前保持一致,这个用来指导Webpack匹配manifest中库的路径;manifest
用来引入刚才输出的manifest文件。
运行Webpack之后,结果如下:
对比一下不做分离的情况下打包的结果:
速度快了,文件也小了。
平时开发的时候,修改代码后重新编译的速度会大大减少,节省时间。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
SpringBoot和Vue.js实现前后端分离的文件上传功能
Atas ialah kandungan terperinci Webpack的dll功能的使用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Jika Nvgpucomp64.dll menyebabkan permainan anda kerap ranap, penyelesaian yang disediakan di sini boleh membantu anda. Masalah ini biasanya disebabkan oleh pemacu kad grafik yang lapuk atau rosak, fail permainan yang rosak, dsb. Membetulkan isu ini boleh membantu anda menangani ranap permainan. Fail Nvgpucomp64.dll dikaitkan dengan kad grafik NVIDIA. Apabila fail ini ranap, permainan anda juga akan ranap. Ini biasanya berlaku dalam permainan seperti LordsoftheFallen, LiesofP, RocketLeague dan ApexLegends. Nvgpucomp64.dll ranap permainan pada Windows PC jika N

Ramai pengguna akan digesa bahawa coremessaging.dll hilang apabila menggunakan komputer mereka untuk bermain permainan Saya percaya bahawa ramai pengguna akan segera berfikir bahawa terdapat masalah dengan perisian atau permainan ini komputer tiada fail dll , pengguna boleh memuat turun fail coremessaging.dll. Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna analisis masalah bahawa fail CoreMessaging.dll tiada dalam direktori sistem Windows dan tidak dapat ditemui. Analisis masalah bahawa fail CoreMessaging.dll dalam direktori sistem Windows tiada dan tidak ditemui 1. Muat turun fail CoreMessaging.dll 2.

Vue ialah rangka kerja JavaScript yang sangat baik yang boleh membantu kami membina aplikasi web yang interaktif dan cekap dengan cepat. Vue3 ialah versi terkini Vue, yang memperkenalkan banyak ciri dan fungsi baharu. Webpack kini merupakan salah satu pembungkus modul JavaScript dan alat binaan yang paling popular, yang boleh membantu kami mengurus pelbagai sumber dalam projek kami. Artikel ini akan memperkenalkan cara menggunakan Webpack untuk membungkus dan membina aplikasi Vue3. 1. Pasang Webpack

Perbezaan: 1. Kelajuan permulaan pelayan webpack adalah lebih perlahan daripada Vite; kerana Vite tidak perlu dibungkus apabila ia dimulakan, tidak perlu menganalisis kebergantungan modul dan menyusun, jadi kelajuan permulaan adalah sangat pantas. 2. Kemas kini panas Vite lebih pantas daripada pek web; dari segi HRM Vite, apabila kandungan modul tertentu berubah, biarkan pelayar meminta semula modul tersebut. 3. Vite menggunakan esbuild untuk pra-membina kebergantungan, manakala webpack adalah berdasarkan nod. 4. Ekologi Vite tidak sebaik pek web, dan pemuat serta pemalam tidak cukup kaya.

Bagaimana untuk menyelesaikan masalah kehilangan libcurl.dll dalam sistem win7? Secara amnya, fail dll akan menyebabkan beberapa program tidak dapat digunakan secara normal Menghadapi masalah ini, ramai pengguna tidak tahu bagaimana untuk menyelesaikannya Sebagai tindak balas kepada situasi ini, hari ini editor akan berkongsi penyelesaian terperinci dengan majoriti pengguna . Saya harap win7 akan digunakan hari ini dapat membantu sebilangan besar pengguna, jadi mari kita lihat. Penyelesaian untuk kehilangan libcurl.dll dalam sistem win7 1. Muat turun fail libcurl.dll. 2. Selepas memuat turun, masukkan fail ke dalam folder yang sepadan Laluan untuk sistem pengendalian 32-bit dan 64-bit adalah seperti berikut: Untuk sistem pengendalian Win7 32-bit, salin fail terus ke C:\Windows\SYSTEM32.

Dengan pembangunan berterusan teknologi pembangunan web, pemisahan bahagian hadapan dan belakang serta pembangunan modular telah menjadi trend yang meluas. PHP ialah bahasa back-end yang biasa digunakan Apabila melakukan pembangunan modular, kita perlu menggunakan beberapa alat untuk mengurus dan membungkus modul adalah alat pembungkusan modular yang sangat mudah digunakan. Artikel ini akan memperkenalkan cara menggunakan PHP dan webpack untuk pembangunan modular. 1. Apakah pembangunan modular? Pembangunan modular merujuk kepada penguraian program kepada modul bebas yang berbeza Setiap modul mempunyai fungsinya sendiri.

vcruntime140_1.dll ialah komponen perpustakaan masa jalan Visual C Ramai pengguna telah menghadapi ralat yang vcruntime140_1.dll tidak boleh terus melaksanakan kod apabila menggunakan Microsoft Visual Studio untuk pembangunan. Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna cara menyelesaikan masalah yang vcruntime140_1.dll tidak boleh terus melaksanakan kod. Sebab mengapa vcruntime140_1.dll hilang Menyahpasang pustaka masa jalan VisualC: Salah operasi atau menaik taraf hasil VisualC dalam pustaka masa jalan hilang. Jangkitan virus: Perisian hasad memadam atau merosakkan vc

Ramai pengguna suka menggunakan komputer untuk bermain permainan Baru-baru ini, beberapa pengguna sistem Win7 telah melaporkan bahawa apabila memulakan permainan, mereka menemui tetingkap pop timbul yang menyebabkan fail Skidrow.dll hilang dalam komputer dan tidak boleh dimulakan permainan tidak boleh dimuatkan seperti biasa. Sebagai tindak balas kepada masalah ini, artikel ini membawa penyelesaian terperinci untuk dikongsi dengan semua orang, mari kita lihat. Apakah yang perlu saya lakukan jika ia menggesa bahawa Skidrow.dll hilang dari komputer saya semasa memulakan permainan dalam Win7? 1. Muat turun fail Skidrow.dll. 2. Nyahzip folder dan salin fail Skidrow.dll ke direktori sistem. Sistem 32-bit: C:\WINNT\System Sistem 324-bit: C:\Windows\SysWOW
