在 .NET 核心应用程序中导入 Javascript 包的最佳方式

Posted

技术标签:

【中文标题】在 .NET 核心应用程序中导入 Javascript 包的最佳方式【英文标题】:Best way to import Javascript packages in .NET core app 【发布时间】:2019-11-30 07:14:44 【问题描述】:

我是 .NET Core 框架的新手,目前正在设置一个使用 Razor 页面和一些 javascript 交互的仪表板。对于我创建的几个示例项目,它们都没有从一开始就带有包管理器,恕我直言,需要它来保持应用程序的可维护性。来自 Node.js 和 Ruby on Rails 背景,我的默认解决方案是 NPM(或 Yarn,如果你愿意)。

然而,我注意到微软在大约 2 年前从他们的 .Net 基础 Docker 映像中排除了 Node(参见此处:https://github.com/aspnet/Announcements/issues/298)。

这导致我质疑我使用 NPM 的解决方案,然后我开始寻找替代方案。我发现您可以通过将 Javascript 库包装在 Nuget 包中并通过 Nuget 安装它们来安装它们。但是我很犹豫要不要走这条路,因为我已经看到这种模式导致 Ruby on Rails 出现问题。它增加了额外的维护层,通常是不再维护的 Ruby Gems,这意味着您无法迁移到最新版本。

然后我们有 Libman,它集成到 Visual Studio (https://docs.microsoft.com/en-us/aspnet/core/client-side/libman/libman-vs?view=aspnetcore-2.2) 并从 https://cdnjs.com 中提取包,我相信它包含的包较少(但根据微软的说法,它有你需要的一切)。但他们自己的博客 (https://devblogs.microsoft.com/aspnet/library-manager-client-side-content-manager-for-web-apps/) 说:

LibMan 不是一个包管理系统。如果您乐于使用 npm/yarn/(或其他),我们鼓励您继续这样做。 LibMan 并不是作为这些工具的替代品而开发的。例如,我们为 ASP.NET Core 提供的 SPA 模板(即 Angular 和 React)依赖于 npm 和 WebPack,我们没有计划改变它。

然后我们就剩下 Bower,它不再是一个选项,来自 https://bower.io/:

...嘘!在维护 Bower 的同时,我们建议将 Yarn 和 Webpack 或 Parcel 用于前端项目,阅读如何迁移!

所以我想知道,对于单体应用来说,NPM 或 Yarn 是否仍然是正确的选择,如果是,为什么微软决定从他们的基础镜像中排除 Node?​​p>

【问题讨论】:

你不需要使用微软默认的 Docker 镜像。为了使用我使用的 Yarn 之类的东西,只需创建自己的 DockerHub 镜像,该镜像构建在基础镜像之上以包含 Node。 是的,我就是这样做的,但我有点不确定是否应该朝那个方向发展。也许我错过了一些东西,微软“建议”来实现其他东西。但似乎他们不想太固执己见,并且来自 Ruby on Rails 背景,这可能会造成混乱。 【参考方案1】:

您提到了LibMan,它工作得很好,但您需要将其配置为从unpkg 下载包,unpkg 是 NPM 的 CDN,应该包含您可以在 npm 上找到的所有内容。

【讨论】:

以上是关于在 .NET 核心应用程序中导入 Javascript 包的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

在 64 位 .Net 应用程序中导入 32 位 dll

如何在.net中导入axaltocm dll [gemalto .net card]

在 asp.net 文本框中导入 Jquery 日期值失败

从Eclipse中导入javaweb项目

如何使用 Blazor 框架在前端浏览器中导入和导出 Excel

如何在 Razor 视图页面中导入命名空间?