通过上面内容的学习,相信读者已经对各种项目模板和项模板有了大致的了解,本节将进一步介绍项目模板中默认包含的项目文件以及项模板文件,首先讲解这些文件中的初始内容以及作用,然后介绍在一个页面中如何添加控件,以及如何为控件注册事件处理函数并设计CSS样式。

1.项目模板中的默认文件

在每一个使用项目模板新建的JavaScript的Windows应用商店项目中,都会包含default.html、default.js和default.css三个文件。与其他几种项目模板相比,空白项目模板中的这三个文件仅包含基础的结构,没有具体的功能实现,下面以空白项目模板为例,分别介绍default.html、default.js和default.css三个文件。

(1)default.html文件

default.html文件是应用程序的默认启动页,可以直接在其中添加控件,在具有多个页面的应用程序中,可以将这个页面作为基础页然后在其中加载其他页面的内容。默认情况下,在default.html文件内容的head元素内包含对WinJS库文件、样式文件和JavaScript文件的引用。代码片段如下所示:

<!—对WinJS库的引用 -->

<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />

<script src="//Microsoft.WinJS.1.0/js/base.js"></script>

<script src="//Microsoft.WinJS.1.0/js/ui.js"></script>

<!—对样式文件和后台JavaScript代码文件的引用 -->

<link href="/css/default.css" rel="stylesheet" />

<script src="/js/default.js"></script>

在上面的代码中,首先引用了WinJS库中的ui-dark.css、base.js和ui.js三个文件,ui-dark.css是JavaScript主题风格库,用于设计前台界面的主题风格;base.js文件提供了支持程序运行的基础类库,在基础类库中包含了处理程序激活、挂起、异常等行为的函数,ui.js是WinJS控件库,包含了一些Windows应用商店应用的前台界面常用的控件和控件样式。接着引用了default.css和default.js文件,default.css文件用于为默认启动页面和整体应用程序设计CSS样式,default.js文件用于实现默认启动页的逻辑功能和处理应用程序的生命周期事件。

    (2)default.js文件

正如上面所提到的,default.js文件用于实现默认启动页的逻辑功能,并处理应用程序的激活、挂起事件。默认情况下,default.js文件的内容中包含一个匿名函数,在这个匿名函数中定义了应用程序激活、挂起两个事件的事件处理函数,还调用了WinJS.Application.start函数。当WinJS.Application.start函数执行时应用程序开始运行。

下面首先介绍应用程序激活事件的处理函数,相应的JavaScript代码片段如下所示:

app.onactivated = function (args) {

if (args.detail.kind === activation.ActivationKind.launch) {

if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {

//此应用程序刚刚启动。

} else {

//此应用程序从挂起状态重新激活

}

args.setPromise(WinJS.UI.processAll());

}

};

在上面的代码中,onactivated是激活事件的名称。在激活事件处理函数中,首先根据参数args获得当前应用程序的激活类型,判断当前应用程序是否因用户启动而激活,如果是,则继续判断应用程序是刚刚运行还是在挂起后重新激活的,读者可以根据激活方式进行相关的逻辑处理,这里只给出了注释并没有给出具体的实现代码。接下来调用WinJS.UI.processAll函数初始化WinJS库控件,为了防止UI线程的堵塞,这里使用setPromise函数异步执行初始化控件的过程。

接下来介绍应用程序挂起事件的事件处理函数,代码片段如下所示:

app.oncheckpoint = function (args) {

};

在上面的代码中,oncheckpoint是挂起事件的名称。默认情况下挂起事件处理函数中没有具体的功能实现,开发者可以向其中添加代码定义应用程序挂起时的行为。

在default.js文件的最后,调用了WinJS.Application.start函数,调用这个函数后应用程序将开始运行。

(3)default.css文件

default.css文件默认分为两个部分,第一部分包含一个body标记,可以在body标记下添加代码设计default.html页面中body元素的样式,第二部分包含四条语句,分别用于设计应用程序在横屏、填充视图、辅屏视图、和竖屏状态下显示的样式。由于四条语句结构相同,下面就仅介绍第一条语句的作用。第一条语句如下所示:

@media screen and (-ms-view-state: fullscreen-landscape) {

}

在上面的代码中,@media后面是一种设备的名称,表示接下来将设计使用某种设备时的样式。 @media screen表示设计的是使用显示器时的样式,and后面小括号内的内容是一个条件判断,判断应用程序当前的视图状态是否为横屏,如果是,就采用大括号内的样式。上面语句中的大括号内还未添加具体样式代码,开发者可以根据需要在其中设计样式。

2.使用项模板新建的文件

上面的内容介绍了项目模板中的默认文件,下面将开始介绍Visual Studio 2012提供的项模板,这些项模板包含一些基本的代码,开发者可以直接在这些代码的基础上设计应用程序的功能。在常用的项模板中,其中有一些项模板的内容读者可能会比较熟悉,比如"HTML页"项模板、"JavaScript文件"项模板和"样式表"项模板,所以这里将不对这些项模板做过多说明,下面将以"页面控制"项模板为示例来讲解模板中默认包含的内容。

使用"页面控制"项模板新建文件时,会自动添加三个文件,默认名称分别为pagecontrol.html、pagecontrol.js和pagecontrol.css,下面分别介绍这三个文件的内容以及作用。

(1)pagecontrol.html

pagecontrol.html文件包含一个HTML页面的基本结构,在head元素内包含对WinJS库文件、pagecontrol.css和pagecontrol.js文件的引用,代码片段如下所示:

<!—对WinJS库的引用 -->

<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />

<script src="//Microsoft.WinJS.1.0/js/base.js"></script>

<script src="//Microsoft.WinJS.1.0/js/ui.js"></script>

<!—对样式文件和后台JavaScript代码文件的引用-->

<link href="pagecontrol.css" rel="stylesheet" />

<script src="pagecontrol.js"></script>

在上面的代码中,首先引用了三个WinJS库文件,在pagecontrol.html文件中引用这三个文件的作用与default.html页面中相同,这里不再重复介绍。接着引用了pagecontrol.css和pagecontrol.js文件,pagecontrol.css文件用于设计pagecontrol.html页面的样式,pagecontrol.js用于实现pagecontrol.html页面的逻辑功能。

在body元素中包含一个div元素,这个div元素的内容分为页面的标题部分和主要内容部分,header元素用于定义页面的标题,section元素则用于设计页面的主要内容。代码片段如下所示:

<div class="pagecontrol fragment">

//页面标题部分

<header aria-label="Header content" role="banner">

<button class="win-backbutton" aria-label="Back" disabled></button>

<h1 class="titlearea win-type-ellipsis">

<span class="pagetitle">Welcome to pagecontrol</span>

</h1>

</header>

//页面主要内容部分

<section aria-label="Main content" role="main">

<p>Content goes here.</p>

</section>

</div>

在上面的代码中,标题部分包含一个按钮和一个h1元素,按钮使用了WinJS库中的win-backbutton样式从而使自身形状变为一个向左的箭头,还设置了disabled属性更改自身状态为不可见;h1元素则用于显示页面的标题。主要内容部分包含一个p元素,用于显示一段文本。

(2)pagecontrol.js

pagecontrol.js文件用于实现pagecontrol.html页面的逻辑功能,默认情况下,pagecontrol.js文件的代码包含在一个匿名函数内,在匿名函数内调用了WinJS.UI.Pages.define函数,用于定义一个PageControl控件,代码片段如下所示:

(function () {

"use strict";

WinJS.UI.Pages.define("/pagecontrol/pagecontrol.html", {

ready: function (element, options) {

},

unload: function () {

},

updateLayout: function (element, viewState, lastViewState) {

}

});

})();

在上面的代码中,"use strict"表示当前为严格编程模式,WinJS.UI.Pages.define函数的第一个参数是pagecontrol.html页面的地址。第二个参数是一个对象,这个对象中定义了三个函数,分别为ready、unload和updateLayout。其中ready函数主要用于初始化PageControl控件,unload函数在导航出pagecontrol.html页面时执行,当pagecontrol页的显示界面发生改变时,将调用updateLayout函数。

(3)pagecontrol.css

在pagecontrol.css文件中定义了pagecontrol.html页面的CSS样式,默认内容是设置p元素的显示位置,其中p元素包含在一个类名为pagecontrol的元素中,代码片段如下所示:

.pagecontrol p {

margin-left: 120px;

}

以上介绍的是项模板文件的初始内容和作用,接下来介绍如何向文件中添加控件。

Win10系列:JavaScript 项目模板中的文件和项模板文件的更多相关文章

  1. 避免UE4项目VS中误改源码.h文件导致编译时间长

    最近几天两次触发VS中误改UE4源码头文件,导致需要编译大量源码的情况:再好的习惯也有不可靠的时候,还是需要可靠方案解决这个问题:官方提供了预编译版本(即从Launcher中下载的版本),但是对于程序 ...

  2. 关于H5项目开发中TS(或JS)文件按照顺序编译成一个文件的记录

    由于js的执行特性,多个js文件合成一个文件或者进行多个js文件加载时,时需要按照指定的顺序进行的,否则会出现报错的情况. 我们看一下目前几个主流H5引擎的做法. 白鹭的做法 当前版本的做法 在tsc ...

  3. Gridview中的编辑模板与项模板的用法

    <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server&q ...

  4. Win10系列:JavaScript 项目模板和项模板

    使用Visual Studio 开发Windows应用商店应用时,通过其提供的模板可以帮助我们快速地创建一个应用.其中,在新建一个Windows应用商店应用程序项目时可以在项目模板中选择所需要的模板类 ...

  5. 如何在TFS的过程模板中添加报表

    在新建团队项目的过程中,TFS的"新建团队项目向导"会根据用户选择的过程模板类型(CMMI, Scrum,Agile等)自动为团队项目创建一个SSRS(SQL Server Rep ...

  6. thinkPHP 模板中的语法

    一.导入CSS和JS文件   1.css link       js  scr        <link rel='stylesheet' type='text/css' href='__PUB ...

  7. 模板中的 TemplateBinding 问题

    昨天一个朋友向我求助一个自定义水印控件绑定的问题,问题出在文本框中输入的文本,不能绑定到 相应的依赖属性上(自定义的依赖属性 PassText),他纠结了很久找不出问题所在.问题帮他解决后,这里稍 做 ...

  8. Flask08 包含(include)、继承(extends)、宏???、模板中变量的来源、利用bootstrap构建自己的网页结构

    1 包含 直接把另一个文件的内容,复制粘贴过来 {% include "模板路径" %} 注意:模板都是放在 templates 这个文件夹下面的,可以在里面新建文件夹来进行分离: ...

  9. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

随机推荐

  1. 能改变this各种情况下的总结,还有没有总结到的,请留言!!

    1.. 在函数参数中的,回调函数的this ,指向window 如: promise中的回调函数, 可以在方法外,转存this 2..构造函数中,this指向,实例对象  , 在全局中this是win ...

  2. Object_C与JavaScript交互使用总结

    iOS开发中oc与js交互的方式有很多,我们可以使用流行的第三方库如:WebviewJavaScriptBridge和OVGap,这两个库都是让webview与JS建立起一条桥梁,我们也可以使用iOS ...

  3. 关于编码:Unicode/UTF-8/UTF-16/UTF-32

    关于编码,绕不开下面这些概念 ①Unicode/UTF-8/UTF-16/UTF-32 ②大小端字节序(big-endian/little-endian) ③BOM(Byte Order Mark) ...

  4. Golang socket

    1.本例子实现了一个简单的TCP echo.客户端发送Hello,服务端回应World. 参考:<Socket编程> 2.服务端代码 package main import ( " ...

  5. RHEL 5 , 用安装CD作为YUM的Repository

    官方文档写的非常好 14.5. Upgrading the System Off-line with ISO and Yum Create a target directory to mount yo ...

  6. 关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步

    Xu言: 今天,为了研究一个MySQL主从同步开机后报错 问题,如下图 故障原因分析: 经过分析,可能是主从服务器开机顺序导致.(有待下次断电再次测试) 主从错误提示:日志读取错误的问题.解决方法:更 ...

  7. Lab 3-2

    Analyze the malware found in the file Lab03-02.dll using basic dynamic analysis tools. Questions and ...

  8. 树分治TLE原因

    1.树分治有logn层,如果各层都进行一次memset相当于大小没变,可能TLE: 2.根节点全局变量会变,需要用局部变量记录,还有子树大小. 3.找根的时候的size是当前size,而不是输入数据中 ...

  9. 圆的变化(自定义动画,及自定义UI)

    之前在面试的时候被问到过一个问题,如何实现一个圆沿着一条线由大到小 当时回答的含糊不清,现在已经明白怎么去实现 关键点:Paint,path,canvas 一种方法 在activity中去控制圆的x, ...

  10. apicloud 聊天输入框模块UIChatBox

    点击链接查看详情 https://docs.apicloud.com/Client-API/UI-Layout/UIChatBox 模板中包括,聊天输入框,表情,发送图片,还有拍照,录音,其中也可以放 ...