首先,我要说uni-app的跨平台特性真的非常强大。它可以将一份代码同时运行在多个平台,如微信小程序、H5、安卓、iOS等。这意味着开发者只需要花费一份精力来编写代码,就可以轻松地将应用发布到不同平台上。这无疑大大提高了开发效率,同时也省去了进行重复开发的时间和精力。uni-app是一个基于Vue.js框架的跨平台应用开发框架,在结构、语法和渲染方式上与Vue.js类似,可以方便地开发出同时支持多个平台的应用程序。pages.json 页面路由 | uni-app官网 (dcloud.net.cn)
其次,uni-app的开发体验非常友好。它采用了Vue.js作为主要开发框架,对于熟悉Vue.js的开发者来说,上手是非常容易的。同时,uni-app提供了丰富的组件库和API支持,使开发过程更加便捷。而且,uni-app还提供了实时预览功能,在开发阶段可以随时查看应用在不同平台上的展示效果,方便进行调试和修改。通过uni-app课程的学习,你可以了解uni-app的开发流程和技术细节,构建跨平台应用的基本原理和方法,并深入研究uni-app框架和Vue.js框架的交互处理、前端组件化开发、数据绑定等核心技术。此外,还可以学习到uni-app的实际应用,如uniCloud、NIM、支付、分享等功能的开发和集成等。
除此之外,uni-app还有许多其他的优点。例如,它支持通过插件的方式扩展原生功能,使得应用可以更好地与原生设备进行交互。另外,uni-app还提供了一套完整的打包、编译、调试工具,方便开发者进行项目的管理和维护。
综上所述,uni-app是一种非常令人兴奋和值得尝试的跨平台开发框架。它的强大跨平台特性、友好的开发体验以及丰富的功能,使得开发者能够轻松地实现一个应用在多个平台上的快速开发和部署。相信随着时间的推移,uni-app会越来越受到开发者们的关注和喜爱。
在学习过程中,我们需要具备基本的前端开发知识和Vue.js框架的基础。同时,需要具备一定的跨平台开发经验,了解移动端和小程序开发的基本流程和技术。
vue2 | 熟练 |
vue3 | 熟练 |
node | 熟练 |
总之,学习uni-app课程可以帮助我们快速掌握跨平台应用开发技术,提升前端开发能力和就业竞争力。https://uniapp.dcloud.net.cn/collocation/pages.html
还可以用导航链接选择学习https://sime8.com/#term-33、
.bottom {
margin-top: 20rpx;
image {
width: 16px;
height: 14.5px;
margin-top: 10rpx;
}
image:nth-child(2) {
margin: 0 60rpx;
}
image:nth-child(3) {
margin-right: 15rpx;
}
text {
font-size: 24rpx;
opacity: 0.5;
}
}
使用体验
没用之前以为真和 Vue 一样,用了之后才知道。有点类似 Vue 和 小程序结合的感觉。写类似小程序的标签,有着小程序和 Vue 的生命周期钩子。对比 uni-app 文档和微信小程序的文档,不差多少,只是将 wx => uni
,熟悉 Vue 和 小程序可以直接上手。
如果看过其他小程序的文档,可以发现,文档主要的三大章节就体现在框架、组件、API 。
uni-app 需要注意看注意事项,文档给出了和 Vue 使用的区别。例如动态的 Class 与 Style 绑定,在 H5 能用,APP 和小程序的体现就不一样。
配置项跟着文档来,开发环境也是现成的,下载 HBuilderX 导入项目就能运行,日常开发习惯了 VSCode,所以 HBuilderX 的主要作用就是用来打包 APK 和起各个端的服务,coding 的话当然还是用 VSCode。
路由
uni-app 的路由全部配置在 pages.json
文件里,就会导致多人开发的时候,路由无法拆分,如果处理的不好,就会发生冲突。
导航
导航栏需要注意的一个问题就是不同端的展示形式会不同,所以要处理兼容问题,导航栏可以自定义,用原生,框架,插件但是兼容性都不同,多端需求一定要在不同设备跑一下看效果。
例如在小程序和 APP 中,原生导航栏取消不了,就不能用自定义的导航栏,要在 pages.json
中配置原生导航栏。
兼容方法就是用 uni-app 提供的条件编译,处理各端不同的差异,我们支付的业务逻辑也是通过条件编译,区分不同端调用不同的支付方式。
生命周期
分为 应用的生命周期
、页面的生命周期
、组件的生命周期
。写过小程序和 Vue 的很好理解,大致上和 Vue 的还是差不多的,页面生命周期针对当前的页面,应用生命周期针对小程序、APP。这些过程可能都要踩一下!
网络请求和环境配置
官方的 uni.request
虽然封装好了基本的请求,但是没有拦截,我们开始也是自己在这基础上加了层壳,简单的封装发送请求。当然也可以选择第三方库的使用,如 flyio、axios。
我们是前端自己封装了 HTTP 请求,并且统一接口的请求方式,所有的接口放到 api.js 文件中进行统一管理。这样大家在页面请求接口的时候风格才统一,包括约定好请求拦截和响应拦截,具体拦截的参数和后台约定好。
资源优化
- 暂时接触不到 Webpack 之类的资源打包优化,但是文档中有提到资源预取、预加载、treeShaking 只需要在配置文件中设置即可,或者在开发工具勾上。小程序也是勾选自动压缩混淆。
- 删除没用到文件和图片资源,因为打包的时候是会算进去的,比如
static
目录下的资源文件都会被打包,而且图片资源太大也不好。 - uni-app 运行时的框架主库
chunk-vendors.js
文件是经过处理的,部署做gzip
。
Web-View 组件
在 uni-app 中使用 Web-View,可以使用本地的资源和网络的资源,不同平台也是有差异的,小程序不支持本地 HTML,且小程序端 Web-View 组件一定有原生导航栏。
需要注意的是网页向应用 postMessage
的时候需要引入 uni.web-view.js
,不然是没办法通信拿不到数据。
TODO: 这个坑后面再详细总结下!
全局状态
最开始是直接使用类似小程序的 globalData 来管理我们的全局状态,但是后面发现需求一多,加了各种东西之后,需要取这个状态的时候就很痛苦,做为程序猿嘛,都想偷懒吖,每次都得引入一下 getApp().globalData.data
这样很繁琐可不行,就替换成了 Vuex,需要取这个变量的时候,直接 this.vuex_xxxx
就能拿到这个值。
有段时间重写了 HTTP 请求部分和全局状态管理部分。
小程序中要在每一个页面中添加使用共有的数据,可以有三种方式解决。
Vue.prototype
它的作用是可以挂载到 Vue 的所有实例上,供所有的页面使用。