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

时间:2012-05-16 18:23:21

标签: c# javascript windows-8 windows-runtime

解决了!请参阅下面的自我答案。


我正在使用Javascript和HTML构建两个Metro风格的应用程序,这些应用程序将具有不同的表示层,但在引擎盖下有许多类似的功能。由于能够从Javascript调用C#方法,我可以将许多“常用”功能纳入C#WinMd库,然后可以被两个顶级应用程序引用。

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

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

2 个答案:

答案 0 :(得分:3)

诀窍如下:

  1. 将您要重用的文件添加到WinMD类库项目(例如“MyWinMdProj”)
  2. 在其属性页面中将资源标记为“内容”(通常是默认情况下)
  3. 从顶级Metro应用程序
  4. 添加对类库的引用
  5. 使用带有ms-appx协议的脚本标记来引用该文件,即
  6. < script src =“ms-appx:///MyWinMdProj/path/to/file.js”>

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

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

答案 1 :(得分:0)

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

http://www.nuget.org