uni-app 简单上手
1.前言
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
2.项目创建
项目创建有两种方式:
(1)使用npm创建
(2)使用HbuildX编辑器创建
npm创建的具体步骤:
- 1.全局安装vuecli,这个脚手架能帮助快速搭建一个vue项目
npm install -g @vue/cli
- 2.使用vuecli创建uni-app项目
vue create -p dcloudio/uni-preset-vue my-project
- 3.将uni-app项目编译成相应平台的代码
//编译成微信小程序,会在生成一个dist/dev目录,该目录下的mp-weixin文件夹就是编译而成的微信小程序的项目目录
npm run dev:mp-weixin
还可以编译成其他平台的项目,可取值如下:
| 值 | 平台 |
|---|---|
| h5 | H5 |
| mp-alipay | 支付宝小程序 |
| mp-baidu | 百度小程序 |
| mp-weixin | 微信小程序 |
还有其他的值请参阅官网 官网
使用HbuildX编辑器:需要点击鼠标选中相应的菜单即可,步骤详见官网。
3.H5模式的代理配置
H5模式下在调用后台数据时可能才能在跨域问题,需要进行以下配置
在manifest.json配置 h5 字段
"h5" : {
"devServer" : {
"port":8090,
"proxy": {
"/api": {
"target": "http://192.168.1.197:8005/",
"changeOrigin": true,
"pathRewrite": {"^/api" : "api"}
}
}
}
}
4.项目结构
项目代码存放在src目录中,每个文件的作用如下:
pages:组件文件的存放目录
static:静态资源目录
App.vue:应用配置,配置全局样式和应用的生命周期,以及存储全局变量
main.js:初始化入口文件
manifest.json:应用的配置文件,用于指定应用的名称、图标、权限等。
pages.json:对 uni-app 的页面进行全局配置,包括页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar ,全局导航栏等。
uni.scss:定义样式相关的变量

5.应用配置
App.vue是uni-app的主组件,但App.vue本身不是页面,这里不能编写视图元素(所以他只有script模块和style模块)。
这个文件的作用包括:配置应用生命周期函数、引入全局样式、配置全局变量globalData
<script>
export default {
onLaunch: function() {
//应用启动时
console.log('App Launch 应用启动')
},
onShow: function() {
//用户切屏时会触发
console.log('App Show 应用显示')
},
onHide: function() {
//用户切屏时会触发
console.log('App Hide 应用隐藏')
},
globalData:{
globalTitle:"我是全局共享的title"
}
}
</script>
<style>
/*每个页面公共css */
@import './common/uni.css';
</style>
6.页面的编写与注册
页面的编写方式与vue脚手架中的组件一致,分为三个部分:tamplate,script,style
以下为hello组件,pages/home/index.vue
<template>
<view>
<view>主页</view>
</view>
</template>
<script>
export default {
}
</script>
<style>
</style>
页面编写完毕后,需要在pages.json中进行注册。pages字段是一个数组,他的每一个元素都是一个对象,每个对象配置了当前页面的路径,还有导航栏的相关信息
"pages": [
{
"path": "pages/home/index",
"style":{
"navigationBarTitleText":"主页"
}
},
],
7.tabbar导航
在应用中,底部导航是通过在pages.json里面对tabbar项进行配置,传入相关数据生成的。
里面的list字段是一个数组,这个数组指明了每个导航项的名称,图标,选中后的图标路径,还有对应的路由路径。
还有其他的样式也是在tabbar项里面配置,包括文字颜色,导航位置等等
"tabbar": {
"list":[
{
"pagePath":"pages/home/index",
"text":"首页",
"iconPath":"static/icons/ic_home.png",
"selectedIconPath":"static/icons/ic_home_sel.png"
},
{
"pagePath":"pages/data/index",
"text":"数据",
"iconPath":"static/icons/ic_home.png",
"selectedIconPath":"static/icons/ic_home_sel.png"
},
{
"pagePath":"pages/hostory/index",
"text":"历史",
"iconPath":"static/icons/ic_home.png",
"selectedIconPath":"static/icons/ic_home_sel.png"
},{
"pagePath":"pages/mine/index",
"text":"我的",
"iconPath":"static/icons/ic_home.png",
"selectedIconPath":"static/icons/ic_home_sel.png"
}
],
"position":"bottom"
}
8.uni-app与小程序,vue之间的关系
(1)uni-app整合了微信小程序和vue优点,在整体的框架上,uni-app使用的是小程序的架构思想,例如:
- 1.使用专门的json文件对路由进行配置,而不是Vue中的路由
- 2.自带tabbar和顶部导航,直接配置即可使用
- 3.使用小程序的标签(或者说组件),而不是原生的HTML标签
- 4.使用小程序api,而不是浏览器的api
- 5.应用和页面有自己的生命周期,手势操作也是生命周期的一种
相比H5开发,小程序的这种设计有几个好处:
- 1.封装常用的组件,无需引入第三方插件,例如轮播图,区域滚动等等
- 2.封装常用api,无需引入第三方框架,例如各类弹窗提示可直接调用相关api完成
- 3.自带tabbar和顶部导航,直接配置即可使用
- 4.将常用的手势操作封装在生命周期中,例如上拉加载,下拉刷新,可直接进行配置
- 5.支持微信小程序的rpx和h5的vw/vh,方便屏幕适配
(2)在页面的编写上,uni-app使用的是Vue的语法。小程序的每个页面由wxml,wxss,js,json 4个文件构成,而uni-app一个vue文件就是一个页面文件。vue文件除了添加了小程序生命周期函数,其他内容vue完全一致。他有几个要注意的地方:
1.每个页面都是一个vue文件,所以他既拥有小程序的生命周期,他们执行顺序如下:

2.tabbar页面每次切换时并不会销毁,而是触发onShow/onHide,他的onload只会触发一次,页面数据也得以缓存
3.tabbar以外的页面,每次切换时页面都会重载和销毁,数据也会重置
uni-app 简单上手的更多相关文章
- Tinker 热修复框架 简单上手教程
当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...
- Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)
Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...
- 梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
梅沙教育APP简单分析 时间:2017年6月6日 版本:iOS v1.2.21 分析人:Nathaneko-佳钦 备注:仅仅是个人一些简单的分析与见解,非正式产品分析报告,未体验购买相关功能,可能存在 ...
- uni app中使用自定义图标库
项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...
- uni app 零基础小白到项目实战-1
uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...
- Airtest简单上手讲解
Airtest是网易开发的手机UI界面自动化测试工具,它原本的目的是通过所见即所得,截图点击等等功能,简化手机App图形界面测试代码编写工作. 安装和使用 由于本文的目的是介绍如何使用Airtest来 ...
- Android APP 简单高效的禁用横竖屏切换
默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...
- window64 PHP ffmpeg详解简单上手 音频amr转mp3
从网上找了一大堆关于window 64 ffmpeg的信息,都是又长又不关键,让人难消化. 我只要简单的amr转MP3格式而已. 终于搞明白.自己总结了下! 希望能帮助到喜欢言简意赅,一眼上手的同学. ...
- 安卓APP简单后端的搭建
写在前面: 此教程没有用到后端框架.只是单纯用servlet做一个例子,如果是学框架可以不用往下看了 本文适合哪些人:懂java的,会写android单机程序,懂得用HTTPClient等发送请求解析 ...
- 进击的RecyclerView入门一(简单上手)
虽然RecyclerView面世有一段时间了,但由于它的学习成本相对较高,很多码友只是粗略的认识了一下而没有细致的品味RecyclerView的真谛. 那么从现在开始我将带你装逼带你飞,一起领略Goo ...
随机推荐
- Word字体与像素的对应关系
英文字体的1磅(pt),相当于1/72 英寸(inch),约等于1/2.8mm.12PT的字打印出来约为4.2mm.网页中12px的字才相当于12像素. 虽然 四号=(14/72)*96=18.6px ...
- Nuxt Kit 中的模板处理
title: Nuxt Kit 中的模板处理 date: 2024/9/20 updated: 2024/9/20 author: cmdragon excerpt: 摘要:本文详细介绍了在Nuxt ...
- 贝壳找房携手 Flutter,为三亿家庭提供更好的居住服务 | Flutter 开发者故事
贝壳找房是科技驱动的新居住服务平台,致力于在二手房.新房.租房以及装修等居住领域为三亿家庭提供全方位的品质居住服务.如此庞大的用户群体,自然也有着十分多样和复杂的使用场景和需求.以往使用原生开发模式时 ...
- foobar2000 v2.1.5 汉化版(更新日期:2024.09.08)
foobar2000 v2.1.5 汉化版 -----------------------[软件截图]---------------------- -----------------------[软件 ...
- excel江湖异闻录--修迪斯.嗦狸
因为技术出类拔萃,同学都尊称他为"修神",修神的python.vba.Javascript.java.数据库.批处理等众多编程语言都是极强的,以笔者的见识来判断,大佬的vba已经是 ...
- ORM底层逻辑
1 数据库必然是只认识Sql语句 2 ORM的底层必然是ADO.NET 3 ORM也可以说是ADO的一种封装 ORM: 1 通过实体生成Sql语句-大量的反射 2 对应映射关系
- 14 Positional Encoding (为什么 Self-Attention 需要位置编码)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- Android复习(四)权限—>仅在默认处理程序中使用的权限
仅在默认处理程序中使用的权限 注意:本指南主要面向准备在 Google Play 商店发布应用的 Android 应用开发者.不过,无论您在哪里发布 Android 应用,为了保护用户隐私,最好都完成 ...
- 斜率优化DP简单总结&&“土地购买”题解
今天刚刷完了斜率优化DP,简单从头回顾一下. \[首先,能写出DP方程应该是最重要的,毕竟斜率只是用来优化的 \] 那么一个DP方程能用斜率优化,具备一种形式: \[f[i]+s1[i]+A[i]*B ...
- KubeSphere 3.4.0 发布:支持 K8s v1.26
2023 年 07 月 26 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.4.0 正式发布! 让我们先简单回顾下之前三个大版本的主要变化: KubeSphere 3. ...