import('xxx')
,但是这样 xxx 被限定住了,所谓动态,其实也是有指定范围的动态 1
randyo 2020-10-11 11:36:25 +08:00 via Android
自己写一个函数用来直接插入 script 标签吧
|
3
tyx1703 2020-10-11 12:06:53 +08:00 via iPad
|
5
mscststs 2020-10-11 13:14:59 +08:00
webpack 的 external 不知道为啥不符合你的要求。
external 是支持从 window 上获取的,如果你需要导入一个未知的依赖,却又不依赖这个模块的代码,那 1L 、3L 的做法就够了。 如果你期望获取一个值却又不能保证取值的时机,那就自己设计一套取值方法,约定好把值挂在 window 上或者某个地方。如果先加载了 js 但是依赖的值还没载入,就 js 提供一个回调允许后期填入这个值。 之前在做一个编辑器,允许异步加载插件就是这样做的。 插件自己去挂载到 window 并且检查有没有 callback,有就自动调用。 可以参考 Vue 的组件注册的流程,Vue.use() |
6
wszgrcy OP @mscststs 不是说 1l 3l 没用,1l 的我的意思是不优雅,因为 webpack 内部做的引入,很多东西都处理好了,而自己写的话还要搞一套.3l 是的 externals 在打包时就替换了,也是一个常量,即使是我指定多个 externals,也是有限个.不能达到无限个
|
7
mscststs 2020-10-11 13:24:39 +08:00
|
8
noe132 2020-10-11 13:53:58 +08:00 via Android
如果你的 import 不能被静态分析,webpack 会尝试对所有文件都单独生成一个 chunk,会导致打包速度异常缓慢,并且最终输出体积异常大。
就算你要动态 import,正确的做法是先在 if 里判断变量,然后再 import 相应的模块。 |
10
MiracleKagari 2020-10-11 22:24:14 +08:00 via Android
import ( prefix+var )
|