# 快应用代码构成
一个快应用项目包含了下面四种不同类型的基本文件:
- .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 。
在线客服