博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【windows8开发】javascript开发Metro风格App
阅读量:6706 次
发布时间:2019-06-25

本文共 2905 字,大约阅读时间需要 9 分钟。

javascript在web前端的地位不需要再花任何言语去证明了,NodeJS的爆发又给JS带来了Web后台开发的新定义。而如今Windows8又提出了一种新的开发框架:用javascript开发Native App。可以说,锋利的javascript必然让windows平台Native App开发的生产力再上一个台阶。不吹嘘javascript的威力了,进入主题。

本文主要讨论javascript开发Metro App的一些细节以及windows 8中程序的生命周期。
首先用VS新建一个工程:选择【javascript】【Windows metro style】【Blank Application】。可以看到在这个工程中有如下默认的文件:

1.default.html:程序执行时的起始页面,你可以再这里修改你起始页面的UI。

2.default.js:default.html中加载了这个js,所以在程序执行显示起始页面时会加载和执行这个js。可以看到工程中会有如下默认的代码:
var app = WinJS.Application;    app.onactivated = function (eventObject) {        if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {            if (eventObject.detail.previousExecutionState !== Windows.ApplicationModel.Activation.ApplicationExecutionState.terminated) {                // TODO: This application has been newly launched. Initialize                // your application here.            } else {                // TODO: This application has been reactivated from suspension.                // Restore application state here.            }            WinJS.UI.processAll();        }    };    app.oncheckpoint = function (eventObject) {        // TODO: This application is about to be suspended. Save any state        // that needs to persist across suspensions here.    };    app.start();
app.onactivated在程序开始或状态被激活时会触发,可以在这里执行一些初始化操作。而app.oncheckpoint则是在程序即将被挂起时会触发,可以在这里保存当前运行中的程序状态和数据,以便在下次触发运行时恢复。

WinJS.UI.processAll函数主要是用来执行UI框架中的一些初始化和事件绑定。

3.default.css: 这个文件干什么用的就不多废话解释了。

就使用默认的工程默认的代码,编译运行,可以看到程序启动后页面显示“Content goes here”。

到这里可以看出,用html+js+css来开发Native App的话还是相当犀利的,可以想象的出因为Js的登场,在windows 8上开发Native App会变得多么方便。

然后,我又做了一些尝试,首先把JQuery也加载到工程中:

一起简单验证下jquery是不是能正常工作,就验证两点,一个是jquery的选择器,一个是ajax。
在default.html中作如下修改:
1.导入jquery。
     ......        
2.<body>节点中加入如下代码:
    ......    
简单解释下以上代码,首先加入了一个名为ajax的按钮,然后在点击这个按钮时执行一个ajax call,把ajax call的结果写在id为"contentid"的<div>中。

好了,修改完毕,编译运行看下结果。如果网络连接正常的话应该会发现页面上多了一大串内容,其实就是ajax call后请求到的http://www.tornadoweb.org/documentation/_sources/web.txt的内容,如下图:

ok,至少能明白如下几点:
1. 对jquery的支持应该没有问题。
2. 支持XMLHttpRequest。
3. 不存在浏览器中ajax call的cross domain(跨域)限制的问题。

4. 另外我还尝试使用html5的WebSocket,也是支持的。

最后,再来探讨下App的生命周期吧。

在windows 8中,程序会由于使用者的切换或者系统进入低功耗状态而被挂起(suspended),当程序被挂起时,它仍旧驻留在内存中,当用户resuming时会被快速激活恢复running状态。但是,系统也可能因为需要释放内存或者节约电量而终止某些被挂起的程序。并且,系统只会在挂起程序时通过事件通知程序,而不会在终止程序时通知。所以如果你忽略这种情况,很可能程序会经常莫名其妙就down掉。
那么,怎么解决呢?
无疑我们需要在系统通知程序被挂起时,就要保存当前程序的执行状态(上下文)以及用户数据,以便于在程序被系统强行终止后用户重启时还能恢复挂起前的状态。系统提供了Windows.Storage.ApplicationData来帮助我们持久化保存数据,代码如下:
var appData = Windows.Storage.ApplicationData.current;var localSettings = appData.localSettings;        localSettings.values["state"] = currentState;
另外,系统还提供WinJS.Application.sessionState来保存session数据(程序终止后会被清空),有想了解的可以参考MSDN。
好了,就写到这里。win8下js开发Native App的方式确实是让自己眼前一亮,我想即使是C++程序员在win8下也很难再愿意去用C++来开发Metro UI了,html+js在某些方面确实是太锋利了。

转载于:https://www.cnblogs.com/secbook/archive/2012/07/08/2655098.html

你可能感兴趣的文章
重载和重写的区别?
查看>>
「镁客早报」我国成功发射第四十二、四十三颗北斗导航卫星;北京中关村集成电路设计院开园运营...
查看>>
Python之每日一练生成激活码
查看>>
渐变画刷示例
查看>>
实时应急通讯的帮手——北斗天地对讲机
查看>>
eclipse 配置Android开发环境
查看>>
django 1.8 官方文档翻译: 1-2-6 编写你的第一个Django应用,第6部分
查看>>
JavaScript 复杂判断的更优雅写法
查看>>
MeasureOverride 和 ArrangeOverride
查看>>
Salesforce如何在人工智能领域“杀出一条血路”?
查看>>
Redisson实现Redis分布式锁的N种姿势
查看>>
kafka-storm 详细
查看>>
WebStorm 2019.1 正式发布,为 JS 和 TS 提供更好的智能感知
查看>>
Docker 常用命令总结
查看>>
使用Python请求http/https时设置失败重试次数
查看>>
系统中信息的表示和处理 --《深入理解计算机系统》第二章读书笔记
查看>>
把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案...
查看>>
创新项目从来都是在负债之下做架构取舍
查看>>
搞懂分布式技术14:Spring Boot使用注解集成Redis缓存
查看>>
分布式系列三: 对象序列化
查看>>