Ich habe gerade angefangen, mit der modularen Front-End-Entwicklung in Kontakt zu treten, um die Konfigurationsdatei und den Betriebsprozess zu erlernen, aber das Laden auf Abruf schlägt immer fehl:
In der Eintragsdatei werden 3 Methoden zum Laden verwendet:
import test from './index/test.js';
// const test=(resolve) => require(['./index/test.js'], resolve)
// const test=resolve => { require.ensure(['./index/test.js'], () => { resolve(require('./index/test.js')) }) }
test.exe('显示测试文字');//执行
Der Inhalt von test.js ist sehr einfach, drucken Sie ihn einfach auf der Konsole aus:
const test={
exe:function (res) {
console.log('test方法的输出:'+res);
}
};
export default test
Drei Methoden wurden getestet. Nur die erste Direktimportmethode wird normal ausgeführt. Die anderen beiden On-Demand-Lademethoden melden einen Fehler und weisen darauf hin, dass die Methode nicht gefunden werden kann.
Wenn Sie auskommentieren test.exe('显示测试文字');
und nur laden, aber nicht ausführen, wird kein Fehler gemeldet.
Nach meinem Verständnis ist das Laden der Codes in Ordnung, aber wenn sie geladen werden müssen, werden sie nicht erfolgreich geladen. Warum ist das so? Habe ich irgendwo etwas falsch geschrieben? Oder muss ich eine zusätzliche Konfiguration an webpack.config.jx vornehmen?
给你个实例参考下
html
需要异步加载的js文件 plugin.js
webpack的入口编译文件 entry.js
效果就是点击时,mod1.js才加载插入head,一开始是不加载的
最后关于webpack.config.js的配置。
最近也碰到了类似的问题,大致说一下。
webpack升级到2的时候对你第二种和第三种的信用方式,都没有直接打包到main.js里面。
也就是说对于首屏加载就需要的模块,不能再使用异步加载的模式,按需加载的可以。
你可以去打包出来的文件里面看一下,你的除了第一种方式,test方法都没有被打包到你的js里面。
第二个和第三种写法想做什么?是想模拟 AMD 或者 CMD 规范的写法么?
最常见 module 规范 ES6 module 和 node.js 的 commonJS 规范,因为在具体加载细节上有出入,比如加载时间和对文件的引用方式的不同。但是使用webpack的目的就是将不同规范统一化,webpack 会提前将所有 module
打包在一起,分别给一个 id ,通过 id 进行引用,使得 ES6 module 和 CommonJS 规范在 webpack 编译后没有任何区别,同样对于 AMD 和 CMD 规范。
如果楼主想用 webpack 实现 CMD 的延迟加载这个思路就是错的,因为无论哪种加载方式,webpack 所做的,就是将你的依赖(或者说即将依赖)的所有模块打包进一个文件,以至于在运行时都能通过 id 找到对应的包,弱化规范间的差异
不知道你的具体环境, 我自己的环境现状已经升级到Webpack2 + React Router v4. 可以参考文档: https://reacttraining.cn/web/...
首先需要编码, 创建一个 Bundle 组件, 用于按需加载需要的模块, 组件文件.
上述代码是从文档里面抄的, 修改了状态的初始化方式, 如果不修改状态的初始化方式, 就需要用到
babel-plugin-transform-class-properties
.使用的时候包含三个个步骤
导入
Bundle
模块异步加载
初始化
当然, 你还需要配置你的
.babelrc
和webpack.config.js
, 下面我给我我自己的, 你可以研究一下.webpack.config.js
.babelrc
还有公共块输出插件的配置
通过上述N个步骤后, 组件
Home
就可以使用了.