GithubHelp home page GithubHelp logo

Comments (6)

ascoders avatar ascoders commented on April 28, 2024 1

其实这篇文章覆盖范围很广,因此标题由《dob - 跳出框架看哲学》改为 《数据流哲学》。

from weekly.

ascoders avatar ascoders commented on April 28, 2024

首先数据流管理模式,比较热门的分为三种。

  • 函数式、不可变、模式化。典型实现:Redux - 简直是正义的化身。
  • 响应式、依赖追踪。典型实现:Mobx。
  • 响应式,和楼上区别是以流的形式实现。典型实现:Rxjs、xstream。

当然还有第四种模式,裸奔,其实有时候也挺健康的。

数据流通用的准则是:副作用隔离、全局与局部状态的合理划分,以上三种数据流管理模式都可以实现,唯有是否强制的区别。

从时间顺序说起

一直在思考如何将这三个思维串起来,后来想通了,按照时间顺序串起来就非常自然。

暂时略过 Prototype、jquery 时代,为什么略过呢?因为当时前端还在野蛮人时代,生存问题都没有解决,哪还有功夫思考什么数据流,设计模式?前端也是那时候被觉得比后端水的。

好在前端发展越来越健康,大坑小坑被不断填上,加上硬件性能的提高,同时需求又越来越复杂,是时候想想该如何组织代码了。

最先映入眼帘的是 angular,搬来的 mvvm **真是为前端开辟了新的世界,发现代码还可以这么写!虽然 angluar 用起来很重,但 mvvm 带来的数据驱动**已经越来越深入人心,随后 react 就突然火起来了。

其实在 react 火起来之前,有一个框架一步到位,进入了 react + mobx 时代,对,就是 avalon。avalon 也非常火,但是一个框架要成功,必须天时、地利、人和,当时时机不对,大家处于 angular 疲惫期,大多投入了 react 的怀抱。

可能有些主观,但我觉得 react 能火起来,主要因为大家认为它就是轻量 angular + 继承了数据驱动**啊,非常符合时代背景,同时一大波概念被炒得火热,状态驱动、单向数据流等等,基本上用过 angular 的人都跟上了这波节奏。

虽然 react 内置了分形数据流管理体系,但总是强调自己只是 View 层,于是数据层增强的框架不断涌现,从 flux、reflux、到 redux。不得不说,react 真的推动了数据流管理的独立,让我们重新认识了数据流管理的重要性。

redux 概念太超前了,一步到位强制把副作用隔离掉了,但自己又没有深入解决带来的代码冗余问题,让我们又爱又恨,于是一部分人把目光转向了 mobx,这个响应式数据流框架,这个没有强制分离副作用,所以写起来很舒服的框架。

当然 mobx 如果仅仅是 mvvm 就不会火起来了,毕竟 angular 摆在那。主要是乘上了 react 这趟车,又有很多质疑 angular 脏检测效率的声音,mobx 也火了起来。当然,作为前端的使命是优化人机交互,所以我们都知道,用户习惯是最难改变的,直到现在,redux 依然是绝对主流。

mobx 还在小范围推广时,另一个更偏门的领域正刚处于萌芽期,就是 rxjs 为代表的框架,和 mobx 公用一个 observable 名词,大家 mobx 都没搞清楚,更是很少人会去了解 rxjs。

当 mobx 逐渐展露头角时,笔者做了一个类似的库:dob。主要动机是 mobx 手感还不够完美,对于新赋值变量需要用一些 extendObservable 等 api 修饰,正好发现浏览器对 proxy 支持已经成熟,因此笔者后来几乎所有个人项目几乎都用 dob 替代了 mobx。

现在前端已经发展到可谓五花八门的地步,typescript 打败 flow 几乎成为了新的 js,出现了 ember、clojurescript 之后,各大语言也纷纷出了到 js 的编译实现,陆陆续续的支持编译到 webassembly,react 作者都弃坑 js 创造了新语言 reason。

之前写过一篇初步认识 reason 的精读

能接下来这一套精神洗礼的前端们,已经养出内心波澜不惊的功夫,小众已经不会成为跨越舒适区的门槛,再学个 rxjs 算啥呢?(开个玩笑,rxjs 社区不乏深耕多年的巨匠)所以最近 rxjs 又被炒的火热。

from weekly.

ascoders avatar ascoders commented on April 28, 2024

由于这是一篇佛系文章,所以不会得出你应该用 某某 框架的结论,你应该当作消遣来阅读。

from weekly.

NE-SmallTown avatar NE-SmallTown commented on April 28, 2024

总觉得上面一段是「序言」 😄

from weekly.

ascoders avatar ascoders commented on April 28, 2024

没错,是序言 ^_^

from weekly.

AliSnowaroma avatar AliSnowaroma commented on April 28, 2024

从点到面,思考产生价值

from weekly.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.