「2019 JSConf.Asia - 尤雨溪」在框架设计中寻求平衡

「2019 JSConf.Asia - 尤雨溪」在框架设计中寻求平衡

框架取舍

Scope、Render Mechanism、State Mechanism

第一:职责范围。从本质说是指这个框架可以为你做多少事情。

第二:渲染机制。当你在使用一个框架的时候,你会如何表达你的视图层,框架如何处理代码?它是如何将实际渲染东西展示到页面上的?

第三:状态机制。可变和不可变,脏检查和依赖追踪,响应式和类响应式。

职责范围

一个框架能为我们做什么事情?

我们将它一分为二,从你们的角度来看,这个框架或库能做一些特有的小事情,从我们的角度来看,我们会有很多整体性的考量,拿框架来说,我会尽量提供尽可能多的特性。

1、React & Angular

React 接近于原生库,Angular 则提供更多抽象概念。

很少有人会去说清楚原理,这个库(React)专注于提供一个非常基础的 UI 模型,它专注于提供更底层的原生实现,基于此你可以构建出一套属于自己的抽象。

有意缩小职责范围(设计理念),这也是 React 整个生态系统非常活跃的原因所在,React的社区环境就像个商城(系统),围绕着 React 的核心模型自底向上建立起来的一整套生态系统。

另外一方面,像 Angular 以及其他的一些框架,如 Ember、 aralia 这种,则更像是大教堂吧。
它们则是自上而下进行设计的,在设计过程中,用户可能会遇到的问题都被考虑在内。

例如你们在日常开发中会经常遇到的表单验证,动画效果等等。

为了让框架可以给我们提供一个解决方案,在这个框架设计之初,我们就要以自上而下的方式来对它进行设计,即我们需要去思考如何将所有事情放到一起去工作。

有意扩大职责范围(设计理念),这个设计理念就是当你尝试解决一个问题时,你在框架内就能找到解决方案。

我们把这称之为大小职责范围(这里指两种设计理念),而这也没有好坏之说。

2、Small Scope

小的职责范围(设计理念)它的好处在于,刚开始的时候需要理解的概念很少。

而且它具有更好的灵活性。由于框架、库只提供了部分底层的原生实现,所以当你需要一个组件类的话,它得有一些 Props,然后你可以通过 Props 来传递数据,返回 VDOM 节点。

zhouyu1993 wechat
扫一扫上面的二维码,奇妙的世界等着你!
坚持技术分享,您的支持将鼓励我!