多端开发之uniapp开发app
最近在给f做一些工具app,学习了不少关于uniapp编写android应用的知识。
首先,App应用的创建的时候要选择项目类型为uniapp类型。最开始我选择的是h5+项目,这种项目就比较容易写成纯js的项目,利用一些html5plus能力,或者使用mui来编写手机app。
我调研了一下,uniapp和h5+(mui为代表)的差异和优缺点如下所示。
技术类型 | 优点 | 缺点 |
---|---|---|
uniapp | 可以使用unipp封装的组件和api,有海量的插件可以从插件市场中找到。兼容多端,也可以用html5plus的api能力。可以复用小程序项目的逻辑代码,对团队的技术积累有好处。 | 需要学习vue语法,可能性能没有mui的优化效果好。 |
H5+ | 也可以跨端生成多种应用,但是不能使用uniapp的组件、插件以及api中涉及h5的能力。其中mui号称可以达到原生应用级别的性能和交互效果。 | 局限于原生js以及依赖库的编写方式。无法统一和小程序项目的技术栈和编程方式,无法服用代码。 |
我首先尝试了一下h5+的mui项目,发现写起来很原始,因为大部分能力都是mui的js库提供的,写法完全和uniapp项目不同,很多uniapp封装的组件和api都不能直接使用。为了长远考虑,如果以后还要生成ios的app,mui技术未必适合。
再加上之前的小程序端也是uniapp类型项目,有很多基础库和方法是可以借鉴的,所以最终选择使用uniapp类型的项目来开发f端的app。
不得不说uniapp来开发跨端的应用是非常方便的,同一套代码除了平台特性的代码不能直接在其他平台上用,大部分通用的能力和代码是可以复用的。
tab上的定义还是在pages.json里面的tabBar定义,图片资源的目录结构也可以参考之前的项目。
然后就是一些功能开发了,其中uuid的获取方式和小程序不通,原始app的获取uuid(设备的唯一标识)的api在html5plus上也有对应的api,获取方式如下所示。
const uuid = plus.device.uuid;
值得一提的是html5plus里面提供了非常多好用的html5新特性,包括蓝牙(Bluetooth)、AD(广告联盟模块)、设备麦克风(Audio)、二维码(BarCode)、设备的摄像头(Camera)、设备信息(Device)、系统相册(Gallery)等。上面获取uuid的方法就属于管理设备信息的API之一。国内有专门的HTML5产业联盟,相关API可以从这里跳转。
由于我是开发的andorid app,所以在调试的时候也会使用到android studio,关于调试的方法我会单独写一篇文章来讲述,这里不展开说。大部分时候我们都有2种选择,要么使用AVD(虚拟设备)来调试app,要么连接真实手机进行调试(假设你有android系统的手机)。
调试的过程会遇到一些坑(后面写专题单独讲),但是最终我们是可以开发出较为满意的app,通过hbuilder可以打包成需要的apk。
这种开发模式非常流畅,适合创业团队或者全栈技术人,一套代码生成多端,开发效率非常高。测试代码也可以复用之前的,uniapp项目的自动化测试都是类似的,对测试团队也是非常友好。
性能方面,由于是小范围使用,数据量不是很大,体验上和原生app差别不大。对于资源也能预加载,这方面我还没有深入了解,但是提供了相关api,不用太担心lazy load的问题。
多端开发之uniapp开发app的更多相关文章
- 移动端开发之APP消息推送
有这样一种场景,当你在手机APP上输入你的信息,会自动跳出一个弹窗,表示某任务已执行.最简单的一个例子就是当你输入手机号,点击获取验证码的时候,就会跳出一个对话框,说“验证码已发送到手机,请注意查收” ...
- Java进击C#——应用开发之WinForm开发
本章简言 上一章笔者介绍了关于WinForm环境.这一章笔者将继续讲WinForm.只不过更加的面向开发了.事实就是在学习工具箱里面的控件.对于WinForm开发来讲,企业对他的要求并没有那么高.但是 ...
- 应用开发之WinForm开发
本章简言 上一章笔者介绍了关于WinForm环境.这一章笔者将继续讲WinForm.只不过更加的面向开发了.事实就是在学习工具箱里面的控件.对于WinForm开发来讲,企业对他的要求并没有那么高.但是 ...
- 选择了uniapp开发app
7月份打算做一简单app,之前公司做app的时候简单用过Dcloud公司的mui,当时由于uniapp刚出来,最终选择了mui.对uniapp的 了解几乎没有. 做app对我来说几乎是零基础的,当然是 ...
- 移动端开发之px,em和rem详解
px:表示的是绝对的像素值,1px就是1像素大小 em:关于em,网上有资料说是关于父元素的,但是其实个人感觉这种说法是不对的,其实em的大小是根据自身的font-size确定的,而只是正常的情况下子 ...
- 17-前端开发之jQuery
什么是 jQuery ? jQuery 是一个 JavaScript 库,它极大地简化了 JavaScript 编程. jQuery是一个兼容多浏览器的javascript库,核心理念是write l ...
- 15-前端开发之JavaScript
什么是 JavaScript ? JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出 ...
- 14-前端开发之CSS
什么是 CSS ? CSS 指层叠样式表 (Cascading Style Sheets),用于对页面进行美化. 存在的方式有3种: 元素内联:在标签中使用 style='xx:xxx;' 页面嵌入: ...
- Android 开发之 Android 开发的起步
前言 Android 开发的起步 我们可以先来看看百科上面怎么说? 百度百科上 Android的介绍 一.Windows环境下在线搭建Android环境. 1. 下载 Android开发工具. JD ...
随机推荐
- 数据库锁(mysql)
InnoDB支持表.行(默认)级锁,而MyISAM支持表级锁 本文着中介绍InnoDB对应的锁. mysql锁主要分为以下三类: 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高 ...
- C# - 逆变的具体应用场景
前言 早期在学习泛型的协变与逆变时,网上的文章讲解.例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识. 本文将在具体的场景下,从泛型接口设计的角度出发,逐步探讨逆变的作用,以及 ...
- Docker入门篇(一)安装docker
Docker入门篇(一)安装docker Docker的来源 由dotCloud公司首创及正式命名,但是企业规模小,影响力不够,所以在快要坚持不住的时候,开始吃百家饭--开源了.不开则已,一开惊人.越 ...
- 【刷题-PAT】A1112 Stucked Keyboard (20 分)
1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...
- 【一个小实验】腾讯云的redis的主从结构的特性
使用腾讯云上的redis,可以添加多个备机的分片,并且可以选择不同的账号来设定主从读写的策略. 现在设置两个账号:primary-主节点写,主节点读:secondary-主节点写,从节点读. 研究出了 ...
- Ajax_Json用法
Ajax_Json用法 关于json的服务端代码 //首先在方法里面设置一个响应json数据对象 const data = { name:'chenxigua' } //因为 s ...
- 百度云管家使用socks代理无法上传下载解决办法
像前几篇随笔描述的那样,笔者在学校里通过shadowsocks使用ipv6访问双栈vps来免费使用外网,但是在设置百度云管家的代理时发现:使用socks代理客户端可以访问文件列表,但是无法上传下载. ...
- gorm中的高级查询
智能选择字段 GORM 允许通过 Select 方法选择特定的字段,如果您在应用程序中经常使用此功能,你也可以定义一个较小的结构体,以实现调用 API 时自动选择特定的字段,例如: type User ...
- Go 指针,标识符命名规范及关键字
#### Go 指针,标识符命名规范,关键字,运算符回顾了一下之前写的文章,以及考虑到后期的内容较多, 从这篇开始逐渐增加文章内容; 这篇我们主要学习一Go 中的指针,标识符关键字以及运算符##### ...
- SpingMVC注解式开发-处理器方法的参数(形参request等)
HttpServletRequest HttpServletResponse HttpSession 请求中所携带的请求参数