2014 年末有哪些比较火的 Web 开发技术?

前端+后端
关注者
2,999
被浏览
170,990

23 个回答

Angular、React、Polymer

我解释一下为什么Angular能够这么火,它主要解决的是哪个层面的问题呢?它解决的是快速开发的问题。我们知道,有很多b/s化的产品,其本质还是像c/s,只是把这个c做到浏览器里来了,这样的一些系统,它免不了要在浏览器中写大量js,然后使用某种ui框架,它的协同开发人员数量会相对较大,代码量也会很多,在这类系统的开发过程中,从成本的角度要解决两个问题:

怎样让开发过程尽量快?

怎样让变更成本尽量小?

解决这两个问题的办法是组件化。所谓组件化,在传统软件领域可能会有一些成熟方案,但是拿到Web,尤其Web前端这个层面,基本没有一种通用方案。组件化并不仅仅要解决“控件”这个层面的问题,还需要把业务数据和逻辑也做规约,理清他们之间的关系,而Angular“碰巧”在这个方面很有帮助,它把UI和业务逻辑隔离得干干净净,模块之间使用依赖注入来维系关系,易测试,可复用,作为架构师,也可以比较容易地对整个项目有所把控。

我们看到很多人跟风学Angular,有很大一部分并未抓住其实质,而是被一些边角优势所吸引,因此用的过程中各种痛苦,如果能够先认识到它的本质优点所在,并且认识到它确实适合自己的项目,一定能得心应手,左右逢源。

当前Angular版本中也是存在一些问题的,我之前写过两篇,近期可能还会写一些来说明。Angular官方也意识到这些问题,他们规划了2.0版本,这个版本的思路非常好,有兴趣的人建议你关注一下,我稍后也会就此事发一篇评论博客。

【补充】,评论博客在这里:

浴火重生的Angular · Issue #9 · xufei/blog · GitHub

原文翻译在这里:

有关Angular 2.0的一切 · Issue #8 · xufei/blog · GitHub

现在我们再来看看React。

为什么很多人被React吸引呢,因为他从另外一个层面解决组件化的问题,而这种方式可能对前端来说更友好,而且还能够在服务端解析模板。喜欢React的人常常用它的虚拟DOM、精确更新来打击其他框架,诚然,它在这方面做得非常好,但并未高到影响全局的程度。这是什么意思呢,它是一个主要针对DOM组件的库,如果用于完整的大型产品解决方案,还是有所欠缺的,它的优势集中在上层,但其实从宏观角度看,这一层的效率并没有那么重要,比如说你是一架很精巧的挖掘机,自带各种分拣功能,但很多时候,大家是很粗暴地去挖东西,就像挖煤那样,你在细节上有多么高效并不重要,只有在一些需要精确控制的场景下,优势才能发挥出来。况且,当Web Components出来之后,虚拟DOM是有很多没法处理的问题的,而其他框架改进数据绑定的效率之后,也能够把这方面的差距缩小很多。

虽然我说的都是缺点,但它的实现方式确实别致,值得一看。

最后看Polymer吧,它是以Web Components的理念为核心的,我本来想说点什么,但觉得自己对它的理解还不深刻,很可能误导人。算了让别人说吧。

@徐飞

评论React的观点总结一下就是:React最大的亮点是虚拟DOM,它是上层的,它有多高效对于大规模应用开发宏观上的不是最重要的。

这个我同意,对于一个大规模应用的架构设计来说,解决DOM操作这个窄的问题当然不是最重要的。但是怎么能说“喜欢React的人常常用它的虚拟DOM、精确更新来打击其他框架”就太主观了。虚拟DOM只是React的一个特点,React是声明式的,同时绑定状态,UI更新时自然要设计一套高效的算法。

在谈到Angular时提到的那些优点:UI和业务逻辑的隔离、模块间的依赖关系、易测试、易复用,React同样做的很好(或许更好)那些不是Angular的特别优势,应该说是所有基于组件思维架构的优势。

React和Angular作为新一代的前端开发框架颠覆的是上一代以Backbone为代表的以传统MVC实现开发应用的方式。或许React引入JSX太刺眼了,让人总觉得是在JS里拼HTML模板,这明显是认识上的误区,那些只是组件的组合用法。传统字符串形式的Javascript模板已经过时了,H5标准里的template也不是字符串,这些都是被新事物扬弃的。

在开发中,我觉得React的可预测性的特点对代码维护帮助很大。扩展上也充分体现了组件的灵活性。我最近正在做一套复杂的管理后台,各种复杂表单,需求也改来改去,应对起来还是很从容的。原来分享过一张图,用React很自然的使项目形成一种扁平化的组织形式:

report.png_免费高速下载

。这是一个好的框架应该有的效果,不是越来越臃肿。

接下来值得探求的是组件之间的通讯、数据流的控制。之前微博上分享过一张图,想表达的是当所有组件产生的数据汇总到最上面的逻辑层时,感觉好极了。再接下来我其实对CSP感兴趣。

最后要说,还是要用一用。开始用React可能有点不顺,慢慢会越来越喜欢它;P