javascript – 有条件地加载JS模块(SystemJS)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 有条件地加载JS模块(SystemJS),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1241字,纯文字阅读大概需要2分钟。
内容图文
我目前正在使用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
<!DOCTYPE html>
<html>
<head>
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
</head>
<body>
<div id='one'>One</div>
<div>Two</div>
<script>
System.import('main');
</script>
</body>
</html>
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 – 有条件地加载JS模块(SystemJS)全部内容,希望文章能够帮你解决javascript – 有条件地加载JS模块(SystemJS)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。