ziwei3749 / blog

已停止更新..转移至 https://segmentfault.com/u/ziwei3749
9 stars 1 forks source link

不黑不吹聊聊前端框架 #12

Open ziwei3749 opened 6 years ago

ziwei3749 commented 6 years ago

不黑不吹聊聊前端框架

不黑不吹聊聊前端框架

一:组件的理解和分类

关于模板和JSX的对比:

JSX最大的特点是灵活性,因为它具备JS这个语言的完全功能。 JSX最大的优点是在第四种,这个功能型组件上的强大是远超vue的模板的 但是vue模板呢,在展示型组件上写起来更爽,模板会强制性的让你把尽可能少的逻辑写在视图代码里。

关于组件化的Colocation

三大框架都是组件化的,都有会以一个组件为单位划分,把html.css.js该放到一起的放到一起 而以前流行的是,css js html文件

二: 变化侦测机制

Declarative Programming 声明式编程 Imperative Programming 命令式编程

React中: view = render(state) Vue中.: .vue文件可以理解为跟jsx一样是一个语法糖。输入就是data,编译.vue文件就相当于执行了render,输出一个dom结构

自己写一个 Virtual DOM 库并不难。

vue里可以把click写在html上,和原生JS的区别,就是作用域的问题。原生的写出来作用域是全局的,很伤

变化侦测分2种:

三、状态管理

rx.js也和状态管理有一点关系

总得来说前端对状态管理还没有达成共识,但又没有特别大的分歧。

在现代web框架里,状态管理主要涉及event / state / view

event发生后,触发state的改变,state的变化触发view的变化。

而声明式渲染,其实vue /react已经做到了状态变化,对应视图就变化。

状态管理解决的主要是event到state变化的管理方案,如何把这个映射的部分抽离出来,更好的维护。

尤雨溪的看法呢:

redux本身是无法处理异步的,它是交给中间件来解决的。 
react-thunk react-promise等方案,都很好用,但是写出来的代码差异有点大。

vuex觉得简单的项目不应该抽象太多层,如果真的项目复杂,也可以考虑增加rx.js来处理

这个可能是vuex/redux一点区别,但是他们也面临共同的一些问题:

缺乏划分全局状态和局部状态的标准和界限。

四、路由

只有在大型单页应用才会遇到的问题。最早的路由是比较有侵入性的,比如Ember.js

但是vue/react这种专注视图层的库出现后,其实把路由解耦出来是完全可行的。而且会发现从组件去思考,其实前端路由就是实现一个url映射到组件树结构的过程

这样考虑的话,就会觉得路由的实现,就像一个动态组件一个,url变化就切换组件。

看上去很容易,实际上路由会涉及到很多复杂情况:

真正实现起来,还是有一些复杂度的。

目前router的实现方式比较相似,但react-router4的变化较大

web路由和app路由的区别

五、CSS方案

主流的 CSS 方案

css in js可能是比较有争议的

六、构建工具

构建工具解决的其实是几方面的问题:

关于部署 https://www.zhihu.com/question/20790576

服务端渲染 ssr.vuejs.org

跨平台渲染

不一定用虚拟dom,跟底层渲染引擎解耦就行。