Windows 8应用程序是否运行符合标准的JavaScript,HTML5和CSS3?

Edw*_*ard 5 javascript html5 cross-platform css3 windows-8

像大多数.NET开发人员一样,我正在观看位于Cali Anaheim的Build Event的主题演讲,并对使用JavaScript,HTML5和CSS3构建Windows 8应用程序的新支持提出了疑问.

他们展示了很多例子,甚至说新的Windows 8市场是用这些技术编写的.我猜测的唯一一件事就是当他们将JavaScript放在同一类别的C#中时,你可以使用JavaScript编写windows应用程序(可以直接访问.NET).

显然,作为一名Web开发人员,考虑到我使用JavaScript,HTML5和CSS3构建的一些应用程序,这是非常棒的新闻.

我的问题是我们为Windows 8构建的应用程序是否真正符合Web标准?我们可以为Windows 8构建应用程序并转向并在网络上启动它们吗?当前在线的Web应用程序是否可以访问他们演示的一些功能?

就像我说的那样,这将是一个非常棒的进步.不要放下Silverlight,我已经写了很多应用程序,以及它在混合岩石中的工作方式.而用我用C#编写的一些应用程序替换JavaScript的想法甚至都不是一种选择.

这只是为了让基于"web"的开发人员为Windows开发,还是一个用于构建应用程序的跨平台解决方案?

Dan*_*sen 7

稍微澄清一下,Javascript/HTML5/CSS3 windows程序在名为WinRT(Windows运行时)的新层上运行,而不是.Net.所有新的Windows Metro风格应用程序都将构建在此层之上,而不是旧的.Net.如果您的应用程序使用WinRT功能,显然您需要Windows才能运行该应用程序.如果要集成这些功能,这是您的选择.(显然这取决于你试图用你的应用程序做什么)我相信你可以构建一个符合标准的应用程序并让它在系统上运行得很好 - 你就不会使用任何MS特定的功能.从这个意义上说,它就像一个你作为应用程序启动的网页.

其他说明:

  • MSIE目前使用一些-ms特定的前缀,直到W3C接受这些功能并给出官方跨浏览器名称.没有什么不同-webkit-border-radius,-moz-border-radiusborder-radius.

  • HTML5使用了一些功能,例如大多数浏览器尚未实现的网格.

  • Microsoft包含许多Javascript库,可以轻松构建应用程序.其中许多是基于jQuery的.有些是特定于Windows的.不确定在其他地方使用它们的许可是什么.我假设jQuery被允许是可移植的,而Windows则在WinRT之外使用是没有意义的.

  • @Rob,我不同意.作为一名长期的Web开发人员,我很高兴看到微软正在寻找比以往更多的标准.我的罗嗦答案可以归结为:"是的,基于标准+可选的Windows唯一功能"与我熟悉的其他基于HTML的平台相同. (3认同)
  • 但是,要承认您的一些观点,使用仅基于标准的功能编写Windows 8应用程序并跳过其丰富的内置库可能没有意义.如果这是您的目标,为什么不建立一个网站或基于网络的应用程序呢? (2认同)

Zac*_*SFT 5

@马特

为了澄清"converse",用​​HTML5编写的标准Web应用程序作为Metro应用程序运行:

假设你的应用程序没有做"坏事",那么是的.Metro应用程序环境默认受限制.为了从HTML5/JS中的应用程序内访问非本地资源(例如网站),您必须创建所谓的"Web上下文".

Web上下文允许应用程序访问Internet和不安全的资源,同时防止相同的上下文访问特权资源,如Windows运行时API.

这最终意味着如果您需要托管Bing Maps小部件并希望从系统获取GPS信息,则需要以下内容:

  1. 页面内的iframe(默认为Local Context)托管包含Bing Maps小部件的Web Context
  2. 使用window.postMessage在本地上下文和Web上下文之间发送数据(包含在iframe中)
  3. 调用Windows运行时API以从上面提到的本地上下文访问设备的GPS位置

这个应用程序模型为您提供了一个安全性,即JS应用程序中没有任何网站可以让恶意JS执行Windows运行时API来抓取您的数据.这可能是您在现有Web应用程序中重新构建以使其运行的最大区域,因为如果它来自不安全的资源,您必须在上下文之间推送数据.