前言:
这篇文章主要写的是uniapp的基础知识,可以让大家快速上手uniapp,同时避掉一些可能踩到的坑。

一. 什么是uniapp

  1. uniapp是由dcloud 公司开发的多端融合框架。uniapp的出现让我们的开发更为方便,一次开发,多端运行。更重要的是学习成本不会很大,因为uniapp主要是Vue语法加上小程序的api,学过vue和小程序,再学uniapp会更加得心应手。
  2. 介绍一下端
    端分为App端(HTML+ nvue(原生view)native.js(js原生沟通的桥梁) weex内置ios/安卓的模块使用),H5端(h5专用api),各种小程序(微信为主)

二. uniapp应用

1.准备工具

我们在开发uniapp项目之前需要做如下准备,首先就是开发与编译工具Hbuilderx ,最好是用它,毕竟官方推荐,使用起来更加方便。还有用来微信小程序预览测试工具,微信小程序开发工具。第三个就是安卓模拟器/真机,用来运行app。这里大家可以使用mumu模拟器,或者雷电模拟器。

2. 创建我们的第一个uniapp项目

在这里插入图片描述

3. uniapp项目组成

我们创建一个项目之后,发现里面主要由以下几部分组成

pages页面
index首页
index.vue首页代码
static静态资源
App.vue根节点
index.html模板文件H5
main.js项目入口
manifest.json项目配置
uni.css样式表

4. 如何运行到多端

  1. H5
    点击运行到内资浏览器即可
  2. APP
    01 打开模拟器或者手机
    02 配置模拟器端口
    03 运行到模拟器

这里给大家写一下常见模拟器的端口号
夜神模拟器端口号:62001
海马模拟器端口号:26944
逍遥模拟器端口号:21503
MuMu模拟器端口号:7555
天天模拟器端口号:6555
雷电模拟器:5554

  1. 微信小程序
    01 打开开发工具的服务端口
    02 HBuilder X配置 微信开发工具地址
    03 配置微信小程序id
    04 运行到微信小程序

Tips:
hbuilder可能需要下载对应的插件
运行到安卓模拟器,有视图差别
运行可能需要一定的时间,大家要耐心等待哦

三. uniapp语法

1. uni-app页面

我们新建一个页面,然后进行页面配置。页面配置在==pages.json==。我们可以配置全局样式==globalStyle==。默认页面的样式会应用全局样式,页面写了style 配置,那么用的配置覆盖全局的配置

pages页面有path页面路径和style 页面样式。

2. Vue语法

文本渲染

{{表达式}}
v-text=“表达式”
表达式 (简单的js运算 ,js方法调用 ,3元运算符)
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值是唯一

属性绑定(v-bind ,也可以简写为:)
<button v-bind:disabled=“true”>
<button :disabled="true">

表单绑定

默认 :value=“单向绑定”
input v-model=“双向绑定”
@change=“$event.detail.value”事件

事件的值$event.detail.value

事件

事件绑定: < view v-on:click=“响应” >
简写绑定:<view @click=“事件响应” >
事件行内处理 <view @click=“num++” >
事件响应函数 (函数在methods定义)
<view @click=“say”>


事件传参
不写参数
@click="say" 等同于 @click=“say()” 等同于 @click=“say($event)”
$event 是一个固定写法 代表事件对象


事件对象 $event/e
function say(e){ }
其中 target目标对象
dataSet 组件传参
<view :data-title="title" @click="say"> function say(e){ e.target.dataset.title }

3. vue选项

data 数据 methods 方法 computed 计算
watch监听 directive指令 filter过滤

4 .uni-app的生命周期

Vue的生命周期

创建 beforeCreate created
挂载 beforeMount mounted
更新 beforeUpdate updated
卸载 beforeDestroy destroyed

小程序的生命周期

onLoad 加载 (能够获取页面的参数 开启ajax,定时器,事件监听 像vue的created )
onShow 显示( 播放媒体)
onReady准备 (获取节点信息 像vue的mounted )
onHide 后台运行 停止播放媒体
onUnload 卸载 停止事件监听与定时器

小程序的全局方法

onPullDownRefresh 下拉刷新
onReachBottom() 触底更新
onShareAppMessage右上角分享
onPageScroll 页面滚动
onShareTimeline 分享到朋友圈

app的全局方法

onBackPress 手机的返回键被点击 onNavigationBarButtonTap 导航栏按钮被点击

5.表单

button 按钮
type 类型(primary主要 warn警告 default 默认 ) size=“mini”
disabled 是否可用


input
value值
v-model对表单双向绑定
@change=“$event.detail.value”
placeholder 提示文本


picker
mode 模式
time时间 date 日期 region地区
value值
@change=“$event.detail.value”


slider 滑块
value 值 max 最大 min 最小
@change=“$event.detail.value”

四 . 路由

·路由组件
navigator 导航
url 跳转页面的地址
open-type 打开类型
( navigate跳转
redirect重定向 (当前页面不留历史记录)
navigateBack返回
relauch 重启
switchTab 跳转底部栏 )

路由传参
传递 url:path?name=mumu&age=18
接收
onLoad(option){} option的值{name:“mumu”,age:18}

路由api
uni.navigateTo({url}) 跳转
uni.redirectTo({url}) 重定向
uni.navigateBack() 返回
uni.switchTab() 底部栏切换
uni.reLaunch() 重启

路由配置 tabBar
color
selectedcolor
list
(pagePath iconPath selectedIconPath text )

获取当前页面 getApp
01 在App.vue 定义globalData:{num:100}
02 要使用的页面获取app
var app = getApp()
03获取globalData的值
onShow(){ this.num = app.globalData.num }
04 更新globalData值
addNum(){ app.globalData.num++; this.num = app.globalData.num }

获取页面栈 getCurrentPages
var page = getCurrentPages();
获取当前的页面栈,是一个数组(1-5)

uni.navigateBack({delta:page.length}) page[page.length-1] 获取当前页面的信息(不要去修改)

五. 条件编译

为了让不同的平台展示不同特性与功能 ,在小程序,H5,App中可以显示不同的内容
模板条件编译
格式 <!-- #ifdef H5 --> 内容 <!-- #endif -->
条件 APP App端 H5 网页 MP 小程序(MP-WEIXIN 微信小程序
css条件编译(这里设置了APP的颜色,大家可以仿照写其他端的)

/* #ifdef APP */
>    .active{color:red}
>    /* #endif */

js条件编译 (这里设置了APP的提示框,大家可以仿照写其他端的)

	// #ifdef APP
	uni.showModal({ title:"你好App用户" }) 
	// #endif
> 

条件配置在 pages.json中配置(可以让某个页面只在某端实现,某端特有,其他端看不到)

	“style”:{   
	"h5":{
>       "titleNView":{
>           "titleText":"我是H5"
>        }   },  
>   "app-plus": {
>       "titleNView":false //隐藏导航栏   } } 
>       		
>       // #ifdef MP-WEIXIN	|| APP	 { 	"path":"pages/condition/we", 	
>       "style":{ 		
>       "navigationBarTitleText":
> "小程序专有页面" 	} }, 
> // #endif

条件编译设置完之后大概是这种效果
在这里插入图片描述
祝大家学的开心,学的愉快!!!
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐