目录
0x00 创建uni-app
0x01 目录结构
0x02 项目配置
0x03 页面配置
0x04 常用基础组件
0x05 生命周期
0x06 uni-app路由
0x07 uni-app 语法
0x08 uni-app 布局与样式
0x09 uni-app 基础api
0x0A uni-app 自定义组件
0x00 创建uni-app
命令行创建:(CLI)
vue create -p dcloudio/uni-preset-vue 项目名称
0x01 目录结构
|-components 组件目录
|-hybrid 存放本地网页的目录
|-pages 业务页面文件存放的目录
|-platforms 存放各平台专用页面的目录
|-static 存放静态资源
|-wxcomponents 存放微信小程序原生组件
|-App.vue Vue初始化入口文件
|-main.js 应用配置,用来配置App全局样式以及监听
|-mainfest.json 配置应用名称,appid,logo,版本等打包信息
|-pages.json 配置页面路由 导航条 选项卡等页面类信息
0x02 项目配置
0x03 页面配置
所有页面路由都要写在pages.json中,进行统一的页面管理。
tabbar list 最多5个 最少2个
tabbar 显示一次后,就会自动保存到我们的内存中
0x04 常用基础组件
组件:视图层的基本组成单元
0x05 生命周期
app的生命周期:
页面的生命周期:
只要页面没有unload,那么onLoad 和 onReady(渲染) 只会触发一次
也就是说 页面的隐藏和显示 不断触发的只是 onHide 和 onShow
页面从后台切回前台,并不会再次触发onReady渲染。
onLoad使用场景:
- 请求API接口
- 进行一些页面渲染前的操作
onReady使用场景:
- 获取节点信息,只有当页面渲染完成后,才能获取到正确的DOM节点
0x06 uni-app路由
组件式跳转:
<navigator url="/pages/index2/index2">跳转</navigator>
<navigator url="../index2/index2">相对路径</navigator>
api跳转:
几乎和小程序一样
0x07 uni-app 语法
基本和vue的语法相同
data两种写法的区别
data:{}
data:function(){
return {}
}
前者当页面关闭时,data 中的数据不会自动销毁,再次打开页面时会再次显示上次的数据。
建议采用后者。
class语法:
通过数组的方式可以绑定多个动态的class
<view :class="[background,font]">§121§2</view>
也可以通过对象的形式 条件渲染
<view :class="{dark:isRender}">123231</view>
style语法:
1.原生静态写法
2.对象写法:
<view :style="{'background':background}">12323</view>
vm层background绑定的值为red
3.数组写法
事件监听:
input 监听input框变化事件
<input type="text" @input="onChange" placeholder="搜索">
函数中可以通过参数接受 附加消息
0x08 uni-app 布局与样式
uni-app 采用 和微信小程序相同的rpx
也就是说 不论多大 的屏幕宽度 都是750rpx
rpx的计算方法:
设计稿宽度750px,100px的宽度 换算 750rpx * 100px/750px =100rpx
设计稿宽度640px,100px的宽度 换算:750rpx * 100px/640px = 117rpx
导入样式:
@import "地址"
0x09 uni-app 基础api
非h5端不支持 window,document等浏览器的js api
所有平台均支持标准js
0x0A uni-app 自定义组件
其实就是vue的自定义组件
第一步,项目根目录创建components 目录
第二步,创建组件 .vue
第三步,import 引入组件
第四步,注册组件
第五步,传参
第六步,事件通信
这里强调几点:
1. import 绝对路径前 需要加@
例如:
import list from '@/components/list.vue'
2.props 接收父组件的传参
可以是字符串数组
props: ['title', 'likes', 'isPublished', 'commentIds', 'author']
也可以是对象
props:{
name:{
type:String,
default:''
}
},
props接收到的传参可以通过{{}}直接使用
同样这些变量也会被添加到Vue实例中,也就说通过this.变量名也可以拿到对应的值。