加载动态JavaScript包的最佳方法
动态加载JavaScript代码时,至少有两种可能的方法 一种方法是使用/将代码作为字符串加载,然后使用/执行代码 另一种方法(实际上由使用)是在文档中插入加载动态JavaScript包的最佳方法,javascript,webpack,lazy-loading,dynamic-loading,dynamic-import,Javascript,Webpack,Lazy Loading,Dynamic Loading,Dynamic Import,动态加载JavaScript代码时,至少有两种可能的方法 一种方法是使用/将代码作为字符串加载,然后使用/执行代码 另一种方法(实际上由使用)是在文档中插入元素,并将捆绑包的代码包装到JSONP回调函数中。这样,浏览器将自动加载和编译代码,并调用包装器函数通知加载的代码已准备好执行 还有一种方法是由谷歌Chromelabs实施的。他们正在创建脚本元素,并使用blob src传递动态生成的代码以加载请求的文件: const moduleBlob = new Blob([ `import * a
元素,并将捆绑包的代码包装到JSONP回调函数中。这样,浏览器将自动加载和编译代码,并调用包装器函数通知加载的代码已准备好执行
还有一种方法是由谷歌Chromelabs实施的。他们正在创建脚本元素,并使用blob src传递动态生成的代码以加载请求的文件:
const moduleBlob = new Blob([
`import * as m from '${absURL}';`,
`${importFunctionName}.moduleMap['${absURL}']=m;`,
], {type: 'text/javascript'});
但是,它需要一些ESM功能的基本支持(在IE 11等传统浏览器中不可用),并且需要在存在时进行正确配置
eval
/函数
方法看起来更方便,因为它更简单,允许以任何通用格式加载模块,如CommonJS/AMD,并且不需要提供专有的包装函数
这些方法之间的主要区别是什么?哪种方法更好?为什么Webpack和Google决定不使用eval
/函数
方法