【发布时间】:2018-01-02 11:59:34
【问题描述】:
我使用 angular-cli 引导了 Angular 2 应用程序。在我决定使用引导模式之前,一切都很容易。我只是从我们的另一个不使用 angular-cli 的项目中复制了用于打开模式的代码。我在 angular-cli.json 文件中的脚本中添加了 jquery 和 bootstrap 依赖项。 jQuery 在项目中被识别,但是当我尝试在 Angular 组件中运行 this.$modalEl.modal(options) 时,我收到一个错误 jQuery is not defined。
实际上 jQuery 被导入到项目中,但作为全局 $。我做了一些挖掘,显然引导程序希望 jQuery 作为“jQuery”变量传递给它。它不会让老鼠对$ 感到厌烦。
我可以像在其他项目中一样将jQuery 公开为webpack.config.js 文件中的变量:(为简洁起见,省略了很多代码)
var jQueryPlugin = {
$: 'jquery',
jquery: 'jquery',
jQuery: 'jquery'
}
exports.root = root;
exports.plugins = {
globalLibProvider: new webpack.ProvidePlugin(webpackMerge(jQueryPlugin, {
svg4everybody: 'svg4everybody/dist/svg4everybody.js'
}))
}
但是angular-cli 开发团队决定不让其他开发人员干预 webpack 配置文件。多谢你们!你很体贴。
我尝试将 jQuery 直接导入 Angular 组件以及这里提到的一堆其他东西https://github.com/angular/angular-cli/issues/3202(将导入添加到 vendor.ts 文件,然后将 vendor.ts 添加到 angular-cli.json 中的脚本数组)但没有作品。
说实话,我很生气这样一个微不足道的问题,比如在 angular-cli 中添加 jquery 依赖以与 bootstrap 一起使用是一个雷区。
你有没有处理过类似的问题?
【问题讨论】:
-
为什么说“angular-cli 开发团队决定不让其他开发人员干预 webpack 配置文件”?
-
@KScandrett 因为 angular-cli 不公开 webpack 配置文件。您通过 angular-cli.json 配置应用程序。 Angular-cli 基于它创建 webpack 配置,但是没有直接的方法来编辑 webpack 配置文件而不求助于一些 hack。团队决定抽象 webpack 配置,因为这对于初学者来说非常困难。我不同意他们的决定,因为它使配置某些您无法在 angular-cli.json 文件中设置的东西变得更加困难。
-
为什么不直接弹出它
ng eject并编辑它? -
这是一个公平的观点。 github.com/angular/angular-cli/wiki/eject 退出应用后还能使用 angular-cli 生成器吗?
-
我没试过。如果生成器不工作,你可以做github.com/aspnet/JavaScriptServices/issues/…。
标签: jquery angular webpack angular-cli bootstrap-sass