在Windows 8 JavaScript Metro Application 开发
在这篇文章中,我将展示新的Windows8的JavaScript开发过程和特点,由于本人英文水平有限望读者见谅,开发Windows8的Metro Application可以使用以下语言
1、C++ and XAML 2、C# and XAML 3、JavaScript and HTML5 首先我们先了解一下WINDWOS8的架构如下图所示
大家看完图之后我相信大概应该有个总体上的了解,我大致说一下个人的理解,共享内核核心,界面展示可以用XAML和HTML/CSS设计,可以结合DirectX来开发游戏或图形程序。Metro风格的和以前的桌面程序分开,从图上大家可以很清晰的看到。在Visual Studio 11 Beta 下对JavaScript进行了一个很好的集成。所以微软是微软的就叫了WINJS,WinJS提供许多东西给大家使用
例如Selectors:document.querySelector(".headerTemplate")
document.querySelectorAll("div")
Text:document.querySelector(“#Title”).textContent
Animation:WinJS.UI.Animation.fadeIn(document.querySelector(“div”));
更多的大家可以去MSDN可以找到,当你打开Visual Studio 11 Beta 选择新建工程选择JavaScript开发的时候大家可以看到由以下几个框架风格供大家使用1、Blank Application 在此我翻译为创建一个Metro风格的空项目
2、Split Application 此我翻译为创建一个Metro风格的拆分项目
第一个界面为导航页,第二个为具体显示的内容页面
3、Fixed Layout Application 在此我翻译为创建一个Metro风格的固定比例尺寸的项目
4、Navigation Application 在此我翻译为创建一个Metro风格的预定义导航的项目
5、Grid Application 在此我翻译为创建一个Metro风格的网格的项目
其实经常开发的人员都清楚其实这几种方式主要是页面的布局和显示的内容不太一样,大家可以在新建工程中看到上述应用划分
点击OK按钮生成如下图所示项目结构形式
base.js和ui.js是winjs的核心,其它的每个HTML页有它自己的CSS和JavaScript文件,由于我们选择的是Grid Application所以生成了groupDetailsPage groupedItemsPage itemDetailsPage 三个页面从字面上大家也可以理解具体是做什么的了。大家知道网页程序一般都是从default.html开始的打开它大家可以看到如下形式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Application1</title> <!-- WinJS references --> <link href="http://www.codeproject.com/Microsoft.WinJS.0.6/css/ui-dark.css" rel="stylesheet"> <script src="http://www.codeproject.com/Microsoft.WinJS.0.6/js/base.js"></script> <script src="http://www.codeproject.com/Microsoft.WinJS.0.6/js/ui.js"></script> <!-- Application1 references --> <link href="http://www.codeproject.com/css/default.css" rel="stylesheet"> <script src="http://www.codeproject.com/js/data.js"></script> <script src="http://www.codeproject.com/js/navigator.js"></script> <script src="http://www.codeproject.com/js/default.js"></script> </head> <body> <div id="contenthost" data-win-control="Application1.PageControlNavigator" data-win-options="{home: '/html/groupedItemsPage.html'}"></div> </body> </html>groupedItemsPage加载相关的JS/ CSS文件,现在运行程序就可以看到一个简单的页面了,那么我如何导航到我自己的页面呢,接下来就是页面的定义部分了,需要注册导航事件在groupedItemsPage.js里面,注册导航事件需要引用WinJS.UI.Pages.define命名空间,我个人觉得微软在WINJS上的编程风格我比较喜欢,和其它开发环境一下比较有条理。打开groupedItemsPage.js后我们会看到如下
(function () { "use strict"; var appView = Windows.UI.ViewManagement.ApplicationView; var appViewState = Windows.UI.ViewManagement.ApplicationViewState; var nav = WinJS.Navigation; var ui = WinJS.UI; var utils = WinJS.Utilities; function ready(element, options) { } function itemInvoked(eventObject) { } function updateLayout(element, viewState) { } ui.Pages.define("/html/groupedItemsPage.html", { itemInvoked: itemInvoked, ready: ready, updateLayout: updateLayout }); })();在这不得不提一下命名空间和类的使用,微软的确有一套使我们非常容易开始我们的编程之旅了如下
WinJS.Namespace.define("data", { web: WinJS.Class.define({ load: loadRoamingData, save: saveRoamingData }), local: WinJS.Class.define({ load: loadLocalData, save: saveLocalData }), items:groupedItem });类似于这样调用
data.web.load() or getting items –> data.items
页面准备好了接下来是如果在页面显示数据的问题了,我们使用WinJS.UI.ListView这个控件在你的页面如下
<div class="groupeditemslist" aria-label="List of groups" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none' }"></div>如果学过WPF和SILVERLIGHT的朋友都知道数据模板在WINJS也有并且我以前在JavaScript下也看到了数据绑定,感叹现在语言进步的真快啊。言归正传吧列出数据模板
<!-- These templates are used to display each item in the ListView declared below. --> <div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-overlay"> <h4 class="item-title" data-win-bind="textContent: title"></h4> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: subtitle"></h6> </div> </div>最后是在JS里添加控制代码
ready: function (element, options) { var listView = element.querySelector(".groupeditemslist").winControl; ui.setOptions(listView, { itemDataSource: data.groups.dataSource, itemTemplate: element.querySelector(".itemtemplate") });
跑运输论坛,跑跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!) 跑运输站长博客,跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!)
聚划算淘宝客外推精选商品、 集结聚划算外推高转化商品 品牌卖家折扣商品推广 天天疯狂购,低至3折,还等 神马 打造第一母婴达人馆,网罗更多母婴商品,为你打造属于你的温馨小屋! 淘宝优秀店铺精选,集合了高佣金高转换率的优秀店铺。 秒杀满立减 齐集淘宝疯狂促销食品、让你买得省心、吃得放心、而且还有高额佣金哦! 淘宝皇冠店铺精选,集合了高佣金高转换率的皇冠 店铺。 淘宝网-亚洲最大、最安全的网上交易平台,提供机票、票务服务,方便您的出行 想看宝岛台湾的时尚动态吗,想观宝岛台湾的潮流前沿吗,一切尽在台湾馆频道,高佣金、高转化,精彩不容错过 淘宝最权威的女装风向标,集合了淘宝最热卖的优质商品,给买家带来全新的购物体验。 淘宝商城,亚洲最大最全最专业的网上购物网站——淘宝网打造的在线B2C购物平台。 淘宝商城频道集合了全球最知名的品牌包括联想、惠普、迪士尼、Kappa、乐扣乐扣、JackJones等,给买家带来全新的一站式购物体验 正品行货保证!精选电器城最优品牌商品,让您有亲临商城的优良购物体验。 引领淘宝数码时尚,为你带来淘宝最受追捧的新潮数码产品,让你追随时尚永不out! 淘宝最权威的鞋包配饰风向标,集合了淘宝最热卖的优质商品,让买家了解每季最时尚的配饰。 淘宝客男人频道,精选淘宝网热销男装,高成交、高佣金、高转化,让您收益节节高! 集结淘宝最丰富的强势类目,精选最优质的卖家和商品,达到最广泛的买家覆盖率 淘宝美容馆,我的美容管家。精选商品、高额佣金、疯狂畅销、打造买家自己的美容小馆。 打造第一居家达人馆,网罗更多创意极品和居家商品,为你共同打造属于你的浪漫满屋!
网购从这里开始
},