[TOC]
# UniAPP Hello World项目
我们先从一段简单的脚本开始,感受一下uni-app最核心的功能,uni-app是基于Vue.js的前端框架,支持大部分的
Vue.js特性。
> 这个示例展示了uni-app的核心功能:数据的双向绑定。属性title自动显示在屏幕正中间。
* [ ] 项目:01-UniAPP Hello World
* [ ] 文件:pages/home/index.vue
# 第一个页
文件
```
pages/home/index.vue
```
代码
```html
<template>
<view class="content">
<text class="title">{{title}}</text>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello world'
}
}
}
</script>
<style>
.content {
flex: 1;
justify-content: center;
align-items: center;
}
.title {
font-size: 36upx;
color: #8f8f94;
}
</style>
```
## 配置文件
文件名:page.json
```js
{
//pages数组中第一项表示应用启动页
"pages": [{
"path": "pages/home/index",
"style": {
"navigationBarTitleText": "首页",
}
}, {
"path": "pages/home/about",
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "About",
"navigationBarBackgroundColor": "#F00",
"backgroundColor": "#F8F8F8"
}
}],
"globalStyle": { //全局设置
"navigationBarTextStyle": "black", //导航栏文本颜色
"navigationBarTitleText": "uni-app", //导航栏文本默认文字
"navigationBarBackgroundColor": "#F8F8F8", //导航栏背景颜色
"backgroundColor": "#F8F8F8" //页面的背景色
}
}
```
## 动手试一试
根据向导创建HelloWorld项目,修改模版生成的index.vue文件,实现上述功能。
# 添加新的页面
添加新的页面“pages/home/hello.vue”,这个示例展示了uni-app的核心功能:数据的双向绑定。通过计算属性message对属性name处理封装,在输入框内输入的内容会同步展示在页面的text标签内,如图所示。与传统的HTML不一样的是uni-app自定义了一系列的标签,最基本的view标签可以理解为HTML的div标签。
> 添加新的页面需要修改pages.json文件,参考下一节如何修改pages.json文件
首先定义data域的成员属性name
```html
<script>
export default {
data() {
return {
name: 'Jack',
}
},
computed: {
message() {
return `Hello, ${this.name}`;
}
},
}
</script>
```
然后template节中添加一个输入框,将输入的内容通过v-model绑定到变量name。
~~~
<input type="text" v-model="name" placeholder="你的名字" />
~~~
增加一个计算属性message,定义读取message返回一条消息
```js
computed: {
message() {
return `Hello, ${this.name}`;
}
},
```
这里的this指针指向vue实例本身。使用模版字符串构造复杂的字符串。
```js
`Hello,${this.name}`
```
计算属性message与name属性密切相关,当name值改变的时候message自动更新。
```html
<template>
<view class="content">
<view>
<input type="text" v-model="name" placeholder="你的名字" />
</view>
<view>
<text>{{ message }}</text>
</view>
</view>
</template>
```
* [ ] 项目:01-UniAPP Hello World
* [ ] 文件:pages/home/hello.vue
第一个uni-app项目代码清单
```html
<template>
<view class="content">
<view>
<input type="text" v-model="name" placeholder="你的名字" />
</view>
<view>
<text>{{ message }}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
name: 'Jack',
}
},
computed: {
message() {
return `Hello, ${this.name}`;
}
},
}
</script>
<style>
.content {
display: flex;
flex: 1;
flex-direction: column;
justify-content: center;
align-items: center;
}
input {
border-bottom: 1px solid;
}
.name {
font-size: 60px;
font-weight: 600;
}
</style>
```
> uni-app修改了 Vue.js 的 runtime 和 compiler
> 实现,鉴于跨平台及App特殊需求,相比Web平台, Vue.js 在 uni-app 中使用时会存在一些差异。
![](https://box.kancloud.cn/fa8ab49bad405328a7078f22b3a4498f_1034x791.png)
微信开发者工具调试界面
## 模式配置
在pages.js文件中约定pages数组的第一项为APP的启动页面,在开发阶段,如果要启动的页面不是第一页,例如测试某个页面,例如直接启动新建的hello页面,就必须将hello设置为第一项,这样改动起来非常麻烦,可以通过模式配置来解决。
> condition节的list数组存放多个配置的列表,索引从0开始,current属性用于设置当前启用的模式。
```html
"condition": { //模式配置,仅开发期间生效
"current": 1, //当前激活的模式(list 的索引项,从0开始)
"list": [{
"name": "首页", //模式名称
"path": "pages/home/index", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到。
},
{
"name": "Hello", //模式名称
"path": "pages/home/hello", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到。
}
]
}
```
## 单页程序配置
pages.json示例文件
```html
{
//pages数组中第一项表示应用启动页
//参考:https://uniapp.dcloud.io/collocation/pages
"pages": [{
"path": "pages/home/index",
"style": {
"navigationBarTitleText": "首页",
}
},
{
"path": "pages/home/hello",
"style": {
"navigationBarTitleText": "Hello!"
}
},
{
"path": "pages/home/about",
//重载全局设置
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "About",
"navigationBarBackgroundColor": "#F00",
"backgroundColor": "#F8F8F8"
}
}
],
"globalStyle": { //全局设置
"navigationBarTextStyle": "black", //导航栏文本颜色
"navigationBarTitleText": "uni-app", //导航栏文本默认文字
"navigationBarBackgroundColor": "#F8F8F8", //导航栏背景颜色
"backgroundColor": "#F8F8F8" //页面的背景色
},
"condition": { //模式配置,仅开发期间生效
"current": 1, //当前激活的模式(list 的索引项,从0开始)
"list": [{
"name": "首页", //模式名称
"path": "pages/home/index", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到。
},
{
"name": "Hello", //模式名称
"path": "pages/home/hello", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到。
}
]
}
}
```
- 内容介绍
- EcmaScript基础
- 快速入门
- 常量与变量
- 字符串
- 函数的基本概念
- 条件判断
- 数组
- 循环
- while循环
- for循环
- 函数基础
- 对象
- 对象的方法
- 函数
- 变量作用域
- 箭头函数
- 闭包
- 高阶函数
- map/reduce
- filter
- sort
- Promise
- 基本对象
- Arguments 对象
- 剩余参数
- Map和Set
- Json基础
- RegExp
- Date
- async
- callback
- promise基础
- promise-api
- promise链
- async-await
- 项目实践
- 标签系统
- 远程API请求
- 面向对象编程
- 创建对象
- 原型继承
- 项目实践
- Classes
- 构造函数
- extends
- static
- 项目实践
- 模块
- import
- export
- 项目实践
- 第三方扩展库
- immutable
- Vue快速入门
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入门
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 组件注册
- Prop
- 自定义事件
- 插槽
- 混入
- 过滤器
- 项目实践
- 标签编辑
- 移动客户端开发
- uni-app基础
- 快速入门程序
- 单页程序
- 底部Tab导航
- Vue语法基础
- 模版语法
- 计算属性与侦听器
- Class与Style绑定
- 样式与布局
- Box模型
- Flex布局
- 内置指令
- 基本指令
- v-model与表单
- 条件渲染指令
- 列表渲染指令v-for
- 事件与自定义属性
- 生命周期
- 项目实践
- 学生实验
- 贝店商品列表
- 加载更多数据
- 详情页面
- 自定义组件
- 内置组件
- 表单组件
- 技术专题
- 状态管理vuex
- Flyio
- Mockjs
- SCSS
- 条件编译
- 常用功能实现
- 上拉加载更多数据
- 数据加载综合案例
- Teaset UI组件库
- Teaset设计
- Teaset使用基础
- ts-tag
- ts-badge
- ts-button
- ta-banner
- ts-list
- ts-icon
- ts-load-more
- ts-segmented-control
- 代码模版
- 项目实践
- 标签组件
- 失物招领客户端原型
- 发布页面
- 检索页面
- 详情页面
- 服务端开发技术
- 服务端开发环境配置
- Koajs快速入门
- 快速入门
- 常用Koa中间件介绍
- 文件上传
- RestfulApi
- 一个复杂的RESTful例子
- 使用Mockjs生成模拟数据
- Thinkjs快速入门
- MVC模式
- Thinkjs介绍
- 快速入门
- RESTful服务
- RBAC案例
- 关联模型
- 应用开发框架
- 服务端开发
- PC端管理界面开发
- 移动端开发
- 项目实践
- 失物招领项目
- 移动客户端UI设计
- 服务端设计
- 数据库设计
- Event(事件)
- 客户端设计
- 事件列表页面
- 发布页面
- 事件详情页面
- API设计
- image
- event
- 微信公众号开发
- ui设计规范