从2000年开始, xml 作为数据交换格式开始流行,服务器拼接 xml 接口,客户端js获取 xml 内容,动态修改页面。
几年后,数据量更小的 json 替代了 xml 。
移动互联网到来后,因为客户端分裂,加剧了接口的泛滥。
一转眼,接口已经玩了20年了。其他技术飞速发展,而前后端交互却一直是接口,没有什么创新。
js已经有了 import 、 export ,为什么调用后端接口,不能像调用一个前端模块一样呢?
serverless,让这一切开始了变化。
亚马逊 lambda 提出了云函数的概念,不再使用 restful 的 url ,但仍然是基于 json 交换前后端数据。
uniCloud 最初也以支持云函数为开始,但我们发现这仍不够优雅、简洁、直观、统一。
从 HBuilderX 3.4 开始, uniCloud 推出了“ 云对象 ”,让调用云端服务,真正变成像调用前端模块一样简单。
云对象:服务器编写API,客户端调用API,不再开发传输json的接口。思路更清晰、代码更精简。
比如服务端编写一个云对象news,该对象导出若干方法:add()、getList()、getDetailById()、softDel()、changeContent()、allowPublic()、addComment()、getComments()...等方法。
客户端的js则可以直接 import 这个 news 云对象,然后直接调用 add 等方法。
服务器示例代码如下:
HBuilderX中在uniCloud/cloudfunctions目录新建云函数/云对象,选择类型为云对象,起名为news。打开云对象入口 index.obj.js ,添加一个add方法。
// 云对象名:news
module.exports = {
add(title, content) {
title = title.trim()
content