新闻详情
uniCloud推出一段时间了,但大多数人还没搞明白,或者说不相信,怎么可能有10倍效率的提升?真如此的话,那岂不是开发界要变天了?
没错,真的要变天了!
今天我们就来好好讲讲,uni-app + uniCloud,到底发生了什么化学反应,怎么提高了这么多的开发效率?

三位一体、协同提效

uni-app作为唯一一个全平台通吃的端引擎,目前已成为开发者的标配,有十几亿的终端月活。
而HBuilderX的装机量,也超过了800万台。
数字世界有3个核心:开发工具、端引擎、云引擎。
如果想让开发效率有质的提升,整合云端是必然之路。
DCloud创始人王安说过一句话:

这就是DCloud的产品逻辑:一切朝着开发效率最大化的目标前进

让开发工具、端引擎、云引擎,三位一体、互相协同,实现提升开发效率的目标。

在uniCloud推出的一年时间里,uni-app + uniCloud 已经变成了一个庞大的生态。包括非常多的工具、模块。

开发效率提升10倍,并非某个杀手功能的功劳,而是庞大的生态共同的作用。

2020年初,uniCloud刚发布到alpha版,新冠肺炎突然来袭,各地涌现大量抗疫项目需求。uni-app + uniCloud成为大家和病毒抢时间的重要利器。各地涌现了数百个基于uni体系的抗疫项目。 详见:https://www.dcloud.io/ncp.html
当时一个抗疫项目的开发,仍然需要几十人天。以出入管理登记的项目为例,第一版做了10天,有4-5位全职或兼职工程师参与。
一年后的春节,各地又大量出现了返乡人员信息登记的需求。项目需求类似,但此时的uniCloud生态建设已经完善,基于各种利器,返乡人员登记系统的开发人天数大幅削减,只花费0.0625人天!
1年时间,开发效率提升了将近1000倍!
uni云端一体生态的内容太多,让我们抽丝剥茧、归纳分类,以容易理解的方式讲解开发效率是怎么提升的。
开发效率提升,分4个层次:
  1. 提供众多现成轮子,不用自己写代码
  2. 如果没有现成轮子,那么用schema2code代码生成工具,生成数据库的增删改查页面(是直接生成页面,不是生成接口)
  3. 如果schema2code搞不定,需要手写代码,那么使用clientDB,节省80%的服务端开发工作
  4. 如果上述全部没搞定,仍需要手写云端代码,那么工作量和传统开发差不多。不过因为serverless的存在,导致运维成本大幅下降
我们来依次展开介绍每一层。

第一层提效:提供众多现成的轮子

这是云端一体生态里最容易理解的价值:大量开源模块拿来就用。
以前的开源模块,端是端、云是云,各自分离。缺少云端一体的开源模块。
以用户模块为例,其实它有前端、也有云端。前端有注册、登录、修改密码等页面,云端有对应的逻辑代码和数据库。
现在有了uni-id,一个开源的、功能完善的、云端一体的用户模块。立即节省数人月的开发工作量。
下面列举些常用的轮子
  1. 官方维护的插件

  • uni-id:无需再开发用户系统。用户注册、登录(含社交登录、短信验证码登录、App一键登陆)、修改或重置密码、token管理、图形验证码、RBAC权限角色系统、头像管理...所有与用户相关的,不管前端还是云端,代码都是现成的。详见

  • uniPay:不管微信还是支付宝,不管App、微信小程序、还是支付宝小程序,不管前端还是服务端,一切都现成的,拿来即用。详见

  • uSearch:云端一体搜索。搜索页面、搜索词联想、搜索历史记录、热搜词分析提取...详见

  • uniCloud Admin:全端可用的admin后台。自带用户管理、权限管理、角色管理、菜单管理。更有众多admin插件,比如banner管理插件、App升级管理插件...详见

  • uni-file-picker:前端直传uniCloud存储组件。详见

  • uni-captcha:云端一体图形验证码组件。详见

  1. 社区的优秀插件

  • cms

  • 城市选择

  • banner管理

  • 留言反馈

  • IM

  • 日志管理

  • 敏感词过滤

  • push

  • 图表统计

  • App升级管理

  1. 项目模板

    上面的轮子,是与业务无关的通用轮子。除此之外,还有大量的云端一体的项目模板。使用这些项目模板,那开发效率更是极大幅的提升。5、6人月的项目,现在几天就能搞定上线!

在这里,我们还必须提到2个新概念:uni_module和datacom。

  • uni_module:云端一体组件最佳的承载方式。传统的npm无法处理云端一体的需求,把前端和云端的代码,一起打包到一个uni_module中,整体传播与发布,对云端一体组件的生态有重大的帮助。详见

  • datacom:datacom是一种在前端绑定后端数据源的组件。详见

优良的模块化方案让生态越发繁荣。

接下来,DCloud还将举行插件大赛,继续打造更繁荣的生态,让大部分行业的应用,都有项目模板可以拿来即用。

第二层提效:schema2code自动生成代码

如果在第一层提效中,找不到现成的轮子,需要自己写代码时。那么首先要做的,是使用schema2code这个神器,自动生成代码。
uniCloud云数据的schema,是一项重要的创新。为数据表编写schema,可以实现非常多功能:数据结构定义、权限管理、数据值域管理,以及非常神奇的功能 -- 《schema2code
在传统开发中,有了数据库,可以生成crud后台接口。然后前端再写代码调用接口。
但在uni云端一体生态中,有了数据库的schema,可以直接生成云端一体的页面。而不仅仅是只生成接口。
schema2code,可以生成手机端的列表、详情或增删改页面,也可以生成admin管理端的所有数据管理功能的页面
可以看看这个云端一体通讯录的项目,几乎就没有单独写代码。设计好通讯录的表schema,用schema2code即可生成这个项目。
前述提到的返乡人员管理项目,之所以只花费了半小时就可以做好,也是schema2code的功劳。
数据的权限管理也很简单,在schema中可以快速定义指定的数据记录或字段,只能由什么样角色或权限的人来操作。
数据入库的值域校验就更简单了。传统开发中,一个手机号的校验,需要在前端页面写一遍,服务器入库前再检查一遍,很多余。
现在只需要在DB Schema中定义好手机号这个字段的可选值域,比如一个正则,那么scheme2code将自动生成前端表单,且遵循schema的定义,只接受相同正则。
这样不但提高了开发效率,还可以避免传统开发中各种漏洞,保持严谨和一致性。
schema2code生成的代码清晰易读,易于二次开发。这比低代码平台更有效率、且完全开放开源,随意扩展。

第三层提效:clientDB,让服务器代码减少80%

如果schema2code仍不能满足你的需求,需要单独开发,那么只要操作数据库,clientDB就是推荐使用的利器。
传统开发中,前端写request联网,后台写接收请求去查库,再返给前端,然后前台再绑定到data上....天天干这么枯燥的事情不烦吗?
uni-app提供了<unicloud-db>组件(代码块触发键是udb),在前端直接访问数据库,前所未有的高效和简洁,在大多数场景下完全不用写服务器代码!
比如uniCloud的云数据库有个user表,里面有字段id、name,查询id=1的用户数据,把名字显示在界面上,写法如下:
不要觉得前端直接访问数据库会造成安全隐患,别忘了上一章提过的DB Schema,在云端的schema中已经定义了什么角色可以操作数据库的什么数据了。
clientDB技术,有前端的JS API前端组件。为了进一步提高开发效率,clientDB还提供了利器 JQL。它是一种基于js的数据库操作语言,它改进了SQL语言的诸多不便之处。
  • 在传统mysql或MongoDB中,联表查询的写法非常麻烦,tree查询mysql干脆不支持,需要oracle等专业数据库。但在uniCloud中,只需在数据库的schema中定义两个表的字段之间的关系,比如是引用关系(foreignKey)、还是父子关系(parentKey),前端就可以直接查询,轻松完成联表查询tree查询
  • SQL语言的运算方法非常少,而JQL则提供了大量的运算方法,比如日期运算dayOfMonth()、字符串操作方法substr()、数字运算方法add()...可以对数据库字段的值直接进行运算和筛选。比如对数据库2个字段进行加权求和然后排序,这些场景传统的SQL语句可搞不定了
可以看出,在uni云端一体生态中,开发者不但提高了效率、减少了成本,还得到了更强大的赋能工具。
在三位一体协同中,离不开HBuilderX的支持。
HBuilderX中,可以方便的编写DB Schema,更可以根据Schema的字段,在代码中进行提示。以下图为例,在传统开发中,花括号里的item是一个通过request返回的json,普通IDE或编辑器是不可能知道这个json的数据结构的,也就无法提示。但由于三位一体协同,HBuilderX可以解析本地schema文件,直接提示item后面的数据结构。避免开发者写错代码、减少服务器联调工作。
除了开发效率,其实测试效率也会大幅提升。以往,前端和云端都有大量的代码,不管是code review、黑盒、百盒,都是双倍工作量。
但现在,开发、测试都将变得更加轻松。

第四层提效:语言统一和serverless

诚然,复杂项目中,少部分业务逻辑因为涉密或其他原因,不适合写在前端,此时还可以继续写云端代码。
uniCloud当然也支持云函数,只不过此时的开发效率,和php等传统开发相比,改进不会特别大。
但uni云端一体生态,仍然给开发商的管理和运维节省了大量的成本。
因为uniCloud也是js语言,开发商将可以集中技术栈,按业务分工而不是按前后端分工。
因为serverless的免运维特点,开发商再也不用操心扩容、高并发、ddos攻击、安全漏洞补丁等一系列麻烦事。只需专注于自己的业务。

结语

uni云端一体生态,还有很多好玩的东西。受篇幅所限,无法一一讲述。欢迎开发者们仔细研究。
当然uniCloud也还有一些需要完善的地方。现阶段还不适于一线互联网公司。DCloud正在研究解决方案。
不管学习还是反馈意见,欢迎加入uniCloud的QQ群交流:1012245137。
敲2下黑板:
    1. DCloud马上会举行2021年插件大赛,重点就是云端一体。奖金会比以往更丰厚,请有意参赛者做好准备
    2. DCloud正在招募行业服务商。比如网赚合成游戏插件,由DCloud付费委托大连一家外包公司开发。
      • 该公司可以赚到DCloud的委托开发费;
      • 可以承接网赚合成游戏插件的二开定制工作;
      • 可以销售uniCloud获取分成

除了网赚游戏外,DCloud正在寻找更多行业服务商,如论坛(我们想换掉现在的ask论坛)、OA、CRM、教育、电子书、低代码.... 有意成为uni行业服务商的开发者可以联系bd@dcloud.io

2021年了,新的时代已经到来,赶紧加入开发效率远胜以往的新生态吧!