البرنامج النصي الأمثل مع Webpack SplitChunksPlugin

في هذه المقالة ، أود أن أشارك تجربتي في تقسيم الحزم لموقع متعدد الصفحات باستخدام Webpack 4. أولاً ، قم بإنشاء نقطة إدخال لكل صفحة. النظر في 4 صفحات كمثال:


const path = require("path"); const PATHS = { src: path.resolve(process.cwd(), "src"), dist: path.resolve(process.cwd(), "dist") }; module.exports = { entry: { common: `${PATHS.src}/js/common`, index: `${PATHS.src}/js/index`, contacts: `${PATHS.src}/js/contacts`, about: `${PATHS.src}/js/about`, } } 

أثناء التجميع ، سيتم إنشاء حزمة لكل صفحة. في نقطة الدخول common ، قمت بوضع نصوص مشتركة لجميع الصفحات. لتوصيل حزمنا بالصفحات ، سوف نستخدم Webpack plugin HtmlWebpackPlugin .


النظر في مثال:


  module.exports = { ... plugins: [ new HtmlWebpackPlugin({ filename: `${PATHS.dist}/index.html`, template: `${PATHS.dist}/index.html`, chunks: ["index", "common"] }) ... ] ... }; 

في مجموعات chunks الحزم اللازمة لهذه الصفحة (الترتيب: من اليمين إلى اليسار). وبالتالي ، سيتم توصيل البرامج النصية الأولى بالصفحة ، ثم البرامج النصية اللازمة بشكل منفصل لهذه الصفحة.


إذا كان لدينا وحدات مشتركة / مكتبات تابعة لجهات خارجية متصلة على صفحات مختلفة ، فسننشئ حزم مشتركة لهذه الصفحات.


سوف نستخدم Webpack المساعد SplitChunksPlugin . في الواقع ، هنا هو التكوين:


 module.exports = { optimization: { splitChunks: { chunks: "all", minSize: 1, minChunks: 2 } } } 

بعد التجميع ، سنتلقى حزمًا منفصلة لكل صفحة والحزم التي تشارك صفحاتنا.


 index.js contacts.js common.js about.js vendors~about-us~index.js vendors~about-us~contacts.js 

ستحتوي حزمة البائعين ~ about-us ~ index.js على نصوص شائعة about-us وعن index ، والتي يتم تخزينها مؤقتًا بواسطة المتصفح ، وعندما تقوم بالتبديل من صفحة index إلى about سيتم تنزيلها بالفعل بواسطة المتصفح ، وستحتاج فقط إلى تنزيل الحزمة about.js .


يمكن تغيير أسماء المقاطع في تهيئة هذا البرنامج المساعد.


لتوصيل هذه الحزم بشكل صحيح بكل صفحة من صفحاتنا ، سنستخدم HtmlWebpackPlugin. التكوين هو نفسه كما في بداية المقال. الآن فقط يجب عليك وضع إصدار ألفا من هذا البرنامج المساعد ، لأنه في وقت كتابة هذا التقرير ، لم يربط هذا البرنامج المساعد الأجزاء المنفصلة ، ولكن فقط نقاط الدخول المتصلة.


 npm i --save-dev html-webpack-plugin@next 

بعد التجميع ، نحصل على الكود التالي في index.html:


 <script src="js/common.js"></script> <script src="js/vendors~about-us~index.js"></script> <script src="js/index.js"></script> 

Source: https://habr.com/ru/post/ar441076/


All Articles