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 简单上手的更多相关文章

  1. Tinker 热修复框架 简单上手教程

    当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...

  2. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

  3. 梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦

    梅沙教育APP简单分析 时间:2017年6月6日 版本:iOS v1.2.21 分析人:Nathaneko-佳钦 备注:仅仅是个人一些简单的分析与见解,非正式产品分析报告,未体验购买相关功能,可能存在 ...

  4. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  5. uni app 零基础小白到项目实战-1

    uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...

  6. Airtest简单上手讲解

    Airtest是网易开发的手机UI界面自动化测试工具,它原本的目的是通过所见即所得,截图点击等等功能,简化手机App图形界面测试代码编写工作. 安装和使用 由于本文的目的是介绍如何使用Airtest来 ...

  7. Android APP 简单高效的禁用横竖屏切换

    默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...

  8. window64 PHP ffmpeg详解简单上手 音频amr转mp3

    从网上找了一大堆关于window 64 ffmpeg的信息,都是又长又不关键,让人难消化. 我只要简单的amr转MP3格式而已. 终于搞明白.自己总结了下! 希望能帮助到喜欢言简意赅,一眼上手的同学. ...

  9. 安卓APP简单后端的搭建

    写在前面: 此教程没有用到后端框架.只是单纯用servlet做一个例子,如果是学框架可以不用往下看了 本文适合哪些人:懂java的,会写android单机程序,懂得用HTTPClient等发送请求解析 ...

  10. 进击的RecyclerView入门一(简单上手)

    虽然RecyclerView面世有一段时间了,但由于它的学习成本相对较高,很多码友只是粗略的认识了一下而没有细致的品味RecyclerView的真谛. 那么从现在开始我将带你装逼带你飞,一起领略Goo ...

随机推荐

  1. ASP.NET Core – Handle Error on Web API

    前言 上一篇讲了 ASP.NET Core – Handle Error on Razor Page 这一篇继续说说 Web API 的错误处理. 主要参考 Handle errors in ASP. ...

  2. CMake构建学习笔记16-使用VS进行CMake项目的开发

    目录 1. 概论 2. 详论 2.1 创建工程 2.2 加载工程 2.3 配置文件 2.4 工程配置 2.5 调试执行 3. 项目案例 4. 总结 1. 概论 在之前的系列博文中,我们学习了如何构建第 ...

  3. element plus 2.3.14(完成 指南 部分)

    https://element-plus.org/zh-CN/guide/design.html 设计 控制反馈: 通过界面样式和交互动效让用户可以清晰的感知自己的操作: 页面反馈: 操作后,通过页面 ...

  4. 心得小结,关于注重加强MCU下调试能力的意识

    这两个月没有怎么更新博文,最近换工作了,根据新工作安排,大半年内都做MCU开发(就不要叫单片机了,太老土了). 入职新工作了,需重构拳头产品的软件,所以每天加班加点. 单片机与linux应用开发,开发 ...

  5. Java 动态编译工具 Janino 和 Liquor 差别

    如果你只要 Java7 及以下的语法支持,建议 Janino.如果要你想更全的 Java8.Java11.Java17.Java21 等语法,可以选 Liquor. 1.它们相同的地方 提供的相似的能 ...

  6. Java序列化、反序列化、反序列化漏洞

    目录 1 序列化和反序列化 1.1 概念 1.2 序列化可以做什么? 3 实现方式 3.1 Java 原生方式 3.2 第三方方式 4 反序列化漏洞 1 序列化和反序列化 1.1 概念 Java 中序 ...

  7. Kernel调试追踪技术之 Kprobe on ARM64

    kprobe是什么? kprobe 是一种动态调试机制,用于debugging,动态跟踪,性能分析,动态修改内核行为等,2004年由IBM发布,是名为Dprobes工具集的底层实现机制[1][2],2 ...

  8. amfe-flexible 包设置rem的基本值 vue 移动端适配方案

    下载 安装 :npm i -S amfe-flexible gw:GitHub - amfe/lib-flexible: 可伸缩布局方案 下载 2 个第三方包即可实现移动端适配 amfe-flexib ...

  9. 38. data为什么是一个函数

    vue中的data为什么是返回对象的函数,而不是直接使用对象形式 : 我们复用组件的时候,要求每一份data数据之间是独立的,不能互相影响,如果写成对象的形式所有的组件使用一份data数据 ,如果使用 ...

  10. 云原生周刊:Kubernetes v1.30 一瞥 | 2024.3.25

    开源项目推荐 Retina Retina 是一个与云无关的开源 Kubernetes 网络可观测平台,它提供了一个用于监控应用程序运行状况.网络运行状况和安全性的集中中心.它为集群网络管理员.集群安全 ...