Uni-app支持一个叫做Uni Cloud的后端,可以不需要部署服务器,通过js写后端逻辑,然后包装成一个类,在前端直接导入这个类就可以,也可以直接通过数据库对象来操作数据库,感觉非常方便。
在部署的时候,不需要配置域名,买服务器之类的,只需要在Uni Cloud中购买一个云服务空间,然后使用Uni Cloud提供的一键上传功能,把后端封装的对象上传到自己的服务空间就可以,可以说非常方便。
下面总结了一下如何通过Uni-app+uni-cloud进行开发。
1 使用uni-id-pages
uni-id-pages是一个用来登录的插件,前端是一些登录页面之类的,基本没什么用。后端提供了一个叫做uni-id-co的对象,非常好用。可以实现微信登录,然后对数据库进行操作。
uni-id-co的文档中写的很详细了,包含了一系列登录的方法,需要哪个就用那个即可。具体可以看https://doc.dcloud.net.cn/uniCloud/uni-id/cloud-object.html#api%E5%88%97%E8%A1%A8
按照uni-id的设计,用户登录之后,其实前端不一定拿得到用户id,但是其实需要用户id的情况一般就以下几种,uni-id都做了相应的解决方案。
- 通过id查询数据库:uni-id提供了一个环境变量,叫做$cloudEnv_uid,具体可以看https://doc.dcloud.net.cn/uniCloud/jql.html#variable,直接用
where user_id == $cloudEnv_uid
就可以,下面是例子:
const db = uniCloud.database()
const res = db.collection(dbCollectionName).where("where user_id == $cloudEnv_uid").get()
- 在添加数据的时候传入用户id:比如对于一个订单,用户id是订单的一个外键,只需要在设计数据库的时候,指定订单的user_id是强制为用户id,然后不需要前端传入,例子是:
在xxx.schema.json中:配置字段时候指定:
"forceDefaultValue": {
"$env": "uid"
}
具体可以看https://doc.dcloud.net.cn/uniCloud/schema.html#defaultvalue
- 某些页面不允许未登录查看,只需要在pages中配置uniIdRouter就可以,具体看:https://doc.dcloud.net.cn/uniCloud/uni-id/summary.html#uni-id-router
2 使用schema2code
对于一个设计好的xx.schema.json,只需要选中,然后右键chema2code,就可以自动生成增删改查的前端页面。虽然说不一定满足客户的界面设计,但是可以在上面修修改改,如果对于那些不要求界面样式的客户,可以直接就使用了。
此外推荐只需要list页面放在导航里面就可以,里面包含了增删改查所有内容,其他页面不需要手动去跳转。
3 使用uni-admin
uni-admin可以对数据库进行修改,相当于一个后台管理系统。直接再次创建一个新的项目,模版选择uni-admin就可以。这里也可以使用schema2code生成页面,注意这里先不要关联云服务空间,而是把前端的schema拷贝过来,生成代码,然后再关联,否则生成的admin代码就覆盖了小程序的代码了,应该是schema2code的一个bug吧。
‘
然后在admin的页面管理页面,可以添加路由,这里只需要把数据库的list添加上去就OK了。
4 总结
好了,以上就是使用Uni-app+Uni-cloud的开发体验了,包含了用户登录,数据库操作,后台管理等等,感觉功能非常齐全,里面也有很多造好的轮子,和传统的开发方式相比应该可以提升不少的效率。