Javascript Asp核心&x2B;角度4+;VS 2017,从网页包模板转移到其他模板

Javascript Asp核心&x2B;角度4+;VS 2017,从网页包模板转移到其他模板,javascript,angular,webpack,asp.net-core,visual-studio-2017,Javascript,Angular,Webpack,Asp.net Core,Visual Studio 2017,我正在尝试将Angular 4+ASP Web Api 5迁移到ASP Core。我使用了VS4模板并添加了其余的代码 旧版应用程序使用systemjs.config.js,新模板使用webpack,但使用新模板我遇到了很多问题: jQuery插件无法正常工作(以前正常工作) 在部署时,我在angular库上发现了新错误(以前工作过) 我的问题是: 除了webpack,我还可以使用其他Angular 4与Asp Core Web Api+VS 2017集成吗?之所以会出现这种情况,是因为webp

我正在尝试将Angular 4+ASP Web Api 5迁移到ASP Core。我使用了VS4模板并添加了其余的代码

旧版应用程序使用
systemjs.config.js
,新模板使用webpack,但使用新模板我遇到了很多问题:

jQuery插件无法正常工作(以前正常工作)
在部署时,我在angular库上发现了新错误(以前工作过)

我的问题是:


除了webpack,我还可以使用其他Angular 4与Asp Core Web Api+VS 2017集成吗?

之所以会出现这种情况,是因为webpack将jQuery(或任何库/脚本)包装到模块中的方式。这意味着默认情况下,window.$之类的内容在Webpack中不可用,因为$变量的作用域是在特定的模块中。如果您在输出的代码中搜索jQuery,您可以看到这一点,它将被包装在一些奇怪的东西中(例如commonjs或es6模块等)

要解决这个问题,您必须在webpack(或垫片)中使用脚本加载程序,这将允许您在全局上下文中加载脚本。除非你真的需要,否则你不应该这样做。正如其他人提到的,将jQuery与Angular一起使用通常是不明智的,因为您应该尝试避免使用Angular对DOM进行爬网(这就是为什么您可能会选择Angular作为一个库开始)。此外,如果DOM引用项,则对Angular的扩展(如AOT编译)可能会中断

请看这里:
这里:

我个人不会将jQuery与Angular4一起使用,因为Angular4可以完全替代它。但对我来说,听起来您没有正确地将jquery嵌入
webpack.config.vendor.js
(可能会发布相关部分?)。另外请注意,默认模板启用服务器端渲染(Indes.cshtml或_Layout.cshtml中的
asp prerender module=“ClientApp/dist/app.module.server.ts”
)。删除该页面时,该页面将不会在服务器上呈现。通常使用服务器端渲染时,您无法访问会话存储区或
窗口。文档
窗口
对象中的任何其他内容。当服务器端渲染启用且jQuery的大部分依赖于此时,除其他外,这会导致angular/node/javascript应用程序失败。还可以看到关于Hi.jQuery的评论,我不需要,但是我想使用一个需要jQuery的插件。我为我的问题打开了帖子:或者谢谢,这正是我告诉你的。这是因为预渲染。在服务器上执行javascript代码时,没有
窗口
实例。它只存在,wenn代码在浏览器中运行。如果您需要这样的代码,您必须禁用PreRedenderingSee并在此处阅读我的评论(或链接问题中的答案)