基于 JSON 纯文本配置的状态树,会是网页前端开发的未来吗?

2021-08-02 15:41:51 +08:00
 3dwelcome

现代的网页前端技术,基本都是以开发 Web 组件为基础的。写了很多个组件后,就会自然而然想把页面抽象出来。amis 和 lowdefy 就是这类技术,把 Recat 一个组件的状态,事件都对应成 JSON 里一个子节点。

然后为每一个节点添加 JSON Schema Definition,建立节点规范。最后像搭积木一样,把一整套网页搭建起来。

以前也有这种页面的简单抽象,一般都是用于提交表单的配置。可现在随着 MVVM 理念的发展,UI 已经可以和 JSON 内部的数据进行互动了。也就是 JSON 逐渐脱离传统意义的"配置文件",变成了类似虚拟 DOM,数值会和界面产生联动的状态树。

百度开源的主项目地址: https://baidu.gitee.io/amis

1703 次点击
所在节点    前端开发
8 条回复
3dwelcome
2021-08-02 16:34:47 +08:00
没人对这种技术有兴趣?

我总觉得裸写 HTML 标签时代已经过去了。新 Web 组件的时代,需要有人站出来,建立一个新的标签规范标准( Schema Definition )。

否则人人都来写一套属于自己的组件库,定义的属性名字,又相互不兼容,内耗太严重。
512357301
2021-08-02 20:38:31 +08:00
个人看法:这种低代码开发方式跟之前 jq 时代的 easyui 有相同的问题——框架本身就很复杂,甚至比自己手写组件还复杂。
有开发能力的觉得束手束脚不想用,没开发能力的学了半天,哪天发现 amis 项目被百度放弃了,导致不敢用。
3dwelcome
2021-08-02 20:56:59 +08:00
@512357301 还是有点不一样的,以前低代码不开源,都是界面拖拉式,对资深码农并不友好。
现在低代码又开源,又是纯文本构建,和我们平时用 vscode 写没什么区别了。
这种 JSON 理念值得提倡,代码早晚会过期,配置文件却不会。
jjwjiang
2021-08-03 08:48:15 +08:00
我没看出来和常见框架,比如 react 引一个 ui 库的实际区别
以不用定制化的场景为例
写一个 json 树和写一个引用 ui 库组件的 html 树会有很大差别吗?
3dwelcome
2021-08-03 09:35:15 +08:00
@jjwjiang 肯定有差别,一般人总会接手到前人的项目和代码,而每个人的项目技术栈又不同。

如果用的技术很老旧,想要维护好还是挺麻烦的一件事。

但如果是 json 树写的,老板说要修改别人的界面,就是一件很轻松的事情了。可以说 JSON 是对前端的一种最高层抽象,无关具体实现细节。
bsulike
2021-08-03 09:51:14 +08:00
介于本人前端水平太菜,所以最近用 amis 体验还是不错的。(后台管理
jjwjiang
2021-08-03 10:31:44 +08:00
@3dwelcome 不啊,你这前提是有点问题的
这个是 json 技术没错,但是你做的时候不也得翻文档看接口吗?比如设置什么 type label actiontype etc.

如果接手的人没接触过 amis,不还是得去翻文档学习吗?

如果是以 react 为例,拿一个 UI 框架搭个 app 不做定制化也很简单,修改也是照着文档改 component 的参数不是吗?这和改 JSON 参数有本质区别吗?

我明白你的愿景,但是那可能得出台一套新的标准
3dwelcome
2021-08-03 11:14:56 +08:00
@jjwjiang 前端技术是在不断迅猛发展的,以隔壁的帖子举例( http://roscidus.com/blog/cuekeeper/),用的是一种听都没听说过的 OCaml 语言,编译成 JS 来运行的。

真拉个人来修改源代码,只能两眼一黑。

前端工程化和碎片化只会越来越严重,但再怎么变,界面定义这层,还是有办法抽离出来的,变成 JSON 树的。

这里说的 JSON 是一种界面编程的抽象理念,不仅仅是针对 AMIS 这一个特定产品,类似 lowdefy 的 YAML 树抽象,都将是未来的必经之路,绕不过去的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX