webpack - 使用 Webpack 动态循环魔术注释
问题描述
所以我遇到的问题是在我的入口文件中编写了 30 多次重复的代码,这使得我的入口文件非常大。
例子:
const component = document.querySelector('[data-component]');
if (component !== null) {
import(/* webpackChunkName: "component" */ 'path/to/component').then(componentModule =>{
componentModule.default.init();
})
.catch(err => console.error(`Error in: Samples - ${err}`));
}
很好,我的 webpack 包创建了component.bundle.js
,但是当我尝试实现这个循环时,我无法让它工作。这是我的方法:
const components = {
component1: {
el: document.querySelector('[data-component]'),
fileName: 'component',
path: '/path/to/'
}
};
function importModule(el, fileName, path) {
if (el !== null) {
import(/* webpackChunkName: "[request]" */ '${path}${fileName}').then(componentModule =>{
componentModule.default.init();
})
.catch(err => console.error(`Error in: ${fileName} - ${err}`));
}
}
Object.keys(components).forEach(key => {
const { el, fileName, path } = component[key];
importModule(el, fileName, path);
});
我得到的第一个错误是文件扩展名。为了保持一致性,我有一个与我的组件同名的 cshtml 文件,它会加载它而不是我的 js 文件。当我不使用模板字符串时,这很好用。
第二个 webpack 不知道要生成什么 bundle 文件,因为它处于循环中。
这可能吗?如果可能的话,我的捆绑包最终将达到 3kb 左右,从而提高性能。
解决方案
推荐阅读
- mysql - MySQL Dense_Rank() 和 Max() 函数不在同一语句中工作
- javascript - 如何从本地驱动器上的 .js 文件中获取 JavaScript 代码并在 IE11 中运行它?
- reactjs - 在 IE 兼容性视图中反应不呈现
- aws-lambda - AWS 事件驱动批处理,带异步输入,必须配对
- spring-boot - Maven 模块与自定义 spring-boot 启动器
- matlab - 有没有更快的方法来解决我的牛顿算法?
- php - Laravel 剥离从数据库中提取的数据?
- java - Odroid N2 "getGpioList()" 返回空数组,无法访问 gpio 端口
- python - 熊猫数据框:将两列相乘
- python - 如何将 Sphinx Makefile 集成到现有项目 Makefile 中?