加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-08-05 13:41:47 所属栏目:建站 来源:qiangdada
导读:特别说明 这是一个由simviso团队对 JSConf.Asia 中关于前端框架设计取舍相关话题进行翻译的文档,内容并非直译,其中有一些是笔者自身的思考。而分享者正是 Vue.js 的作者 @尤雨溪,Vue 仓库地址:github.com/vuejs/vue 让我们一起来了解下在当前框架三足

举一些大家可能比较熟悉的代表性的例子,React 接近于原生库,Angular 则提供更多抽象概念。

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

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

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

另外一方面,像 Angular 以及其他的一些框架,如 Ember、 aralia 这种,则更像是大教堂吧。

它们则是自上而下进行设计的,在设计过程中,用户可能会遇到的问题都被考虑在内。

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

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

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

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

我想再次强调下。

2、Small Scope

优点

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

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

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

最重要的是,你可以构建任意复杂的系统。

React 有一个非常活跃的生态系统,我们能看到它拥有一些非常灵活的工具,然后,我们可以基于它们发挥出更大的创造力,而这些很棒的想法都来自 React,React 社区。

另外,有意缩小职责范围,也可以让团队拥有更小的维护层面,以便他们可以专注于他们认为重要的事情。

这样团队可以专注于探索一些比较有创意的点子,这也是为什么 React 可以花这么多时间来做 concurrent mode、suspense、React Hooks 以及在过去几周或几个月内一直在创造的所有的这些有趣的东西。

实际上他们在这些事情的开发上已经花了好几年了,只不过因为它们的粒度比较小,正是因为这样他们才能更加专注于这个事情上。

缺点

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

当然,小范围的设计也是有一些明显的缺点的。

首先第一点,当你想用一个简单的概念去解决一个本来就很复杂的问题的时候你需要做更多的钻研工作。

我特别喜欢 Steele 这个家伙在一场演讲中说的一句话:“培养一种语言”。在演讲期间,他给自己制定了一条规则,他在演讲期间必须使用单音节词,如果你想用任何类似于多音节词的话,他必须先用单音节词来定义它。

他只有非常有限的、非常原始的一些东西,去构建一些复杂的想法。

所以你可以想象一下那次演讲是怎么回事。

在他每次想要说出自己喜欢的一句话之前,他都要翻出一些幻灯片然后找出一堆单词,然后继续。这有点像用非常低级的原始语言去构建一个非常复杂的生产级别的应用程序。

你必须构建大量的抽象概念,以便在此过程中提高自己的效率。

正因为如此,模式自然会随着时间的推移而出现。

当我们说 React 是真的容易上手的时候,我们是否有些忽略了你或多或少需要学习 Redux 的事实。在你认为自己是一名真正的 React 开发人员之前,你必须先去了解 HOC 高阶组件、render props。然后现在,你又要去学习 Hooks 以及在 JS 中使用 CSS 的各种方式。

尽管这些模式随着时间的推移而出现,但它们却变成了半需要的状态。如果你不了解这些,你真的可以称自己是一名 React 开发人员吗?

而这些东西往往没有官方文档。如果你去 React 官方网站,它是不会告诉你某个 CSS 和 JS 的解决方案的,你必须自己去研究并学习它。

这就是为什么使用者真的需要有自主学习能力的原因所在。

现如今,生态系统发展太快可能会导致碎片化和使用者的不断流失。我相信早期 Flux 思想的追随者,会发现每天都有一个新的 Flux 方案具体实现,然后每个 Flux 的具体实现都会对应新的 CSS/JS 的实现。

这样很好,同时好处就是总会有新的想法出现。同样,我们也在努力寻找最佳方案。

但是,这对于那些只想跟在后面去使用的人来说是不好的,你会不断的有FOMO思想(Fear of Missing Out,害怕错过),总是怕错过下个最好的东西。

3、Large Scope

我们已经说完了小职责范围(设计理念)的缺点。现在让我们来谈谈大职责范围的一些优点。

优点

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

最明显的优点是可以通过构建抽象概念来解决最常见的问题。

如果你只是想做一些开发,我只需要一个路由、一些动画以及一个 HTTP 客户端来获取一些数据。

像 Angular 这样的框架则提供了所有你需要的东西,来实现这一目标。

事实就是你不必到处查资料,你只要照着它的文档去用框架,你就可以搞定这些事。

集中式的设计确保了它本身与其生态系统的一致性。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读