html根据条件加载js,javascript – 有条件地加载JS模块(SystemJS)

我目前正在使用jspm和SystemJS来加载ES6模块.但是,我希望能够

>扫描某些选择器的页面(例如,id,data-plugin)

>将这些选择器映射到其模块依赖项

>仅加载那些模块

我的想法是通过可以访问文档的单一入口点System.import(‘src / main’)来处理这些导入.然后,我可以找到相关的选择器,将这些选择器映射到模块,然后导入这些模块.

src / main看起来像这样:

['d3', 'jquery'].forEach(function(dependency) {

import dependency;

});

这不是一个可行的解决方案,因为它是无效的语法.在这种意义上,有没有更好的方法来实现动态模块加载?

解决方法:

正如您已经看到的那样,正常导入语法不能用于有条件地加载模块.为了解决这个问题,我们可以使用System提供的编程API.您已经熟悉此API,因为您将它用于System.import(‘src / main’);.

要有条件地加载模块,而不是使用import关键字,您只需继续使用System.import方法.

一个例子:

的index.html

One
Two

System.import('main');

main.js

const map = {

'#one': 'one',

'#two': 'two'

};

for (let selector in map) {

if (document.querySelector(selector)) {

System.import(map[selector]);

}

}

one.js

window.HAS_ONE = true;

two.js

window.HAS_TWO = true;

在此示例中,将定义window.HAS_ONE,但window.HAS_TWO将保持未定义.

标签:javascript,systemjs,jspm

来源: https://codeday.me/bug/20190628/1312462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值