前端框架种种

来源:互联网 发布:企业软件收费模式 编辑:程序博客网 时间:2024/06/15 06:56

前端框架种种

其实我这里说的前端框架,说的只是web前端框架(以下简称前端框架),因为从本质上来说,所有与用户发生交互,并在本地编译环境下处理逻辑和展示效果的,都是前端。这么说来,其实安卓,IOS的APP也能归属于前端。


前端框架分类

前端框架,就我目前接触过的来说,我觉得应该分为四块:

1.专门做样式展示的UI框架

这类型的框架侧重于css(说侧重),例如,jquery UI、jquery EasyUI、bootstrap、extjs等等。
我最早接触到的是jquery UI,这也是老式PC端web后台管理系统经常使用的框架了,样式朴素、朴素、朴素(重要的说三遍)。这里不得不提现在使用较多的Bootstrap,样式简介,颜色偏淡,行距适中,让人看着很舒服。布局上使用栅格系统排列,类似于表格形式,更显得整齐。而且基于bootstrap的插件也很丰富。

2.工具类前端框架

这类前端框架,不处理逻辑,不做样式,也不帮你整理代码,只注重简化底层代码和为你提供经常使用的工具函数,jquery和zepto就是典型的这种类型框架,与其说是框架,库好像更适合点。
上手快,目的明确,代码不抽象。缺点是,冗余代码多,不易管理维护。

3.模块化前端框架

目的不用说,模块化,隔离、组织复杂的JavaScript代码,让代码更具有管理性、可维护性和逻辑处理分工明确化。前端模块化主要是分为AMD和CMD两大阵营,但是ES6开始普及之后,这类框架的作用应该会渐渐淡去吧。
AMD(Asynchronous Module Definition异步模块定义):requirejs
CMD:seajs
我其实接触requirejs更多一点,主要是为了处理SPA的不同子页面模块。要说两者之间的区别,一下引用1有玉伯大神在知乎上的解答,原回答链接在本文下方。
1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
2. CMD 推崇依赖就近,AMD 推崇依赖前置。

// CMDdefine(function(require, exports, module) {   var a = require('./a')   a.doSomething()   // 此处略去 100 行   var b = require('./b') // 依赖可以就近书写   b.doSomething()  })// AMD 默认推荐的是define(['./a', './b'], function(a, b) {    a.doSomething()    // 此处略去 100 行    b.doSomething()    ...})

虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。
3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
4. 还有一些细节差异,具体看这个规范的定义就好,就不多说了。另外,SeaJS 和 RequireJS 的差异,可以参考:https://github.com/seajs/seajs/issues/277

4.模板引擎框架

这种就是我们口中经常说到的angular,react,vue,当然这些是最近几年内比较热门的,还有之前比较热门的基于innerHtml的string->dom的框架。
(这里需要慢慢总结,之后我会结合github上自己的开源项目,对react和vue进行详细博客总结还有源码阅读总结…)

(预留位置今后续写)

总结

前端技术框架更新的很快,github上每年都会有大量前端框架出现,关注,热门,然后冷却,框架技术永远没有止境,学好基础才是王道。
框架本身是为了程序员服务,并不是说所有框架都比你源码快、好,它们只是为了帮助程序猿以更少的代码更多着眼在用户个性化的业务处理上,同时,保证代码的可维护性,和防止程序员写出不易发现的基础层面上(如渲染)的错误代码。就比如你如果更改了页面上的一个数字,react基于virtual dom检查后更改,难道就比你自己手写js改更快吗?它还多一大堆检查和校验算法过程啊。但是,比如这也要改,那也要改,你记得住吗?你能保证每次改页面你都不会写错代码吗?就算你能保证你能处理每个地方都不出错,那么,这么多代码你写不累吗?你走了,下个人来看你代码不累吗?这,就是框架的作用。


  1. 作者:玉伯
    链接:https://www.zhihu.com/question/20351507/answer/14859415
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ↩
0 0