html - Angular 应用程序 - 在哪里放置脚本标签

标签 html angular

我正在尝试将付款集成到我的 Angular 应用程序中,两个提供商(Paypal 和 Adyen)都为您提供了一个托管在其网页上的 js 文件,他们建议将其放入 HTML 中。像这样的事情:

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

没有可以像任何其他 js 一样导入的 npm 包。

因此,据我了解,不允许您输入 <script>在 Angular 组件本身中,但我不喜欢把它放在 index.html 中,因为它将“在应用程序负载上加载,从而增加应用程序的加载时间,而仅在与支付相关的少数组件中需要它,并且可以稍后加载。谢谢。

有什么想法吗?

最佳答案

如果您使用 Angular CLI,则您有一个 .angular-cli.json 文件,您可以在其中插入自定义脚本。您可以将自定义脚本插入到“scripts”属性中,该属性采用文件的相对路径数组。例如你可以这样做:

"scripts": [
    "js/someScript.js",
    "js/anotherScript.js"
]

您也不必担心这些文件的缩小。 Webpack 会为你做到这一点。

如果您希望动态加载一些外部 js 文件而不加载 bundle 中的所有内容,您可以在 component.ts 中这样做。 AS answer 中指定.

loadScripts() {
    const dynamicScripts = [
   'https://platform.twitter.com/widgets.js',
   '../../../assets/js/dummyjs.min.js'
  ];
  for (let i = 0; i < dynamicScripts.length; i++) {
    const node = document.createElement('script');
    node.src = dynamicScripts[i];
    node.type = 'text/javascript';
    node.async = false;
    node.charset = 'utf-8';
    document.getElementsByTagName('head')[0].appendChild(node);
  }
}

并在构造函数中。

constructor() {
  this.loadScripts();
}

但就 SPA 方式而言,一开始加载所有内容都没有问题,因为在初始加载之后,它们将不再加载。

关于html - Angular 应用程序 - 在哪里放置脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51672360/

相关文章:

html - 使用一列 "popping out"设置表格样式,同时保留语义正确的标记

javascript - 需要添加功能以确保在提交多页表单之前至少选中 1 个复选框?

javascript - 使用javascript淡出幻灯片

html - 按钮 :active is not applied when form is submitted

javascript - 如何根据更改了所填写图像的 href 的字段来更改图像是否显示在网站上

Angular 7 属性 'share' 在可观察类型中不存在

ios - iOS 设备未使用的 PWA 图标

function - 具有angular2中函数的templateUrl

angular - 我收到类似“无法读取未定义的属性 'get'”的错误。如何解决这个问题?

javascript - 如何循环遍历我从 snapshot.val() 收到的数据并将其推送到基于键的数组