uni-app基础知识

一、uni-app介绍

1.1 什么是uin-app

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

1.2 为什么要选择uni-app

uni-app拥有其强大的优势。

1、更高的百度指数,跨端完善度更高,真正落地的提高生产力

2、平台能力不受限

在跨端的同时,通过条件编译+平台特有API调用,可以优雅的为某平台写个性化代码,调用专有能力而不影响其他平台。

支持原生代码混写和原生sdk集成。

3、性能体验优秀

体验更好的Hybrid框架,加载新页面速度更快。

App端支持weex原生渲染,可支撑更流畅的用户体验。

小程序端的性能优于市场其他框架。

4、周边生态丰富

丰富的插件市场,各种轮子拿来即用。

支持NPM、支持小程序组件和SDK、兼容mpvue组件和项目、兼容weex组件。

微信生态的各种sdk可直接用于跨平台App。

5、学习成本低

基于通用的前端技术栈,采用vue语法+微信小程序api,无额外学习成本

6、开发成本低

不止开发成本,招聘、管理、测试各方面成本都大幅下降。

HBuilderX是高效开发神器,熟练掌握后研发效率至少翻倍(即便只开发一个平台)。

1.3 功能框架

从下面官方给的uni-app功能框架图可看出,uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。

1.4 目录及文件

├─ components ··················· uni-app组件目录└──comp-a.vue  ··················· 可复用的a组件
├── pages ·······················  业务页面文件存放目录├─ index ······················ 使用到的字体文件└── index.vue ····················· index页面├─ list ······················· 使用到的图片文件└── list.vue ····················· list页面
├─ static ··· 存放应用引用静态资源(如图片、视频等)的地方,注意:静态资源只能存放于此
├─ main.js ······················· Vue初始化入口文件
├─ App.vue ··· 应用配置,用来配置App全局样式以及监听
├─ manifest.json ················ 配置应用名称、appid、logo、版本等打包信息
└─ pages.json················· 配置页面路由、导航条、选项卡等页面类信息

二、uni-app应用生命周期及页面生命周期

2.1 应用生命周期

函数名 说明
onLaunch uni-app 初始化完成时触发(全局只触发一次)
onShow uni-app 启动,或从后台进入前台显示
onHide uni-app 从前台进入后台
onError uni-app 报错时触发
onUniNViewMessage nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯
onUnhandledRejection 对未处理的 Promise 拒绝事件监听函数(2.8.1+)
onPageNotFound 页面不存在监听函数
onThemeChange 监听系统主题变化

2.2 页面生命周期

onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为object(用于页面传参),示例中可参考
onShow 监听页面显示
onReady 监听页面初次渲染完成
onHide 监听页面隐藏
onUnload 监听页面卸载
onPullDownRefresh 监听用户下拉动作
onReachBottom 页面上拉触底事件的处理函数
onShareAppMessage 用户点击右上角分享 微信小程序
onPageScroll 监听页面滚动
onTabItemTap 当前是tab页时,点击tab触发
onShareAppMessage 用户点击右上角分享(微信小程序支持)

注意

  • 先触发 uni-app onReady ,后触发 vuemounted
  • 建议使用uni-apponLoad 代替 vuecreated

官方生命周期

三、组件之间的三种通信方式

3.1 三种方式

组件间传值包括下面三种情况:

  • 父组件给子组件传值
  • 子组件给父组件传值
  • 兄弟组件通讯

3.2父组件给子组件传值

子组件通过props接收外界传递到组件内部的值

// 父 index.vue   通过属性绑定进行传递  v-bind:简写为:
<test  :title="title" ></test>
data() {return {title:'Hello',}},
// 子组件 test.vue   通过props接收
<template><view>这是父组件传递过来的数据{{title}} </view>
</template>export default {props:['title'],//接收}

3.3 子组件向父组件传值

通过$emit触发事件进行传递参数

// 子组件 test.vue  传值num
<template><view>子组件点击按钮触发给父组件传值<button @click="sendNum">给父组件传值</button></view>
</template>
<script>export default {data() {return {num:'3',};},props:['title'],//接收methods:{sendNum(){this.$emit('myEven',this.num) //给父组件传值},}
</script>
// index.vue  父组件接收num
<view class="content"><test  :title="title" @myEven= 'getNum'></test>{{num}}
</view>
export default {data() {return {num:0 //默认0}},methods: {getNum(num){console.log(num)this.num = num}},
}

3.4 兄弟组件之间的通讯

a.创建组件a,b,引入index.vue, components注册

// index .vue  页面展示组件内容
<script>import test from '../../components/test.vue'import testA from '@/components/a.vue'import testB from '@/components/b.vue'export default {components:{test,"test-a":testA,"test-b":testB,},}
</script>
<template><view class="content"><test-a></test-a><test-b></test-b></view>
</template>

b.通过uni. o n 注 册 一 个 全 局 监 听 事 件 , 通 过 u n i . on注册一个全局监听事件,通过uni. on注册一个全局监听事件,通过uni.emit触发全局监听事件

//a组件 a.vue
<template><view><button @click="addNum">修改b组件数据</button></view>
</template><script>export default {methods:{addNum(){uni.$emit('changeNum',10) //触发全局变量自定义事件changeNum,该函数为b组件内修改b组件内容的方法          }       }   } </script>
//b组件 b.vue  a组件更改该组件内容
<template><view>数据{{num}}</view>
</template><script>export default {data() {return {num:0,};},created(){ //创建全局监听自定义事件  改变内容uni.$on('changeNum',num=>{this.num+=num})},}
</script>

注意:

uni.$emit(eventName,OBJECT) 触发全局的自定事件。

[uni. o n ( e v e n t N a m e , c a l l b a c k ) ] ( h t t p s : / / u n i a p p . d c l o u d . i o / c o l l o c a t i o n / f r a m e / c o m m u n i c a t i o n ? i d = o n ) 监 听 全 局 的 自 定 义 事 件 。 事 件 可 以 由 u n i . on(eventName,callback)](https://uniapp.dcloud.io/collocation/frame/communication?id=on) 监听全局的自定义事件。事件可以由 uni. on(eventName,callback)](https://uniapp.dcloud.io/collocation/frame/communication?id=on)监听全局的自定义事件。事件可以由uni.emit 触发,回调函数会接收所有传入事件触发函数的额外参数。

[uni.$off(eventName, callback]) 移除全局自定义事件监听器

四、图片上传

4.1 图片上传API接口 —uni.chooselmage(OBJECT)

简单的图片上传

 <!-- 点击上传图片 --><button type="primary" @click="addImage">上传图片</button><!-- 图片上传后显示 --><image v-for="item in image" :src="item" mode="" @click="aaa(item)"></image>
 addImage() {uni.chooseImage({count: 5, //上传数量限制success: res => { //上传成功后执行回调函数this.image = res.tempFilePaths}})}

五、页面数据遍历 v-for

<view class="list" v-for="item in list">{{item}}</view>
data() {return {list: ['华为', '小米', 'vivo', 'oppo'],image: {}}},

uccess: res => { //上传成功后执行回调函数
this.image = res.tempFilePaths
}
})
}


### 五、页面数据遍历 v-for```vue
<view class="list" v-for="item in list">{{item}}</view>
data() {return {list: ['华为', '小米', 'vivo', 'oppo'],image: {}}},

uni-app基础知识(一) 持续更新相关推荐

  1. pwn学习总结(四)—— 堆基础知识(持续更新)

    pwn学习总结(四)-- 堆基础知识(持续更新) 前言 chunk 使用中(分配后) 空闲中(释放后) 堆块大小 空间复用 bins fastbin unsorted bin small bin 前言 ...

  2. pwn学习总结(二) —— 基础知识(持续更新)

    pwn学习总结(二) -- 基础知识(持续更新) Canary PLT表&GOT表 格式化字符串漏洞 GCC编译参数 ASLR 危险函数 输入流 syscall条件 shellcode 其它 ...

  3. 关于keil的一些基础知识(持续更新)

    #关于keil的一些基础知识(持续更新) 1.数据类型转换 (1)写程序的时候需要将一个32位16进制数值转换到10进制显示在TF屏上,由于基础比较烂,一直没有想明白,写了各种复杂的类型转换.. 代码 ...

  4. 数据分析面试之统计的基础知识(持续更新)

    数据分析面试系列 统计的基础知识-1 1.概率知识点回顾 概率: 发生事件A的概率 P(A) = 发生事件A的数目 / 所有结果的数目 概率= 用数值来表示某件事发生的可能性 先验概率与后验概率: [ ...

  5. Java面试常问基础知识(持续更新)

    欢迎关注我的知乎专栏[数据池塘],专注于分享机器学习,数据挖掘相关内容:HTTPS://zhuanlan.zhihu.com/datapool 本文中的知识都是我自己或同学在面试过程中常被问到的,在此 ...

  6. HTML5及CSS3基础知识(持续更新)

    一.HTML5基础 1.HTML概述 HTML: Hyper Text Markup Language 超文本标记语言 超文本: 比普通文本功能更加强大,可以添加各种样式 标记语言: 通过一组标签.来 ...

  7. 软件测试九阴真经,软件测试需要掌握的基础知识(持续更新)

    一.测试用例的编写 1.在测试中最重要的文档,他是测试工作的核心,是一组在测试时输入输出的标准,是软件需求的具体对照.编写测试用例,是测试人员的基本功,真正能写好的人并不多. 2.测试用例包含的内容: ...

  8. python基础知识(持续更新)

    一.python引入 1.错误提示 常见单词及错误类型 IndexError -- 索引错误 TypeError -- 类型错误 list index out of range --列表索引超出了范围 ...

  9. 正则表达式基础知识,持续更新…

    两个网站 正则可视化 正则入门三十分钟 基本内容 定义 正则描述了一种字符串的匹配的模式 ,可以用来检查一个字符串是否包含某个子串或者是替换某个子串;一般用于表单验证,数据过滤,格式检查,数据采集,数 ...

最新文章

  1. 基因结构图绘制-单个基因
  2. 优化JVM参数提升Eclipse运行速度
  3. Qt Linguist手册
  4. 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
  5. Windows7配置GPU和Theano编程环境
  6. Server SAN:弄潮儿云计算时代
  7. Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
  8. 基于CentOS构建高功能的LAMP平台
  9. NumPy库--数组的索引和切片
  10. 坚果pro2完美降回6.0.3卡刷包 完美恢复方法
  11. 33个训练大脑的小方法
  12. python读取excel汉字转成拼音_python实现汉字转拼音和读写excel
  13. 二级计算机中一级标题设置,如何编辑目录中一级标题二级标题的不同格式
  14. 阿里巴巴2013笔试题 算法/研发岗 【详解】
  15. 【U8】U8V12.5新增部门档案,保存提示:系统忙,稍后再试!
  16. Verilog十大基本功5 (关于verilog中的signed类型)
  17. 品牌出海是机遇也是挑战
  18. 第一启富金:两大利空压顶 黄金受压收跌
  19. jquery ajax封装通用方法
  20. 西安天讯:怎样添加百度蜘蛛访问网站日志log日志

热门文章

  1. Chrome 扩展:又一个老板键 PanicButton
  2. 企业宣传片如何做?上海宣传片公司拍摄与制作看这里
  3. linux 中文游戏网站,5款值得推荐的免费游戏
  4. .NET破解之爱奇迪(三)
  5. 宝安区2021年高考成绩查询入口,2021年宝安区学位申请积分入学积分办法
  6. 全球与中国无线演示器行业市场前瞻及未来发展趋向预测报告2022-2028年
  7. 怎么混合音乐?有什么好用的音频编辑工具?
  8. YUV 后面数字的含义_金属材料分类及牌号含义
  9. mpython掌控板体温,基于Mpython平台验证水温的变化
  10. 苹果手机之间怎么传照片_相机与手机之间传送RAW格式照片问题!