框架的基本特点:
目前框架主体已经开发完,官方组件库已经写了大部分,devtools 的 chrome extension 原型已经开发完。我需要伙伴来完善组件库、devtools 、官网、开发内存泄露检测工具。
说来话长,但做这件事的背景还挺重要的,请耐心看吧。 这个框架本来只是另一个底层引擎的例子,本来那个底层引擎才是重点,底层引擎将现代框架里的基本部件——如负责 diff 算法的部分、负责渲染的部分(类似 react 的各种 renderer)、任务调度的部分——都独立的出来。用这个底层,用户可以造出自己的 react/vue 。当然我希望的是用户打造出适合自己的框架。因为这个底层的萌生就是我的团队在写编辑器和页面搭建工具时,有很多需求要 hack react 才能实现,因此才想要自己造底层。 同时我也考虑了生态的问题,因此在这个底层上又实现了一个 react 的版本,可以兼容 react 的组件。其 diff 算法和 react 完全一致(我测试 preact 等其他框架,diff 都和 react 有区别)。理论上用这个底层还可以造出 vue 、angular,把它们都当成我的一种组件写法而已。这样就有可能实现整个生态的大融合。
目前要开源的这个框架也是基于这个底层,以它来开源是因为它是我 240 天职业规划的一部分。我计划用 240 天来完全改变自己未来的工作方式,去做喜欢的事并且把钱赚了,永远追求更健康更科学地工作,找到有梦想、能深度交流的伙伴,为我的宝宝提供更好的教育更好地照顾家庭。过去的创业和大公司经历,在这特殊的一年的催化下,让我看到目前的公司环境给不了我想要的,并不是因为做不到,而是因为帮助员工实现价值、好好照顾员工并不是公司的核心目标。例如远程办公这件事,只要有好的工具、约定,就能做到,还能规避掉很多无效的会议。但若不是疫情,老板是不会主动去推进实施的,这不是他的核心目标。还有更多地例子可以参照《重来 3》。
说回来,这些让我意识到我想要改变,必须要自己去创造。wolfram 的 Seeking the Productive Life 给了我很大的启发。作为工程师我首先要以工程的方式改善自己,要造工具让自己写代码更快、更少、更容易。于是我花了很长时间来梳理我的知识体系。顺便介绍一下我的经历吧,便于理解我为什么要做这些。 我是学存储的、数据库方向。读研时就开始写云存储软件,当时实验室和一家北京的教育软件集成公司合作,软件卖给了很多高校,现在应该还在跑。快毕业时去百度实习,想着自己未来要做独立做产品只差前端没搞了于是拒了 php 的职位选了前端。毕业后收到邀请和新浪的师兄开始创业做云计算,成立了国内第一家做 openstack 的公司,我负责前端和设计团队、兼任产品经理。又补齐了很多产品知识,写的博客被华章的编辑看到还受邀写了本小小的电子书《产品设计七日修行》。再后来公司资金出现问题,我离职到了支付宝做前端。因为之前一直对框架感兴趣,所以不管本职工做什么,我一直在关注框架,AngularJS 的第一版 developer guide 就是我翻译的。也在写框架,我的 github https://github.com/sskyy。也在用自己的框架写产品,在我的 github 里面可以找到博客、论坛等等。我做过的其他事情可以通过我的知乎文章 https://www.zhihu.com/people/hou-zhen-yu/posts 和以前的博客找到。
说回来,我发现我不管是初心还是知识体系,其实都是围绕着“做完整产品”的。我应该不为公司,不为任何人,而是为自己打造一条生产线,让我做下一个产品时,不用再写那么多 crud,不断实现 rbac,不断写前端组件了。当然我不可能造出银弹,这个生产线是有一个明确应用范围的,即“单一数据中心,多用户,以数据操作为主”的应用。围绕这个范围我进行了长达一年时间的推导以及和朋友的讨论。目前已经全部完结,核心是以“需求描述”为中心来构建系统,这样能极大地复用已有的能力。这 240 天的计划就是实施计划,这个前端框架是这个整体生产线的一部分。前端的重点是 reactive data 和 component utility 。 reactive data 是介于 raw data(如 react 的 state) 和 event stream based reactive system(如 rxjs) 之间的数据形式,它比 raw data 更易于操作,又能利用 reactive 的特性简化逻辑。又比 rxjs 那一套更适合人类思维,它也可以和 rxjs 结合来使用保证强一致性。 component utility 是为了让组件库开发者更轻松地维护组件库的。虽然现代前端框架都是以组件系统为中心,但使用组件,和开发组件库面临的问题重点完全不同。使用组件构建应用时的重点怎么快怎么来。而组件库的重点是要尽量灵活,适应各种不同需求。如果还要基于组件构建“页面搭建系统”,就还要考虑组件向外声明自己属性、行为的问题。我把 ant.design 和 materialUI 的所有组件分析了一遍,再结合之前做搭建的需求,设计了这个 component utility 。
在 240 计划中,除了生产线之外,我还写了自己的编辑器,自己的项目管理工具。至于为什么又是一个故事了。不管想愿意加入我还是想了解都欢迎来找我。我的微信 rainer_H 。非常期待。
1
bojue 2020-10-11 18:38:28 +08:00
看了标题还以为差个程序员系列,原来已经做了这么多工作,GitHub 关注了期待后续
|
2
oops403 2020-10-11 18:56:29 +08:00
持续关注
|
3
sixway 2020-10-11 20:11:43 +08:00
想看看
|
4
wwwwzf 2020-10-11 20:33:05 +08:00 1
我行吗?
逐浪 CMS 成员,bootstrap 中文站维护者。 |
5
yunser 2020-10-11 22:38:41 +08:00 via iPhone
对项目没兴趣,倒是对你和你的计划感兴趣
|
6
DiamondYuan 2020-10-11 22:42:35 +08:00 via iPhone
如果编辑器 /项目管理工具不是产品的一部分,感觉是重复造轮子。
|
7
sskyy OP 把 240 天的计划也写完了。https://zhuanlan.zhihu.com/p/264954202
|
8
pigzzz 2020-10-12 09:06:30 +08:00
大佬
|
9
Anshi 2020-10-12 09:36:20 +08:00
大佬执行力好强,支持
|
10
azh7138m 2020-10-12 10:14:56 +08:00 via iPhone
是什么需求需要 hack react 呢?这个方便详细讲讲吗?或者发 ata 讲一下也可以(
|
11
hoosin 2020-10-12 10:26:58 +08:00
关注...
|
12
Czzzzzzzzzzr 2020-10-12 14:17:58 +08:00
关注大佬
|
13
KuroNekoFan 2020-10-12 14:36:29 +08:00
好厉害
|
14
dianxinyonghu 2020-10-12 16:14:17 +08:00
对于自己开发框架的大佬,我只能膜拜了
|
15
zvil 2020-10-12 16:44:22 +08:00
能力不够 持续关注大佬
|
16
Asyncway 2020-10-12 17:22:08 +08:00
有点意思 能力不够 持续关注
|
17
JokerLiang 2020-10-15 15:50:20 +08:00
大佬
|