如何自动调用系统或AMD模块而无需手动添加脚本来调用已注册/已定义的模块?
当我使用System
中定义的tsconfig
模块生成我的es5文件时,我得到System.register(/* ... */)
的预期输出,这当然不会得到添加到我的页面时运行。
有没有办法避免在我的HTML文件中添加脚本标记来手动调用我的模块?
<!-- module script added above -->
<script>
System.get('MODULE_NAME_HERE');
</script>
如果可以,我可以完全放弃System
/ Amd
模块。但是,我需要在outFile
中使用import/export
时决定创建一个Typescript
的时刻。如果有人能解决这个问题,那将会让我头疼不已。感谢。
答案 0 :(得分:1)
由于您提到AMD模块...如果您生成一系列AMD模块,您可以使用RequireJS并利用其对data-main
属性的支持来启动您的应用程序:
<script src="require.js" data-main="MODULE_NAME_HERE"></script>
在配置RequireJS时还可以使用deps
选项:
require.config({
...
deps: ["MODULE_NAME_HERE"],
});
data-main
采用单个模块名称,而deps
采用模块列表。这些是通常用于避免生成额外script
元素以启动模块加载的方法。
我不知道SystemJS的任何等价物。我在GitHub上的SystemJS问题中看到了一些关于data-main
的来回,但看起来硬币翻转现在没有实现它。
如果在构建应用程序时已知需要加载的模块列表,则可以将Webpack将应用程序捆绑到一个脚本中。然后,只要加载该脚本,您的应用程序就会启动。