问题:
如何自动调用系统或AMD模块,而无需手动添加脚本来调用已注册/定义的模块?
描述:
当我使用 System
生成 es5 文件时我的 tsconfig
中定义的模块,我得到了预期的输出 System.register(/* ... */)
当添加到我的页面时,它当然不会运行。
有没有办法避免向我的 HTML 文件添加脚本标记来手动调用我的模块?
<!-- module script added above -->
<script>
System.get('MODULE_NAME_HERE');
</script>
额外:
如果可以的话我会放弃System
/Amd
模块完全。然而,当我决定创建一个outFile
时,它是必需的。使用import/export
时在Typescript
。如果有人能解决这个问题,那将让我省去很多麻烦。谢谢。
最佳答案
既然您提到了 AMD 模块...如果您生产一系列 AMD 模块,您可以使用 RequireJS 并利用其对 data-main
属性的支持来启动您的应用程序:
<script src="require.js" data-main="MODULE_NAME_HERE"></script>
还有一个 deps
选项可以在配置 RequireJS 时使用:
require.config({
...
deps: ["MODULE_NAME_HERE"],
});
data-main
采用单个模块名称,而 deps
采用模块列表。这些是通常用于避免生成仅用于启动模块加载的附加 script
元素的方法。
我不知道 SystemJS 有任何等效项。我在 GitHub 上的 SystemJS 问题中看到了一些关于 data-main
的讨论,但似乎硬币翻转的结果是暂时没有实现它。
如果在构建应用程序时知道需要加载的模块列表,则可以让 Webpack 将应用程序捆绑到单个脚本中。然后,您的应用程序将在您加载该脚本后立即启动。
关于javascript - 如何自动调用System或AMD模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43272684/