跨平台之uni-app
文章目录
- 起源
- 什么是uni-app
- 为什么选择uni-app呢?
- 快速体验
- 开发工具
- 创建uni-app
- 运行uni-app
- 发布uni-app
- 打包为原生App
- 发布为H5
- 发布为小程序
- 总结
起源
在我司业务不断快速发展的情况下,同时保证成本的增加,而选择考虑跨平台的解决方案。
原本微信小程序其实算是跨平台了,但是近来微信小程序的审核速度堪忧,从最开始的半小时到现在的两三天都不一定过,所以移动端也不能完全抛弃,毕竟android是可以自己控制更新的,Appstore的审核速度现在都比微信小程序快了。
而且微信小程序的适配并不是很完美,其实跨平台都不能完美的适配,好在我司现有业务并不过多涉及太底层的东西。
以下简单介绍uni-app,多为搬运官网,加一些自己实际中的体验。
什么是uni-app
uni-app 是一个使用Vue.js
开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。
为什么选择uni-app呢?
uni-app在跨端数量、扩展能力、性能体验、周边生态、学习成本、开发成本等6大关键指标上拥有极强的竞争优势。
我们就是看中了两个点:
- 学习成本低
- 一套代码运行多端
快速体验
开发工具
- HBuilderX
下载地址:http://www.dcloud.io/hbuilderx.html
工具还是很友好的,内置了开发环境,安装之后就可以开发了,开箱即用,也比较轻量。
创建uni-app
在点击工具栏里的文件 -> 新建 -> 项目:
选择uni-app
,输入工程名,如:hello-uniapp,点击创建,即可成功创建 uni-app。点击模板里的 Hello uni-app 即可体验官方示例。
运行uni-app
1.浏览器运行:进入hello-uniapp项目,点击工具栏的运行 -> 运行到浏览器 -> 选择浏览器,即可在浏览器里面体验uni-app 的 H5 版。
2.真机运行:连接手机,开启USB调试,进入hello-uniapp项目,点击工具栏的运行 -> 真机运行 -> 选择运行的设备,即可在该设备里面体验uni-app。
如手机无法识别,请点击菜单运行-运行到手机或模拟器-真机运行常见故障排查指南。 注意目前开发App也需要安装微信开发者工具。
3.在微信开发者工具里运行:进入hello-uniapp项目,点击工具栏的运行 -> 运行到小程序模拟器 -> 微信开发者工具,即可在微信开发者工具里面体验uni-app。
注意:如果是第一次使用,需要先配置小程序ide的相关路径,才能运行成功。如下图,需在输入框输入微信开发者工具的安装路径。 若HBuilderX不能正常启动微信开发者工具,需要开发者手动启动,然后将uni-app生成小程序工程的路径拷贝到微信开发者工具里面,在HBuilderX里面开发,在微信开发者工具里面就可看到实时的效果。
uni-app
默认把项目编译到根目录的unpackage
目录。
其他小程序平台类似,如果HBuilderX不能打开其他开发工具并运行看效果的话,就需要手动打开并再次运行看效果。
发布uni-app
打包为原生App
在HBuilderX工具栏,点击发行,选择原生app-云端打包,如下图:
出现如下界面,点击打包即可。
发布为H5
1.在 manifest.json 的可视化界面,进行如下配置(发行在网站根目录可不配置应用基本路径),此时发行网站路径是 www.xxx.com/h5,如:https://uniapp.dcloud.io/h5。
2.在HBuilderX工具栏,点击发行,选择网站-H5手机版,如下图,点击即可生成 H5 的相关资源文件,保存于 unpackage 目录。
注意
- history 模式发行需要后台配置支持,详见:history 模式的后端配置
- 打包部署后,在服务器上开启 gzip 可以进一步压缩文件。具体的配置,可以参考网上的分享:https://juejin.im/post/5af003286fb9a07aac24611b
发布为小程序
申请微信小程序AppID
,参考:微信教程。
在HBuilderX中顶部菜单依次点击 “发行” => “小程序-微信”,输入小程序名称和appid点击发行即可在 unpackage/dist/build/mp-weixin
生成微信小程序项目代码。
在微信开小程序发者工具中,导入生成的微信小程序项目,测试项目代码运行正常后,点击“上传”按钮,之后按照 “提交审核” => “发布” 小程序标准流程,逐步操作即可,详细查看:微信官方教程。
其他平台小程序类似,先注册申请appid。
总结
- 总体体验来说,还是可以的,目前在github也有快将近1w+的star了,可以看到还是被很多人看好的。
- 而且第一步就相当的顺利,开箱即用的开发工具,不会说第一步就卡在搭建开发环境上了。
- 对于前端和小程序的开发者来说,因为是基于vue的,语法什么的都高度相似,基本上可以说是学习成本极低。
- 生态方面,有很多内置组件和api,还有插件市场。
- 选型方面
- 在开发人员较少,且有跨平台需求的时候,可以考虑选择uni-app,关键业务不是特别复杂,项目也不是特别庞大,不太涉及底层,因为我们知道,目前市面上所有的跨平台方案其实都不能完全适配,只能说是谁适配的更好而已。
- 如果项目庞大且复杂,又涉及底层的话,还是建议谨慎考虑,因为有可能你在处理适配的时候花的精力会大于单平台适配的精力。
- 当然,这都是我个人的见解,也可以看uni-app官方出的选型评估。未来肯定是会越来越好的
官方文档:https://uniapp.dcloud.io/README
跨平台之uni-app相关推荐
- 《PhoneGap精粹:构建跨平台的移动App》——1.10节PhoneGap资源
本节书摘来自异步社区<PhoneGap精粹:构建跨平台的移动App>一书中的第1章,第1.10节PhoneGap资源,作者 [美]John M. Wargo,更多章节内容可以访问云栖社区& ...
- 切换 uniapp_万能前端框架uni app初探03:底部导航开发
前言 本节我们使用uni app的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的. 一.基础知识 1.tabBar 如果应用是一个多 tab 应用,可以通过 tabB ...
- NativeScript - JS 构建跨平台的原生 APP
使用 NativeScript,你可以用现有的 JavaScript 和 CSS 技术来编写 iOS.Android 和 Windows Phone 原生移动应用程序.由原生平台的呈现引擎呈现界面而不 ...
- uni app map 地图 漂浮问题及方案
uni app map 地图 漂浮问题及方案 文章页有图片导致的问题,图片没加载出来,导致文章内容高度不固定,如果图片没加载出来,高度就是0,如果此时开始加载map,那么map就在那里加载,map原生 ...
- 如何做一个跨平台的游戏App?
如何做一个跨平台的游戏App? iOS和安卓系统上的应用程序,根据提供的内容不同,按照开发方式和用户体验不同,可区分为app和游戏: 首先从开发方式不同来说明,app开发一般是用操作系统官方提供的开发 ...
- uni.app H5(微信公众号定位) uni.getLocation
最近在开发公众号,由于之前经常使用uni,app写APP,索性就用uni.app来开发公众号了, 不过也遇到了一个问题,就是在公众号的首页要获取用户的定位.我看了看官网的API 有个uni.getLo ...
- HBuilder X ——Uni app 学习笔记(一)
HBuilder X --Uni app 学习笔记(一) 1.pages.json配置 *pages数组中第一项表示应用启动页,数组中其他项为项目中所有页面路径. enablePullDownRefr ...
- uni app中使用图表
关于在uni app中运用图表 今天写项目,需要在uni app中使用图表,我使用的是ucharts. 具体操作如下 1.下载 ucharts可以直接在uni app的插件市场下载安装. 先在插件市场 ...
- uni app 自动化索引列表
uni app 自动化索引列表,官方推荐的第三方插件 https://ext.dcloud.net.cn/plugin?id=375 [{"letter": "A&quo ...
- HbuilderX:uni app踩坑之uView-ui
HbuilderX:uni app踩坑之uView-ui 最近在自学uniapp,想找一个ui框架提高一下学习和开发的效率,于是就网上冲浪,浪来浪去,最后选择了uView-ui这款.其实有些框架我是有 ...
最新文章
- GNN综述:从deepwalk到GraphSAGE,GCN,GAT
- 产品思维——像产品经理一样思考
- 七日Python之路--第八天
- mysql支持UUID做外键_多表外键下将普通的id主键更新为uuid主键
- Android中 AsyncTask
- Linux more命令、Linux rhmask命令
- 罗永浩或将找陈冠希做代言人
- linux利用位置参数数组,Shell编程1_变量、参数和数组
- request (请求对象)
- pytorch实现resnet网络结构
- LumaQQ.NET 试用
- java怎么用switch求闰年_使用switch语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天...
- 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
- 学习ESP8266_11_系统软件定时器
- css文本行高是哪个属性_CSS样式----CSS属性:字体属性和文本属性(图文详解)...
- 调用浏览器下载图片 java实现
- 倒置字符串 将一句话的单词进行倒置,标点不倒置。
- 2021年危险化学品经营单位主要负责人考试资料及危险化学品经营单位主要负责人新版试题
- 三星s9打电话显示无法连接到服务器,三星手机不能拨打电话解决办法
- 生物网络中基于节点相似度的链路预测图卷积
热门文章
- 从零学习Vue - 02模板语法、el与data两种写法、mvvm模型、数据代理
- 配置docker镜像的国内源
- 设计改变世界,2022年戴森设计大奖作品征集正式开启
- Norlit OS —— 自制操作系统 第0章 热身运动
- Oracle Database 12c Security - 12. Audit for Accountability
- 湖南大学与四川大学计算机,四川大学和湖南大学哪个更好一点?都是高校吗?...
- mySQL 教程 第7章 存储过程和函数
- PS 十分钟教你做出文字穿插效果
- 吉首大学校赛B——干物妹小埋(线段树求最大递增子序列)
- 影响线型缩聚物分子量的因素_线型缩聚物的分子量与分子量分布.ppt