uni-app 超详细教程( 附送250套精选项目源码)

news2024/11/23 6:41:52

一,uniapp 介绍 :
官方网页
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

简单说: 1次开发 多端运行

二,准备工具
Hbuilderx (开发与编译工具)

微信小程序开发工具(微信小程序预览测试)

安卓模拟器/真机
运行app

三,新建项目 / 认识界面

1,新建项目

  1. 点击HbuilderX菜单栏文件>项目>新建
  2. 选择uni-app,填写项目名称,项目创建的目录
    在这里插入图片描述

2,认识界面

在这里插入图片描述
在这里插入图片描述

2.1 介绍项目目录和文件作用
  1. pages.json :文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等
  2. manifest.json :文件是应用的配置文件,用于指定应用的名称、图标、权限等。
  3. App.vue:是我们的跟组件,所有页面都是在App.vue下进行切换的,是页面入口文件,可以调用应用的生命周期函数。
  4. main.js:是我们的项目入口文件,主要作用是初始化vue实例并使用需要的插件。
  5. uni.scss:文件的用途是为了方便整体控制应用的风格。比如按钮颜色、边框风格,uni.scss文件里预置了一批scss变量预置。
  6. unpackage:就是打包目录,在这里有各个平台的打包文件
  7. pages:所有的页面存放目录
  8. static:静态资源目录,例如图片等
  9. components:组件存放目录

3,全局配置和页面配置

通过globalStyle进行全局配置

用于设置应用的状态栏、导航条、标题、窗口背景色等。详细文档

在这里插入图片描述

注意:

如果是第一次使用,需要先配置小程序ide的相关路径,才能运行成功
微信开发者工具在设置中安全设置,服务端口开启

为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范:
  • 页面文件遵循 Vue 单文件组件 (SFC) 规范
  • 组件标签靠近小程序规范,详见uni-app 组件规范
  • 接口能力(JS API)靠近微信小程序规范,但需将前缀 wx 替换为 uni,详见uni-app接口规范
  • 数据绑定及事件处理同 Vue.js 规范,同时补充了App及页面的生命周期
  • 为兼容多端运行,建议使用flex布局进行开发

四,运行多端

1,H5

在这里插入图片描述

在这里插入图片描述

2,小程序

01 打开开发工具的服务端口

在这里插入图片描述

02 HBuilderx配置 微信开发工具的地址

在这里插入图片描述
在这里插入图片描述

03 配置微信小程序id

在这里插入图片描述

04 运行到微信小程序 在这里插入图片描述

3,App

01 打开模拟器或者手机

在这里插入图片描述

02 配置模拟器的端口

在这里插入图片描述
在这里插入图片描述

各模拟器 端口号:

夜神模拟器端口号:62001

海马模拟器端口号:26944

逍遥模拟器端口号:21503

MuMu模拟器端口号:7555

天天模拟器端口号:6555

03 运行到模拟器

在这里插入图片描述

在这里插入图片描述

4,注意项

  1. hbuilder可能需要下载对应的插件
  2. 运行到安卓模拟器,有视图差别
  3. 运行可以需要一定的诗句

五,语法:

1,模板语法

1.1,文本渲染
 
  1. {{表达式}}v-text=“表达式”

  2. 表达式简单的js运算{{2+3}}js方法调用{{title.length}}{{title.split("").reverse().join("")}}3元运算符<view>{{title.length>15?'长度很长':'字少事大'}}</view>

  3. v-html 富文本

1.2,条件渲染
v-ifv-else-ifv-elsev-show通过三元运算符
1.3,列表选项

字符串,数字,列表,对象都可以遍历

<view v-for="(item,index) in list" :key="index">{{index+1}}  {{item}}</view>

一定要保证兄弟元素间的key值是唯一

1.4, 属性绑定
 
  1. <button v-bind:disabled=“true”>

  2. <button :disabled="true">

1.5,表单绑定

默认

:value="单向绑定"

input

v-model=“双向绑定”
 
  1. @change=“$event.detail.value”

  2. 事件,事件的值$event.detail.value

1.6,事件
1.6.1,事件绑定:
<view v-on:click="响应"

简写绑定:

<view @click="事件响应"

事件行内处理

<view @click="num++"

事件响应函数 (函数在methods定义)

 
  1. <view @click="say"

  2. <view @click="say"

1.6.2,事件传参

不写参数

 
  1. @click="say"

  2. 等同于

  3. @click=“say()”

  4. 等同于

  5. @click=“say($event)”

$event 是一个固定写法 代表事件对象

 
  1. @click=“doit(str)”

  2. doit(str="你好"){uni.showModal({title:str})

  3. }

1.6.3,事件对象 $event/e

 
  1. function say(e){

  2. }

  3. // target目标对象

  4. // dataSet 组件传参

  5. <view :data-title="title" @click="say">

  6. function say(e){e.target.dataset.title

  7. }

2,uni-app页面 配置

页面配置 pages.json

globalStyle 默认页面的样式会应用全局样式

页面写了style 配置,那么用的配置覆盖全局的配置

**pages** 页面

path页面路径
style 页面样式

3,vue选项

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

六,uni-app的生命周期

1,Vue的生命周期

创建
1. beforeCreate
2. created

可以使用this,没有dom

作用:

  1. 初始数据
  2. 注册监听事件
  3. 开启定时器
  4. ajax请求
挂载
1. beforeMount
2. mounted

可以操作dom(节点)

作用:

  1. 操作dom
  2. ajax请求
更新
1. beforeUpdate
2. updated
卸载
1. beforeDestroy
2. destroyed

作用:

  1. 移除事件监听
  2. 移除停止定时器

2,小程序的生命周期

加载
onLoad

作用:

能够获取页面的参数
开启ajax,定时器,事件监听
像vue的created

显示
onShow

作用:

播放媒体

准备
onReady

作用:

获取节点信息
像vue的mounted

后台运行
onHide

作用:

停止播放媒体

卸载
onUnload

作用:

停止事件监听与定时器

3,小程序的全局方法

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

4,app的全局方法

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

七,路由

1,路由组件

导航 navigator

url 跳转页面的地址

打开类型 open-type

navigate跳转
redirect重定向(当前页面不留历史记录)
navigateBack返回
relauch 重启
switchTab 跳转底部栏

2,路由传参

传递

url:path?name=mumu&age=18

接收

onLoad(option){}

option的值{name:“mumu”,age:18}

3,路由api

跳转

uni.navigateTo({url})

重定向

uni.redirectTo({url})

返回

uni.navigateBack()

底部栏切换

uni.switchTab()

重启

uni.reLaunch()

4,路由配置 + (底部选项栏配置)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

语法解释

"borderStyle"“边框颜色”,
"selectedColor": “字体选中后的颜色”,
"backgroundColor":“底部栏背景颜色”,
color”: “默认字体颜色”,
"list": [{ 选项列表
"pagePath": "页面路径",
"iconPath": “未选择时的图片(图片路径)”,
"selectedIconPath": “选择时的图片(图片路径)”,
"text"“底部选项文字”
},

// 配置tabbar导航栏"tabBar": {"borderStyle": "#eaeaea","selectedColor": "#f12525","backgroundColor": "#ffffff","color": "#444444","list": [{"pagePath": "pages/index/index","iconPath": "static/img/home.png","selectedIconPath": "static/img/home-hl.png","text": "首页"},{"pagePath": "pages/cate/cate","iconPath": "static/img/type.png","selectedIconPath": "static/img/type-hl.png","text": "分类"},{"pagePath": "pages/member/member","iconPath": "static/img/ceo.png","selectedIconPath": "static/img/ceo-hl.png","text": "会员"},{"pagePath": "pages/Cart/Cart","iconPath": "static/img/cart.png","selectedIconPath": "static/img/cart-hl.png","text": "购物车"},{"pagePath": "pages/mine/mine","iconPath": "static/img/mine.png","selectedIconPath": "static/img/mine-hl.png","text": "我的"}]},
注意:

底部选项**最多设置5个最少2个**

5,获取当前页面 getApp

 
  1. 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
}

6,获取页面栈 getCurrentPages

 
  1. var page = getCurrentPages();

  2. uni.navigateBack({delta:page.length})

获取当前的页面栈,是一个数组(1-5)

page[page.length-1] 

获取当前页面的信息(不要去修改)

八,条件编译

目的:

不同的平台展示不同特性功能
条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

介绍:

写法以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

  • #ifdef:if defined 仅在某平台存在
  • #ifndef:if not defined 除了某平台均存在
  • %PLATFORM%:平台名称

在这里插入图片描述

1, 模板条件编译

格式
 
  1. <!-- #ifdef H5 -->**内容**

  2. <!-- #endif -->

条件

APP —— App端
H5 —— 网页
MP —— 小程序
MP-WEIXIN —— 微信小程序

2,css条件编译

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

  2. /* #endif */

3,js条件编译

 
  1. // #ifdef APP-PLUSuni.showModal({title:"你好App用户"})

  2. // #endif

4,条件配置

 
  1. pages.json“style”:{"h5":{"titleNView":{"titleText":"我是H5"}},"app-plus": {"titleNView":false //隐藏导航栏}

  2. }

 
  1. // #ifdef MP-WEIXIN || APP

  2. {"path":"pages/condition/we","style":{"navigationBarTitleText": "小程序专有页面"}

  3. },

  4. // #endif

附送250套精选项目源码

源码截图

源码获取:关注公众号「码农园区」,回复 【源码】,即可获取全套源码下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息泄露中的目录遍历,phpinfo,备份文件下载

一、目录遍历漏洞 1.什么是目录遍历漏洞 指的是在没有授权的情况下读取文件&#xff0c;某些情况下还可对服务器里的文件任意写入 2.目录遍历漏洞成因 网站配置存在缺陷&#xff0c;对输入目录缺少验证&#xff0c;没过滤../之类的目录跳转符&#xff0c;可通过提交目录跳转…

速卖通新卖家测评攻略:从入门到精通

在电商行业中&#xff0c;测评被广泛认为是提升产品转化率和销量的有效手段。对于速卖通的卖家而言&#xff0c;测评的必要性更是显而易见。测评&#xff0c;本质上与国内电商的补单行为相似&#xff0c;是一种通过增加销量来提升产品权重的方法。 特别是在竞争激烈的类目中&a…

【触摸案例-手势解锁案例-按钮高亮 Objective-C语言】

一、我们来说这个self.btns,这个问题啊,为什么不用_btns, 1.我们说,在懒加载里边儿,经常是写下划线啊,_btns,为什么不写,首先啊,这个layoutSubviews:我们第一次,肯定会去执行这个layoutSubviews: 然后呢,去懒加载这个数组, 然后呢,接下来啊,走这一句话, 第一次…

使用 Gitea 进行私有 Git 仓库管理

在本文中&#xff0c;我们将介绍如何使用 Gitea 搭建并管理私有 Git 仓库。Gitea 是一个轻量级的 Git 服务&#xff0c;提供了类似于 GitHub 的功能&#xff0c;适合个人和小团队使用。我们将通过以下步骤来完成搭建和配置 Gitea 服务器。 步骤一&#xff1a;安装 Gitea 首先…

关于Checkmarx、CodeQL和Semgrep的测试结果比较

关于Checkmarx、CodeQL和Semgrep的测试结果比较 随着SAST工具的不断的推陈出新&#xff0c;为了比较一些新的工具是否能够提供更好的扫描结果&#xff0c;针对Checkmarx、CodeQL以及Semgrep几个工具进行了测试评估&#xff0c;具体的评估结果仅供参考。本文列列举了工具的各个方…

SAP生产订单常用状态以及

常用系统状态&#xff1a; 状态 状态 CRTD 已建立 REL 已核发 CNF 已确认 PCNF 已部份确认 DLV 已交货 DLT 删除指示码 LKD 已锁住 TECO 技术完成 GMPS 已发料 关闭 关闭 工单结案前的生产报表分析 路径:后勤系统- 生产- 现场控制- 信息系统-订单信息系…

使用PyQt5设计系统登录界面—了解界面布局

前言&#xff1a;自学的过程中充分认识到网络搜索的重要性&#xff0c;有时候一篇通俗易懂的文章会让我这种入门级的小白更易上手&#xff0c;俗话说“开头难&#xff0c;难开头”&#xff0c;只要开了一个好头就不怕知难而退。 如何安装QT Designer界面设计所需要的环境 1. 如…

服务器数据恢复—ESXi虚拟机中MySQL数据库数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌EVA某型号存储中部署VMware ESXi虚拟化平台&#xff0c;数据盘&#xff08;精简模式&#xff09;快照数据盘&#xff0c;虚拟机中有mysql数据库。 服务器故障&#xff1a; 机房意外断电导致该存储中的一台VMware虚拟机无法启动&#xff0…

网络安全之动态路由入门

动态路由协议有几种&#xff1a;RIP,OSPF,EIGRP,ISIS,BGP 动态路由工作原理&#xff1a; 例如&#xff1a; 若A区域运行的协议与B中的不同&#xff0c;数据从1到4走A区域还是走B区域&#xff0c;则看A,B两区域的优先级&#xff08;priority preference或AD——管理距离&#…

数据流转的艺术:深度解析tee命令的应用技巧

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 数据流转的艺术&#xff1a;深度解析tee命令的应用技巧 前言tee命令简介tee命令的基本用法tee命令的高级功能 前言 在Linux的世界里&#xff0c;有一位不太引人注意但却异常强大的命令&#xff0c;那…

VBA随机取数在Excel中的应用---10以内加法出题及计算得分

VBA随机取数在Excel中的应用---10以内加法出题及阅卷 小学生加减乘除的计算,只要不是应用题,完全可以用VBA随机取数解决,甚至连阅卷都可以用VBA操作。现在写一个最简单的,10以内的加法。 用到两个关键点:随机取数Int(0 + 11 * Rnd())和字典去重(Scripting.Dictionary) …

红黑树(RBTree)认识总结

一、认识红黑树 1.1 什么是红黑树&#xff1f; 红黑树是一种二叉搜索树&#xff0c;与普通搜索树不同的是&#xff0c;在每个节点上增加一个“颜色”变量 —— RED / BLACK 。 通过对各个节点颜色的限制&#xff0c;确保从 根 到 NIL &#xff0c;没有一条路径会比其他路径长出…

论文| Visual place recognition: A survey from deep learning perspective

2021-Visual place recognition: A survey from deep learning perspective

anconda创建虚拟环境,使用虚拟环境(基于win平台)

假设已经安装了anconda&#xff0c;打开anaconda的 shell。 查看已存在的虚拟环境&#xff0c;base是默认的&#xff0c;不用理会&#xff0c;后面的yolov5就是用户创建的 #查看有那些虚拟环境 (base) PS C:\Users\x> conda info -e # conda environments: # base …

hadoop---基于Hive的数据仓库相关函数机制及其优化方案

Hive相关函数&#xff08;部分&#xff09;&#xff1a; if函数: 作用: 用于进行逻辑判断操作 语法: if(条件, true返回信息,false返回信息) 注意: if函数支持嵌套使用 select if(aa,’bbbb’,111) fromlxw_dual; bbbb select if(1<2,100,200) fromlxw_dual; 200nvl函数:…

Windows平台下Redis通过配置文件解决密码重置问题

Reids会在每次重启服务器后重置通过指令设置的密码&#xff0c;通过修改配置文件中的密码则可以避免这一问题&#xff0c;保证密码的永久有效性。&#xff08;注意点&#xff1a;博主已经配置好了Redis的系统环境变量&#xff0c;所以不用进入到Redis目录下&#xff0c;也能直接…

MYSQL RR隔离级别下无索引更新是否表锁?

最近在MYSQL菜鸟群有群友提问,说他看了某个公众号里面文章说 "MYSQL RR隔离级别下无索引更新会导致表锁! " 他表示疑惑,而且不仅是他,还有很多个她在不同的群里同样表示疑惑! 下面是群友的截图 是啊 MYSQL 以及进化到了8.3.0版本了,普遍都使用5.7和8.0版本.而且还…

运营商实名认证API接口如何对接

运营商实名认证API接口又叫手机号实名认证API接口&#xff0c;根据入参字段不同&#xff0c;分为两类。一类是运营商手机二要素核验API接口&#xff0c;一类是运营商手机三要素核验API接口。运营商手机二要素验证API接口指的是传入姓名及手机号码&#xff0c;通过运营商权威渠道…

FX95GT FX505GT windows 11 触摸板安装

FX95GT FX505GT windows 11 触摸板驱动安装 如果正常使用 exe 文件安装不上&#xff0c;请在 ‘设置’ 》 ‘系统信息 ’》 驱动下载地址 如果正常使用 exe 文件安装不上&#xff0c;请在 ‘设置’ 》 ‘系统信息 ’》 高级系统设置 设备管理 在电脑上点右键&#xff0c;选择…

合肥先进光源束测步进电机控制机箱接线方式

合肥先进光源束测步进电机控制方案介绍 对上篇文里的接线方式做个修订&#xff1a; EtherCat电机控制机箱接线规范 驱动器 控制器 接线方式 使用鸣志 STF05-ECX-H驱动器&#xff0c;每个机箱配8个驱动器使用汇川的H5U-1614MTD etherCat控制器每个驱动器的电源从2分8的分配端子…