我对前端的认知

说明

刚开始的时候 我是看着JavaScript高级程序设计入的门,但那时还是jquery为主的时代,那时候的前端大多数时候只是一个切图仔的角色,那时候我们写前端就是jQuery一把梭,就是干,干就完了。

现在前端界有三大框架横行,Vue,React,Angular,几乎是所有身为一名前端工程师所必备的一项技能。

但是我不知道有多少人仔细思考过为什么会这样?

那为什么现在人们需要选择各种框架了呢?

其实之所以现在我们需要选择框架,本质上是因为我们面临的需求变了。大家肯定都明白如果我们只写一个纯展示信息的页面,没有任何交互功能的页面,其实即便是现在,我们也是不需要选择框架的,我们只需要写几行CSS和HTML就可以完成任务。 所以是因为我们面临的需求变得复杂了,我们的应用经常需要在运行时做一些交互。 这里面有三个很重要的字我标了粗体,叫做运行时(Runtime)。现代的前端开发,我们开发的应用经常需要在运行时来做一些交互,这些交互在早期只是个幻灯片或者Tab切换下拉菜单等一些简单的交互,这些交互用jQuery实现完全没什么问题。但现代的前端我们的目标是用Web去PK原生应用,去和Native进行PK。 那这个时候我们会发现用jQuery来开发应用,我们的代码变得很难以维护,那为什么使用现代框架比如Vue,React等就变得容易维护了呢? 这里面请容我讲一个故事,一个小插曲,前几天我在一个微信群里面有人讨论,Vue和jQuery的区别是什么,有人非常强烈的说什么差别是Vue有组件,有什么这个那个的一些特性。 当时我在微信群里说了我的观点,我说Vue和jQuery之间的区别只有一点,声明式与命令式。 我们可以想一下,我们用jQuery去操作DOM的目的是什么?是为了局部更新视图,换句话说是为了局部重新渲染。 jQuery是命令式的操作DOM,命令式的局部更新视图,而现代主流框架Vue,React,Angular等都是声明式的,声明式的局部更新视图。 为什么声明式的操作DOM就可以让应用变得好维护了呢? 弄明白这个问题首先我们先简单介绍下什么是命令式,什么是声明式。

什么是渲染?

经过前面的介绍,你会发现其实现代主流框架要解决的最本质的问题依然是渲染,只是不同框架之间的解决方案有差异,那么什么是渲染? 现在开发前端,我们的应用在运行时需要不断的进行各种交互,现代主流框架让我们把关注点放在了状态的维护上,也就是说应用在运行时,应用内部的状态会不断的发生变化。 而将状态生成DOM插入到页面展示在用户界面上,这一套流程叫做渲染。

最后

最后我想说的话是,现在的前端我个人感觉有点浮躁,很多人都在追新,每天关注一些今天出了一个新特性,明天出了一个新框架什么的,对于这些我是赞成的,但是我更希望在追新的同时,要看到它的本质。 所有技术解决方案的终极目标都是在解决问题,都是先有问题,然后在有解决方案,解决方案可能并不完美,可能解决方案有很多种,那么他们之间都有哪些优缺点?解决问题的同时各自都做了哪些权衡和取舍? 我们要透过现象看本质才不至于被表面所迷惑。

上次更新:
作者: ganfengchi