# 快应用代码构成
一个快应用项目包含了下面四种不同类型的基本文件:
- .json 后缀的配置文件
- .qxml 后缀的模板文件
- .css 后缀的样式文件
- .js 后缀的脚本逻辑文件
# JSON 配置
JSON 是一种数据格式。在快应用中,JSON 主要用来项目的静态配置。
项目根目录有一个 app.json ,各页面路径下也会有 json 文件,我们依次来说明一下它们的用途。
# 全局配置 app.json
app.json 是当前快应用的全局配置,包括了快应用的所有页面路径、窗口样式、底部 tab 等。 项目里边的 app.json 配置内容如下:
{
"pages": ["pages/index/index", "pages/detail/detail"],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "quickApp",
"navigationBarTextStyle": "black"
}
}
2
3
4
5
6
7
8
9
这几个配置项的大概含义如下:
pages字段 —— 用于定义快应用所有页面的路径。window字段 —— 配置快应用所有页面的标题,文字颜色等。
其他配置项细节可以参考文档 快应用的配置 app.json 。
# 页面配置 page.json
这里的 page.json 代指各快应用页面的配置,文件名取决于各页面名。app.json 中定义的 window 配置对所有页面都起作用,如果想针对某个页面做特殊的配置,可以通过页面配置 page.json 。 page.json 中的配置项优先级高于 app.json 的。
其他配置项细节可以参考文档 页面配置 。
# JSON 注意事项
- JSON 的 Key 必须包裹在一个双引号中,漏写双引号或者把双引号写成单引号都会导致报错。
- JSON 文件中无法使用注释。
- JSON 文件内容不可为空,如果没有配置项,可以保留一个
{}
JSON 的值只能是以下几种数据格式,其他任何格式都会触发报错,例如 undefined。
- 数字,包含浮点数和整数
- 字符串,需要包裹在双引号中
- Bool 值,true 或者 false
- 数组,需要包裹在方括号中 []
- 对象,需要包裹在大括号中 {}
- Null
# QXML 模板
网页开发采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样式,JS 用于编写页面逻辑和交互。
快应用中也是类似的,不同的是,快应用中用 QXML 替代了HTML。打开一个 QXML 文件示例:
<view class="box">
<view class="userinfo">
<button qa:if="{{!hasUserInfo}}">获取头像昵称</button>
<block qa:else>
<image src="{{userInfo.avatarUrl}}" background-size="cover"></image>
<text class="name">{{userInfo.nickName}}</text>
</block>
</view>
<view class="motto">
<text class="text">{{motto}}</text>
</view>
</view>
2
3
4
5
6
7
8
9
10
11
12
QXML 的写法和 HTML 非常相似,由标签、属性等等构成。两者的差异主要下面几个:
标签不同
快应用中封装了一套不同于网页的基本组件。提供了地图、视频、音频等组件能力。体现在
QXML中就是不同于HTML的标签名,如view,button,text,map,picker等。更多详细的组件讲述参考下个章节 快应用的能力
QXML带有指令系统和表达式绑定详细的文档可以参考 QXML
QXML不允许加载 js
# 样式
和网页的 CSS 大体一致,也有一些扩充和修改。
支持新的尺寸单位 rpx
全局的样式和局部样式。
app.css作为全局样式,会作用于当前快应用的所有页面,局部页面样式page.css仅对当前页面生效,自定义组件 css 仅对该组件生效。
# JS 逻辑交互
快应用采用 JS 来编写逻辑交互。用于响应用户操作、获取网络数据、处理逻辑计算等等。
举一个响应点击事件的例子。
<view>
<view>{{ message }}</view>
<button bindtap="handleClick">按钮</button>
</view>
2
3
4
我们希望点击 button 按钮的时候,界面上 message 的值显示成 "Hello QuickApp",我们可以在 JS 文件里边声明 handleClick 方法来响应这次点击操作:
Page({
data: {
message: 'Hello World
},
handleClick: function() {
this.setData({ message: "Hello QuickApp" })
}
})
2
3
4
5
6
7
8
9
JS 文件和 QXML 文件通过 bindtap="handleClick" 这个属性声明产生关联。详情可以参考 QXML - 事件 。
另外,不同于浏览器端的 JS , 快应用提供了更为丰富的 JS API,用于获取用户信息、本地存储、支付等等。详情可以参考 快应用的 API 。
在线客服