Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载动态JavaScript包的最佳方法_Javascript_Webpack_Lazy Loading_Dynamic Loading_Dynamic Import - Fatal编程技术网

加载动态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

动态加载JavaScript代码时,至少有两种可能的方法

一种方法是使用/将代码作为字符串加载,然后使用/执行代码

另一种方法(实际上由使用)是在文档中插入
元素,并将捆绑包的代码包装到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
/
函数
方法