咨询热线
咨询热线:
028-86052836
在线咨询
官方微信
UNIAPP 技术分享
时间:2023-03-22 | 作者: | 浏览:3555
  • UNIAPP 技术分享
    时间:2023-03-22 | 作者: | 浏览:3555

    01

    什么是UNIAPP,介绍UNIAPP 用途和技术基本原理


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


    2. 据 DCloud 称, uni-app 在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,都可以快速交付,不需要转换开发思维、不需要更改开发习惯。


    3. 据 DCloud 称,很多人以为小程序是微信先推出的,其实 DCloud 才是这个行业的始作俑者。DCloud于2012年开始研发小程序技术,优化webview的功能和性能,并加入W3C和HTML5中国产业联盟,推出了HBuilder开发工具,为后续产业化做准备。2015年,DCloud正式商用了自己的小程序,产品名为“流应用”,它不是B/S模式的轻应用,而是能接近原生功能、性能的动态App,并且即点即用。



    02

    功能架构图


    4.编译到小程序能力通过缝合美团前端团队的mp-vue实现。


    5.原生渲染能力通过缝合阿里巴巴团队的weex实现。


    6.uniapp提供向微信小程序看齐的内置组件和api。


    7.得益于双线程模型导致的渲染性能劣势,uniapp使用webview渲染APP时性能亦不如传统的5+Hybrid模式


    image1.png

    03

    创建项目及初始化步骤

    04

    启动小程序

    最好现在uniapp中配置一下小程序的appid 否则可能会出现启动不了的情况

    步骤:

    微信公众平台查看自己的小程序id  开发 → 开发管理 → 开发设置 → 找到appid


    05

    目录结构

    image6.png

    1)pages


    更多详细介绍:uni-app官网


    每次想要在pages里新加一个页面 都要在pages.json里配置一下

    image7.png

    下面列举一些常用 style 配置项,一般情况下足以开发,更多:uni-app官网

    image8.png

    2)APP.vue


    image9.png

    ●onLunch只会在进入程序的时候执行一次,一般搭配搭建或等获取微信公众号的code,想要app.vue调取methods 的方法记得用 getApp.方法名( )。


    ●globalData:常用于定义一些公共的变量、例如图片路径资源、手机是否是ios或安卓。


    使用 :现在js中引入


    1.import app from ‘@/App.vue’


    2.platform: app.globalData.platform


    ●style 定义公共的全局样式,例如垂直水平居中、布局、公共类目样式都可以定义。


    3)页面生命周期

    image10.png

    4)组件生命周期


    uni-app 组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期 如果想要发送请求 可以在子组件的生命周期去执行

    image11.png

    5)底部导航


    官方文档:uni-app官网

    image12.png


    06

    uniapp使用的优点和缺点


    ●优点:


    1)多端支持


    当然是多端开发啦,uni-app是一套可以适用多端的开源框架,一套代码可以同时生成ios,Android,H5,微信小程序,支付宝小程序,百度小程序等。


    2)更新迭代快


    用了它的Hbx你就知道,经常会右下角会弹出让你更新,没错,看到它经常更新,这么努力的在先进与优化,还是选良心的了。


    3)扩张强


    你可以把轻松的把uniapp编译到你想要的端,也可以把其它端的转换成uniapp,例如微信小程序,h5等;如果开发app的时候,前端表现不够,你还可以原生嵌套开发。


    4)开发成本、门槛低


    不管你是公司也好,个人也好,如果你想开发多终端兼容的移动端,那uniapp就很适合你。


    5)组件丰富


    社区还是比较成熟,生态好,组件丰富,支持npm方式安装第三方包,兼容mpvue,DCloud有大量的组件供你使用。


    ●缺点:


    1)爬坑


    每个程序前期肯定都会有很多的坑,一般的都有人解决了,没解决的,你就要慢慢的去琢磨了,官方bug的话,提交反馈,等官方修复。


    2)某些组件不成熟


    我说的是某些官方组件,像什么地图组件,直播组件等,你要在上面开发一些特别功能的话,可能还要话费很多时间。


    3)nvue有点蛋疼


    某些组件或某些功能,官方明确说,建议用nvue开发,那么问题来了,nvue有很多的局限,特别是css,很多都不支持,什么文字只能是text,只支持class样式,很多都需要看文档。

    image13.png

    07

    开发规范


    uni-app 使用vue的语法结合小程序的标签和API。为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范:


    1.uniapp的页面开发遵循 Vue 单文件组件 (SFC) 规范。另外,uniapp不能使用js进行html文档的DOM操作,请严格遵循vue的MVVM的数据绑定开发方式。


    ●一个vue的文件中只能包含一个顶级的模板


    ●一个vue文件只能包含一个脚本定义


    ●一个vue文件可以包含一个或多个样式定义


    image14.png

    2.组件标签靠近小程序规范,需要注意的是,在uniapp中不能使用标准的html标签,uniapp组件名称及使用方式的定义更贴近微信小程序,优先参考:uni-app 组件文档,可以辅助参考微信小程序组件文档。比如:


    ●<view>标签在uniapp中的含义与标准html中的标签能力相当


    ●如果你希望定义图片,不能直接使用html中的img,你应该使用uniapp的组件标签image。


    uniapp的接口能力(JS API)非常接近微信小程序规范,但需将前缀 wx 替换为 uni,详见uni-app接口规范


    3.Css样式规范


    uni.scss文件中预置了一些全局样式scss变量,这些变量用于定义应用的整体样式风格,比如:文字颜色、背景颜色、边框颜色等等。需要注意的是这个文件不要随意修改,如果要更改的话只能修改变量的值,不要修改变量的名。那么如果我们希望增加一些自定义的全局样式,应该怎么去做呢?参考下面的方法:


    ●首先,自己写一个样式文件,比如:app.scss ,该文件中自定义样式书写。将该文件放置于/static/style目录下;


    ●其次在app.scss文件的开头,引入uni.scss文件,引入语句为:@import '~@/uni.scss';


    ●最后在App,vue的样式中,引入这个自定义全局样式文件数据绑定及事件处理同 Vue.js 规范,同时补充了App及页面的生命周期。

    uniapp的局部样式实现是以vue文件为单位的,在某个vue文件内定义的样式,只在该vue的渲染范围内生效。


    4.为兼容多端运行,建议使用flex布局进行开发


    5.字体的使用


    uniapp支持字体的引用方式分为2种情况,如果字体文件小于 40kb,uniapp会自动将其转化为 base64 格式;将字体文件放置到static目录下,然后通过font-face定义字体。

    image15.png

    如果字体文件大于等于 40kb, 需开发者自己转换将字体文件转换成Base64字符串,否则使用将不生效;将转换之后的Base64字符串粘贴到下文的位置,完成字体的定义。

    image16.png

    字体的使用方式是通用的css样式,使用font-family即可。



    08

    UI组件库推荐


    ●uView框架


    官网链接:


    https://www.uviewui.com/


    ●uni-ui


    官网地址


    uniapp官网:


    https://uniapp.dcloud.net.cn/component/uniui/quickstart.html


    下载地址:


    https://ext.dcloud.net.cn/plugin?id=55



    01

    什么是UNIAPP,介绍UNIAPP 用途和技术基本原理


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


    2. 据 DCloud 称, uni-app 在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,都可以快速交付,不需要转换开发思维、不需要更改开发习惯。


    3. 据 DCloud 称,很多人以为小程序是微信先推出的,其实 DCloud 才是这个行业的始作俑者。DCloud于2012年开始研发小程序技术,优化webview的功能和性能,并加入W3C和HTML5中国产业联盟,推出了HBuilder开发工具,为后续产业化做准备。2015年,DCloud正式商用了自己的小程序,产品名为“流应用”,它不是B/S模式的轻应用,而是能接近原生功能、性能的动态App,并且即点即用。



    02

    功能架构图


    4.编译到小程序能力通过缝合美团前端团队的mp-vue实现。


    5.原生渲染能力通过缝合阿里巴巴团队的weex实现。


    6.uniapp提供向微信小程序看齐的内置组件和api。


    7.得益于双线程模型导致的渲染性能劣势,uniapp使用webview渲染APP时性能亦不如传统的5+Hybrid模式


    image1.png

    03

    创建项目及初始化步骤

    04

    启动小程序

    最好现在uniapp中配置一下小程序的appid 否则可能会出现启动不了的情况

    步骤:

    微信公众平台查看自己的小程序id  开发 → 开发管理 → 开发设置 → 找到appid


    05

    目录结构

    image6.png

    1)pages


    更多详细介绍:uni-app官网


    每次想要在pages里新加一个页面 都要在pages.json里配置一下

    image7.png

    下面列举一些常用 style 配置项,一般情况下足以开发,更多:uni-app官网

    image8.png

    2)APP.vue


    image9.png

    ●onLunch只会在进入程序的时候执行一次,一般搭配搭建或等获取微信公众号的code,想要app.vue调取methods 的方法记得用 getApp.方法名( )。


    ●globalData:常用于定义一些公共的变量、例如图片路径资源、手机是否是ios或安卓。


    使用 :现在js中引入


    1.import app from ‘@/App.vue’


    2.platform: app.globalData.platform


    ●style 定义公共的全局样式,例如垂直水平居中、布局、公共类目样式都可以定义。


    3)页面生命周期

    image10.png

    4)组件生命周期


    uni-app 组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期 如果想要发送请求 可以在子组件的生命周期去执行

    image11.png

    5)底部导航


    官方文档:uni-app官网

    image12.png


    06

    uniapp使用的优点和缺点


    ●优点:


    1)多端支持


    当然是多端开发啦,uni-app是一套可以适用多端的开源框架,一套代码可以同时生成ios,Android,H5,微信小程序,支付宝小程序,百度小程序等。


    2)更新迭代快


    用了它的Hbx你就知道,经常会右下角会弹出让你更新,没错,看到它经常更新,这么努力的在先进与优化,还是选良心的了。


    3)扩张强


    你可以把轻松的把uniapp编译到你想要的端,也可以把其它端的转换成uniapp,例如微信小程序,h5等;如果开发app的时候,前端表现不够,你还可以原生嵌套开发。


    4)开发成本、门槛低


    不管你是公司也好,个人也好,如果你想开发多终端兼容的移动端,那uniapp就很适合你。


    5)组件丰富


    社区还是比较成熟,生态好,组件丰富,支持npm方式安装第三方包,兼容mpvue,DCloud有大量的组件供你使用。


    ●缺点:


    1)爬坑


    每个程序前期肯定都会有很多的坑,一般的都有人解决了,没解决的,你就要慢慢的去琢磨了,官方bug的话,提交反馈,等官方修复。


    2)某些组件不成熟


    我说的是某些官方组件,像什么地图组件,直播组件等,你要在上面开发一些特别功能的话,可能还要话费很多时间。


    3)nvue有点蛋疼


    某些组件或某些功能,官方明确说,建议用nvue开发,那么问题来了,nvue有很多的局限,特别是css,很多都不支持,什么文字只能是text,只支持class样式,很多都需要看文档。

    image13.png

    07

    开发规范


    uni-app 使用vue的语法结合小程序的标签和API。为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范:


    1.uniapp的页面开发遵循 Vue 单文件组件 (SFC) 规范。另外,uniapp不能使用js进行html文档的DOM操作,请严格遵循vue的MVVM的数据绑定开发方式。


    ●一个vue的文件中只能包含一个顶级的模板


    ●一个vue文件只能包含一个脚本定义


    ●一个vue文件可以包含一个或多个样式定义


    image14.png

    2.组件标签靠近小程序规范,需要注意的是,在uniapp中不能使用标准的html标签,uniapp组件名称及使用方式的定义更贴近微信小程序,优先参考:uni-app 组件文档,可以辅助参考微信小程序组件文档。比如:


    ●<view>标签在uniapp中的含义与标准html中的标签能力相当


    ●如果你希望定义图片,不能直接使用html中的img,你应该使用uniapp的组件标签image。


    uniapp的接口能力(JS API)非常接近微信小程序规范,但需将前缀 wx 替换为 uni,详见uni-app接口规范


    3.Css样式规范


    uni.scss文件中预置了一些全局样式scss变量,这些变量用于定义应用的整体样式风格,比如:文字颜色、背景颜色、边框颜色等等。需要注意的是这个文件不要随意修改,如果要更改的话只能修改变量的值,不要修改变量的名。那么如果我们希望增加一些自定义的全局样式,应该怎么去做呢?参考下面的方法:


    ●首先,自己写一个样式文件,比如:app.scss ,该文件中自定义样式书写。将该文件放置于/static/style目录下;


    ●其次在app.scss文件的开头,引入uni.scss文件,引入语句为:@import '~@/uni.scss';


    ●最后在App,vue的样式中,引入这个自定义全局样式文件数据绑定及事件处理同 Vue.js 规范,同时补充了App及页面的生命周期。

    uniapp的局部样式实现是以vue文件为单位的,在某个vue文件内定义的样式,只在该vue的渲染范围内生效。


    4.为兼容多端运行,建议使用flex布局进行开发


    5.字体的使用


    uniapp支持字体的引用方式分为2种情况,如果字体文件小于 40kb,uniapp会自动将其转化为 base64 格式;将字体文件放置到static目录下,然后通过font-face定义字体。

    image15.png

    如果字体文件大于等于 40kb, 需开发者自己转换将字体文件转换成Base64字符串,否则使用将不生效;将转换之后的Base64字符串粘贴到下文的位置,完成字体的定义。

    image16.png

    字体的使用方式是通用的css样式,使用font-family即可。



    08

    UI组件库推荐


    ●uView框架


    官网链接:


    https://www.uviewui.com/


    ●uni-ui


    官网地址


    uniapp官网:


    https://uniapp.dcloud.net.cn/component/uniui/quickstart.html


    下载地址:


    https://ext.dcloud.net.cn/plugin?id=55



    分享到:
  • 下单热线: 028-86052836/ 18980549418
    我要和顾问聊聊
    友情链接:
    在线客服
    扫码关注我们
    18980549418
    业务咨询,我们欢迎您的来电!
    13320969483
    服务热线
    扫码关注我们
    重庆天健世纪科技有限公司是一家从事政府、企事业单位信息化系统研发、企业门户建设、移动客户端开发、电子商务运营、技术服务、互联网一站式营销的国家高新技术企业。
    业务咨询: 18980549418
    服务电话: 13320969483
    公司地址: 重庆市两江新区黄山大道中段 1 号
    关注我们
    在线客服
    Copyright© 2020 天健世纪. All Rights Reserved. 渝ICP备20003512号
    Copyright© 2020 天健世纪. All Rights Reserved.
    渝ICP备20003512号