javascript - 如何自动调用System或AMD模块?

标签 javascript typescript amd systemjs

问题:

如何自动调用系统或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/

相关文章:

javascript - 如何在不转换为 Angular 中的字符串的情况下在多部分/表单数据请求中发送对象

typescript - 如何在运行时获取父类

node.js - 使用导入时,TypeScript 将无法解析模块

javascript - 如何强制广告在ajax加载的页面上显示? (站长)

javascript - Bootstrap 模式 : only when using the fade class 中的滚动问题

javascript - 帧中的动画持续时间是什么意思?

javascript - 有没有使用延迟的 javascript AMD 框架?

javascript - 带有图像 slider 的 Div 仅在 Safari 中不继承高度

typescript - 使用 Mocha、Chai 和 TypeScript 设置时,WebStorm 找不到 ts-node/module 和描述定义

javascript - 使用 requireJS 的模块定义的区别