在多个 Metro 风格的应用程序中重用 JavaScript 代码

本文关键字:JavaScript 代码 应用程序 Metro 风格 | 更新日期: 2023-09-27 18:34:18

>已解决! 请参阅下面的自我回答。


我正在使用Javascript和HTML构建两个Metro风格的应用程序,它们将具有不同的表示层,但在引擎盖下有很多类似的功能。 由于能够从 Javascript 调用 C# 方法,我可以将许多"通用"功能分解到 C# WinMd 库中,然后两个顶级应用程序都可以引用该库。

但是,有一些实用程序类型的函数是纯粹的Javascript,我想重用。 似乎没有办法使用Javascript(只有C#或C++)创建"WinMD"。

在 .NET 世界中,我通常只是将任何文件打包为资源,然后从公共程序集加载它。 有没有办法将"通用".js文件作为资源添加到 WinMD,并通过一些应用程序感知 URL(即 ms-appx: 或 ms-resource: 或类似的东西)访问它?

在多个 Metro 风格的应用程序中重用 JavaScript 代码

诀窍如下:

  1. 将要重用的文件添加到 WinMD 类库项目(例如"MyWinMdProj")
  2. 在其属性页中将资源标记为"内容"(通常默认为)
  3. 从顶级 Metro 应用添加对类库的引用
  4. 使用带有 ms-appx 协议的脚本标记来引用文件,即

<脚本 src="ms-appx:///MyWinMdProj/path/to/file.js">

请注意三个斜杠;"MyWinMdProj"是相对于 Metro 应用的包(即 ms-appx:///)的文件夹,而不是它自己的顶级包。

请注意,以这种方式包含的任何文件都将在 C:''Program Files''WindowsApps 下的文件系统上公开 - 但来自顶级应用程序项目的所有 html、js、css 等文件都已经公开了,所以你在这方面并不比在两个(或多个)不同的应用程序之间复制和粘贴代码更糟糕。

或者,您可以将脚本打包到 Nuget 包中,类似于 jQuery 和 Modernizer 的完成方式,然后只需向这两个项目添加 Nuget 引用。

http://www.nuget.org