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 ...
随机推荐
- Angular 18+ 高级教程 – Angular CLI
前言 这篇会列出我开发中常用的 command. 并给予一些简单的说明 Command Format 先了解一下几个简单的 command 格式: 缩写 shortform 这个是完整版 ng gen ...
- tailwindcss 3.3.3(完成入门,需要补充每个单独样式)
归纳 修饰符堆叠 <button class="dark:md:hover:bg-fuchsia-600"> 以下为修饰符 伪类伪元素 使用方法: 在实用程序类前添加h ...
- httpclient调用接口
有时候会将参数(返回结果)压缩(解压),加密(解密) 将json参数通过GZip压缩 Base64加密 1 public static String gzipAndEncryption(String ...
- namespace hdk
没有高精类,因为这玩意太占内存了,正在优化 demap Rander StringAddition_InFix string ordered_vector #include<bits/stdc+ ...
- SXYZ-7.4训练赛
今天这场比赛把人心态考崩溃了,只考100分钟,四道思考和算法题,旁边大佬开局5分钟秒T1,我30分钟打了个T1暴力.┭┮﹏┭┮,呜呜~.T2,T4根据题意暴力.T3人手模拟了一下,完全没有任何思路,放 ...
- 流式dma和一致性dma的区别
流式 DMA(Streaming DMA)和一致性 DMA(Consistent DMA)是两种不同的内存映射模式,用于 DMA(直接内存访问)操作.它们的主要区别在于缓存一致性.性能和使用场景.以下 ...
- USB编码方式(NRZI)及时钟同步方式
1.概述 在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC.SPI),自同步方式在通讯链路中没有同步信号(PCIE. ...
- 将读取的.raw文件转换为tensor张量送入网络
# coding:utf-8 import numpy as np import torch # 首先确定原图片的基本信息:数据格式,行数列数,通道数 rows=886#图像的行数 cols=492# ...
- webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全
webpack 的运行流程是一个串行的流程,从启动到结束会依次执行以下步骤 : 1. 初始化参数:在配置文件,读取并合并参数,得到最终的参数 : 2. 开始编译:拿着上一步的参数初始化 Compile ...
- nicegui太香了,跨平台开发和跨平台运行--使用Python+nicegui实现系统布局界面的开发
在现今国产化浪潮的驱动下,跨平台或者缩小范围说基于国产化Linux或者基于国产鸿蒙系统的开发才是未来的趋势了,风口浪尖上,我们开发人员也只能顺势而为,本篇随笔介绍在Python开发中,使用使用Pyth ...