uni-app
由dcloud 公司开发的多端融合框架,一次开发多端运行是一个使用。
通过使用Vue.js
+小程序的api
来开发所有前端应用的框架,开发者编写一套代码,来实现多端混合开发Hybrid:
可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台
更多可了解uni-app官网
使用uni开发前您需要安装:
hbuilder首次运行需要下载对应的插件
运行到安卓模拟器,有视图差别
运行可以需要一定的时间
有时需要不断刷新页面或重新运行
h5
运行tip:首次运行需要安装插件
插件安装成功后关闭内置运行,从新打开
tip:首次运行需要设置,之后可直接运行
01 在微信开发工具设置-服务器端口
02 HBuilderx配置 微信开发工具的地址
03 运行设置
03.1 配置微信小程序id
04 运行(以上设置完毕就可以运行)
01 在微信开发工具设置-服务器端口
02 HBuilderx配置 微信开发工具的地址
03 运行设置
03.1 配置微信小程序id
04运行
在小程序成功运行案例
说明:不同的模拟器有不同的端口号:
夜神模拟器端口号:62001
海马模拟器端口号:26944
逍遥模拟器端口号:21503
MuMu模拟器端口号:7555
天天模拟器端口号:6555
雷电模拟器端口号:5554
tip:
app运行不出数据 大部原因写得不够标准
首次运行需配置模拟器端口号
首次运行需要安装插件
01 打开模拟器或者手机
02 配置模拟器的端口
03 运行到模拟器
01 打开模拟器或者手机
02 配置模拟器的端口
03 运行到模拟器
03.1 第一次运行需要下载插件
03.2 插件安装成功 开始运行
{{表达式}}
v-text=“表达式”
//简单的js运算
{{2+3}}
//js方法调用
{{title.length}}
{{title.split("").reverse().join("")}}
//3元运算符
<view>{{title.length>15?'长度很长':'字少事大'}}</view>
v-html 富文本
v-if
v-else-if
v-else
v-show
三元运算符
- 字符串,数字,列表,对象都可以遍历
- < view v-for=“(item,index) in list” :key=“index”>{{index+1}} {{item}} < /view>
- 一定要保证兄弟元素间的key值是唯一
<button v-bind:disabled=“true”>
<button :disabled="true">
01 默认
:value="单向绑定"
02 input
v-model=“双向绑定”
03
@change=“$event.detail.value”
事件,事件的值$event.detail.value
01 事件绑定
<button v-on:click="响应">button>
简写绑定
<button @ click="响应"> button>
02 事件行内处理
<view @ click="num++"> view>
03事件响应函数 (函数在methods定义)
<view @ click="say"> </view>
04事件传参
//$event 是一个固定写法 代表事件对象
不写参数
<view @ click="say"> </view>
等同于
<view @ click="say()"> </view>
等同于
<view @ click="say($event)"> </view>
say(str = "你好") {
// 弹出提示
uni.showModal({
title: str
})
}
页面配置 pages.json
:
全局样式 globalStyle
:默认页面的样式会应用全局样式
页面写了style 配置,那么用的配置覆盖全局的配置
页面 pages
: path
页面路径; style
页面样式
data数据
methods方法
computed计算
watch监听
directive指令
filter过滤
vue生命周期
小程序的生命周期
小程序的全局方法
app全局方法
路由组件官方文档
<navigator url="../options/options" open-type="reLauch"></navigator>
//tip:文件名不能加后缀 .vue
//url 跳转的页面
//open-type打开类型:
//navigate跳转
//redirect重定向(当前页面不留历史纪录);
//navigateBack 返回
//reLauch 重启
//switchTab 跳转底部栏
语法:
传递:
<navigator url="../options/options?count=5&title=life">选项</navigator>
接收:
onLoad(option) {
//option的值
this.count = option.count
uni.setNavigationBarTitle({
title: option.title
})
},
案例
methods: {
goOption() {
uni.navigateTo({
url: "../options/options"
})
},
}
uni.redirect({
url: "../options/options?count=100&title=来自js跳转"
})
uni.navigateBack({ })
uni.switchTab({ })
uni.reLunch({ })
01 在app.vue 定义globalData:{num:100}
02 要使用的页面回去app
var app=getApp()
03 获取globalData的值
onShow(){
this.num=app.globalData.num
}
04 更新 globalData值
addNm(){
app.globalData.num++;
this.num=app.globalData.num
}
案例
条件编译目的:不同的平台展示不同的特性与功能
APP
app端H5
网页端MP
小程序 : MP-WEIXIN
微信小程序<!-- # ifdef H5 -->
H5:下载app 获取优惠卷
<!-- # endif -->
/* #ifdef APP */
.active{color:red}
/* #endif */
// #ifdef APP-PLUS
uni.showModal({
title:"你好App用户"
})
// #endif
“style”:{
"h5":{
"titleNView":{
"titleText":"我是H5"
}
},
"app-plus": {
"titleNView":false //隐藏导航栏
}
}
// #ifdef MP-WEIXIN || APP
{
"path":"pages/condition/we",
"style":{
"navigationBarTitleText": "小程序专有页面"
}
},
// #endif