Rumah hujung hadapan web tutorial js Webpack的dll功能的使用

Webpack的dll功能的使用

Jun 30, 2018 am 09:54 AM
dll webpack

这篇文章主要介绍了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)
})
Salin selepas log masuk

通常为了对抗缓存,我们会给售出文件的文件名中加入hash的后缀——但是——我们编辑了app部分的代码后,重新打包,发现vendor的hash也变化了!

这么一来,意味着每次发布版本的时候,vendor代码都要刷新,即使我并没有修改其中的代码。这样并不符合我们分开打包的初衷。

带着问题我浏览了Github上的讨论,发现了一个神器:dll。

Dll是Webpack最近新加的功能,我在网上并没有找到什么中文的介绍,所以在这里我就简单介绍一下。

Dll这个概念应该是借鉴了Windows系统的dll。一个dll包,就是一个纯纯的依赖库,它本身不能运行,是用来给你的app引用的。

打包dll的时候,Webpack会将所有包含的库做一个索引,写在一个manifest文件中,而引用dll的代码(dll user)在打包的时候,只需要读取这个manifest文件,就可以了。

这么一来有几个好处:

  1. Dll打包以后是独立存在的,只要其包含的库没有增减、升级,hash也不会变化,因此线上的dll代码不需要随着版本发布频繁更新。

  2. App部分代码修改后,只需要编译app部分的代码,dll部分,只要包含的库没有增减、升级,就不需要重新打包。这样也大大提高了每次编译的速度。

  3. 假设你有多个项目,使用了相同的一些依赖库,它们就可以共用一个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,
  }),
 ],
};
Salin selepas log masuk

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,
  
  ............
Salin selepas log masuk

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'),
  }),
 ],
};
Salin selepas log masuk

DllReferencePlugin的选项中,context需要跟之前保持一致,这个用来指导Webpack匹配manifest中库的路径;manifest用来引入刚才输出的manifest文件。

运行Webpack之后,结果如下:

对比一下不做分离的情况下打包的结果:

速度快了,文件也小了。

平时开发的时候,修改代码后重新编译的速度会大大减少,节省时间。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

SpringBoot和Vue.js实现前后端分离的文件上传功能

如何安装angular6.0框架的教程

Atas ialah kandungan terperinci Webpack的dll功能的使用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nvgpucomp64.dll menyebabkan permainan Windows PC ranap; Nvgpucomp64.dll menyebabkan permainan Windows PC ranap; Mar 26, 2024 am 08:20 AM

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

Analisis masalah bahawa fail CoreMessaging.dll tiada dalam direktori sistem Windows Analisis masalah bahawa fail CoreMessaging.dll tiada dalam direktori sistem Windows Feb 11, 2024 pm 11:42 PM

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.

Tutorial Bermula VUE3: Membungkus dan Membina dengan Webpack Tutorial Bermula VUE3: Membungkus dan Membina dengan Webpack Jun 15, 2023 pm 06:17 PM

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

Apakah perbezaan antara vite dan webpack Apakah perbezaan antara vite dan webpack Jan 11, 2023 pm 02:55 PM

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? Win7 tidak dapat mencari penyelesaian fail libcurl.dll Bagaimana untuk menyelesaikan masalah kehilangan libcurl.dll dalam sistem win7? Win7 tidak dapat mencari penyelesaian fail libcurl.dll Feb 12, 2024 am 08:15 AM

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.

Cara menggunakan PHP dan webpack untuk pembangunan modular Cara menggunakan PHP dan webpack untuk pembangunan modular May 11, 2023 pm 03:52 PM

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.

Apakah yang perlu saya lakukan jika vcruntime140_1.dll tidak boleh terus melaksanakan kod? Apakah yang perlu saya lakukan jika vcruntime140_1.dll tidak boleh terus melaksanakan kod? Feb 11, 2024 pm 05:00 PM

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

Apakah yang perlu saya lakukan jika ia menggesa bahawa Skidrow.dll hilang dari komputer saya semasa memulakan permainan dalam Win7? Apakah yang perlu saya lakukan jika ia menggesa bahawa Skidrow.dll hilang dari komputer saya semasa memulakan permainan dalam Win7? Feb 15, 2024 pm 02:12 PM

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

See all articles