浏览器中的WinJs?

28

在尝试过新版Visual Studio 11 Preview后,我认为最有趣的问题是如何使我的新基于javascript的应用程序在浏览器中也能运行,并进行最小程度的更改。这种可能性存在吗?我想支持javascript的想法是为了更好的跨平台应用程序,我是对的吗?

我明白一些WinJs代码调用WinRT,但我们是否也可以在基于Web的应用程序中使用一些WinJS代码呢?


我认为这是可能的,但你需要检查库并伪造winrt调用,将所有ms-前缀替换为特定于浏览器的前缀...从中我们可以得到一些能够工作的东西,但仅适用于现代浏览器。我个人非常有兴趣让语义缩放控件在常规Web中工作 =) - sharp johnny
1
需要的工作比“伪造”WinRT调用多一些。你必须“替换”你使用的那些调用。但是因为你一开始只能使用你需要的,所以绝对可行。 - Bamerza
5个回答

28

我在build大会上听到微软的人说WinJS确实调用了Windows RT的一些功能。此外,他们的一些东西是基于一些供应商前缀的CSS(即仅支持IE10)。所以简短的答案是否定的。

更多想法。 要清楚的是,从现有的Html / Js应用程序转换到Win8应该很容易。需要考虑一些Win8应用程序事件和外观问题。但是核心应该可以工作。

最初的问题与以下问题相似:“我有一个IE9 HTML5 / Js应用程序,我想在所有地方(包括IE6,FF2)运行它,这可能吗?”他们的库中有许多功能,以及对新CSS3特性的利用(-ms-grid,-ms-float,3D变换)。据我所知,他们所有的手势识别都在winRT中,以实现“快速流畅”响应,而这一切都无法在Metro环境之外使用。

在我看来,支持win8 Metro样式应用程序的原因不是为了跨平台应用程序,而是为了增加可编写win8应用程序的开发人员数量。


4
另一方面,尽管使用WinJS会在实践中有很大帮助,但并不需要强制使用。 - Pavel Minaev
你认为C#会继续保持主流吗?Javascript的实现会像J#一样结束吗? - CD..
2
@CD 我认为 C# 在最初会保持主流。对许多人来说,C# 更容易和更熟悉。但是,Javascript 可能有更好的机会成为未来 win8 metro 应用程序的主要语言。没有比制作一个应用程序并赚钱更好的学习 Javascript 的方法了吧?如果你没赚到钱(大多数人不会),你仍然可以获得使用 html5/css3 和 javascript 的有效技巧的附加好处。 - Andre
如果我们能够使用WinJS创建一个像新的Outlook.com或Skydrive.com一样运行良好的网站,那将是很棒的。 - Jacob Morrison

18

看起来情况已经改变了。现在WinJS已经可以在所有平台上使用...您可以在此处在浏览器中尝试: try.buildwinjs.com

现在,WinJS已经成为开源的框架了:博客GitHub

使用这个强大的Windows开发框架,在各种浏览器和设备上构建高质量的Web应用程序,包括Chrome、Firefox、Android和iOS等非Windows平台。


3
v3版本已经发布,支持更好:http://blogs.windows.com/buildingapps/2014/09/17/winjs-everywhere/ - Ben Adams
要在本地复制try.buildwinjs.com上的示例,您可以使用来自cdnjs的所需JS引用:http://cdnjs.com/libraries/winjs。这是我发现的第一个WinJS在独立浏览器应用程序中使用的示例-http://apptastic.laurenraeorsini.com/。它很基础,但展示了如何将各个部分组合在一起。 - mvark
1
快来看看v4的预览版本吧!https://github.com/winjs/winjs#build-winjs。WinJs现在是其他混合框架的一个严肃竞争对手。 - Matthew Pitts

5
是的,这可以使用Lightswitch HTML组件完成。
您可以下载并安装Lightswitch以查看使用WinJS跨浏览器的示例。它使用Promise对象等等。

只是为了澄清 - 虽然LightSwitch支持创建跨平台、跨浏览器的移动HTML客户端,并利用WinJS的子集,但它似乎没有使用任何WinRT特定的API调用(这些调用是特定于Win8的)。 - CyberMonk

3

有一种替代winjs的技术可以在浏览器中使用:http://www.bluesky.io/,虽然我还没有尝试过。


2
如果你正在编写游戏,那么这是可能的。你可以在Metro应用程序和Web应用程序之间轻松移植它们,而无需更改任何代码。这是因为你不需要真正使用WinJS库。
对于Web应用程序,我不建议这样做,因为这意味着你不能使用WinRT框架。这也意味着你会失去很多功能。例如搜索和共享魅力。这些对于Metro应用程序是必要的,但在Web应用程序中没有用处。
WinRT框架也针对性能进行了优化。因此,建议你使用它而不是像jQuery或其他框架一样的框架。后者可能会更慢。
另一个问题是:如果你可以为Web编写它,为什么要将其转换为Metro应用程序?这有什么价值呢?
我想提出的最后一点是:Web应用程序(目前)旨在在线工作。当使用Metro应用程序时,你需要记住应用程序也需要离线工作。这意味着额外的抽象层。
像Andre在他的回答中提到的那样,HTML5/JS只提供了开发应用程序的额外方式。微软只是让更多人能够以他们熟悉的语言编写应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接