Angular 4 与 Webpack 2,动态加载脚本

2024-05-20

我刚刚在一个项目中尝试使用 Angular 4 和 Webpack 2。

我试图在 ngOnInit 期间加载一些脚本,但遇到了一些问题。

问题1。)

我的 ngOnInit 中有以下代码:

System.import(`../../node_modules/jquery/dist/jquery.js`);
System.import(`../../node_modules/jquery-validation/dist/jquery.validate.js`);
System.import(`../../node_modules/jquery-validation/dist/additional-methods.js`);
System.import(`assets/js/regular-expressions.js`);

当我这样做时,所有资源似乎都已加载,但出现以下错误:

未捕获(承诺中):ReferenceError:$未定义

$ 应该在 jQuery 文件中定义。为什么是正则表达式.js文件不知道 jQuery 已加载?

问题2。)

最终,我需要动态加载脚本(因为并非每个页面都需要它们)。

我有以下代码:

let script = 'assets/js/' + scripts[i].replace(/^\/|\/$/g, '');
/* The following two lines output the same exact text to the console */
console.log('assets/js/regular-expressions.js');
console.log('' + script + '');

/* The following hard-coded line works (as in the script is loaded, raising the $ issue mentioned above */
System.import('assets/js/regular-expressions.js');

/* The following line with a variable throws an error of "Cannot find module 'assets/js/regular-expressions.js'." */
System.import('' + script + '');

我不明白为什么行为会有差异。特别是当传递给 System.import 的值完全相同时。


我最终发现这几乎是 webpack 的一个(相当大的)限制。我得到了 tree-shaking 等的想法,但 WebPack 确实应该允许开发人员选择在运行时加载脚本。

我现在最终使用了这个方法:https://stackoverflow.com/a/37844389/3389346 https://stackoverflow.com/a/37844389/3389346

这不是最好的,因为它需要应用程序广泛依赖 jQuery。如果 WebPack 人员决定允许开发人员选择一次性加载脚本,我会回去纠正它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 4 与 Webpack 2,动态加载脚本 的相关文章

  • 如何在 Angular 4 中将 xml 转换为 json?

    我是 Angular 4 的初学者 我没有足够的知识如何处理 XML 到 JSON 以及如何在 Angular 4 中调用服务 请建议 基于库http goessner net download prj jsonxml http goess
  • 不允许我将对象推入数组

    我正在使用 Angular 我试图将一个对象推入数组 但它给了我错误 它说类型错误 无法读取未定义的属性 push 也就是下面的代码 文章是一个对象 articles Article addArticle newTitle HTMLInpu
  • 具有相同父布局角度的功能模块路由

    我想使用相同的布局 在应用程序模块 ts 对于不同的功能模块 每个模块都有自己的路由 以及一个单独的登录 注册布局 没有侧面菜单 页眉和页脚 到目前为止我尝试过这个 app app component html
  • 如何使用第三方 JS 组件进行 Angular2/4 验证

    当谈到 Angular 2 验证时 我看到了不同的方法 基本方法是使用 HTML5 和模板 模型绑定或带有指定验证器的表单 然而 当涉及到特殊规则时 它需要大量编码 并且模板绑定 因此没有表单 通常会导致验证分散在 HTML 和 TS 代码
  • 模块“AppModule”声明了意外值“未定义”

    这里有什么问题吗 我正在尝试使其工作 但我在标题中收到该错误 我已经包括了
  • Angular 2:将路由器出口设计为宽度 < 100%

    我正在构建一个 Angular 2 应用程序 该应用程序将为宽度超过 500 的屏幕提供侧导航栏 为宽度小于 500 的屏幕提供底部导航栏 现在 我尝试为侧栏分配 20 的宽度 即 80 应用内容 我遇到的问题是路由器出口内容 即实际的应用
  • Angular 6 http.delete 请求不起作用

    我似乎无法让我的删除请求发挥作用 我已经完成了所有的获取请求 但现在我被困在删除上 似乎无法理解它 console log 的 URL 始终正确 并且删除请求通过 Postman 工作正常 有什么想法吗 HTML
  • 如何在 Angular 2 中处理 200 以外的 http 状态码

    现在我做http请求的方式 借用这个答案 https stackoverflow com a 34758630 4937981 这是 POST url data var headers new Headers authtoken local
  • Angular 2 insideHTML 忽略表单标签

    我正在为 Angular 2 构建一个模态 因为没有像 Angular 1 x 这样的原生模态 而且我取得了很好的进展 我创建了一个模态组件 可以显示和隐藏 并且有一个主体输入唯一不起作用的是 由于某种原因 表单元素被从渲染的 html 中
  • Angular 2:当我通过浏览器刷新时发生404错误[重复]

    这个问题在这里已经有答案了 我已将单页应用程序存储在服务器中名为 myapp 的文件夹中 我已将库中的 URL 更改为http example com myapp http example com myapp 60 我的项目有两个页面 所以
  • 如何使 Angular Reactive Formarray 中的级联下拉菜单工作而不弄乱下拉值

    我有一个角度 4 的表单 其中包含名字 姓氏和一个包含 2 个下拉菜单 选择 的表单数组 用作级联下拉菜单和一个删除按钮 表单的其余部分还包含一个发送按钮和一个添加选项按钮 我在此处添加了屏幕截图 以便您更好地理解 表单添加 删除按钮和发送
  • 如何使用webpack DLL插件?

    我刚刚开始使用 webpack 3 和 dllplugin 我设法找到了一些博客文章 这 然而 它们都没有正确的代码示例 GitHub 示例代码 有谁知道此 工作示例的示例代码的任何参考 这是一个很好的简单例子 我们在vendor js 中
  • @Component 和 @View 的区别

    我试图找出 AngularJS 2 中 Component 和 View 之间的区别 在下面的两个例子中我可以实现完全相同的事情 没有 View的示例 import Component from angular2 core Componen
  • 是否可以在运行时动态设置组件@Input?

    说我有一个dynamic component wrapper可以实例化任何Component传递给它的类 DRE013 DCOOKE 16 05 2017 The component to instantiate Input compone
  • Angular:先完全安装 Service Worker

    我正在用 Angular 编写一个 PWA 需要准备好从单页加载中离线 Service Worker 生命周期的文档指定 Worker 已安装但不会立即激活 https developers google com web fundament
  • Angular2:setTimeout仅调用一次

    我正在 Angular2 中实现需要使用的功能setTimeout My code public ngAfterViewInit void this authenticate loop private authenticate loop s
  • Angular 2 Component - 访问 DOM(或创建没有模板的组件,纯粹来自 JS)

    尝试在这里使用 Angular 2 了解它仍处于 alpha 阶段 如何从组件访问 DOM 元素 具体来说 我想使用其他库 例如d3 http d3js org 从代码生成自定义 DOM 我想我需要创建一个组件并以某种方式插入组件生命周期以
  • 如何使用 Web 套接字和 Angular CLI 设置代理

    我有一个使用 Angular CLI 构建的简单 Web 应用程序 我希望它使用网络套接字与后端通信 我已经编写了后端 并使用一个简单的 index html 页面进行了测试 服务器可以在套接字上发送和接收该页面 在我的 angular c
  • 在 Angular 6 服务中获取当前路由参数的最佳方法是什么?

    我试图找出在 Angular 6 中获取当前路由参数的最佳方法是什么 目前我必须通过ActivatedRoute到服务的方法作为参数 然后在服务中使用它 export class MainComponent constructor priv
  • 拖动元素时是否禁用 mousemove 事件?

    我试图通过在拖动元素时观察文档上的 mousemove 事件来移动元素 使用 html5 拖放 我在文档的父元素上添加了一个 mousemove 侦听器 每当我移动鼠标时都会触发该监听器 但是一旦我开始拖动另一个子元素 我就不再看到 mou

随机推荐