从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