[博文分享] 2016 年后 Web 开发趋势是什么

2016-05-03 16:14:45 +08:00
 yafeilee

Rewriting your Frontend Framework every six week !!!

近二年的进展

前端发展日新月异, 甚至有一句戏言: "每六星期重写一个前端框架", 行业是像火箭一样, 但我们前端工程师该何去何从呢?

我们来谈谈这个问题.

先来看看最流行的几项技术栈:

流行不一定是发展最快, 我们再来看看近二年发展最快的几项前端技术栈:

各大框架都在迅速发展中, 它们有几个共性的发展方向:

分析了众多目前最流行的前端框架, 大家可能越来越胡涂了:

到底谁才是最值得我们去投入的技术呢?

接下来, 我们去掉一堆术语, 来从前端的定义本质来看它的发展.

近二年本质的演进是什么

前端就是面向用户这一端的技术, 然而, 随着时代的发展:

而 jQuery, ProtoypeJS 等只解决了 Javascript 工具库的问题, 但工程化需求无好的解决方案.

前端工程化迫在眉捷. 而且有以下要求:

  1. 最好是纯 Javascript 方案
  2. 支持模块化
  3. 业务代码与框架代码分离
  4. 可测性

于是, 产生了几种不同的演进方案.

后端渲染技术:

ajax -> pjax -> sjr ( 需要服务端提供支持 )

后端渲染技术很快就发展到顶了. 但技术理解还是足够简单的. 我们还是回到前端框架上.

NodeJS, AMD(CMD), ES6 的出现, 使得组织起一个前端框架成为现实. 于是乎, 百团大战, 出现了上面众多框架混战的画面.

无论是 AngularJS, EmberJS, ReactJS, VueJS 都是围绕着这几点进行的不同的尝试.

但结果如何, 我们站在一个更高的高度重新思考 web 开发.

真正的用户市场需要什么

对用户

对开发者

再次思考, 我们要不要前后端分离? 哪些前端框架更满足我们以上的条件?

作为 Rails 工程师, 我也一直在思考一个问题: Rails 是否在前端上走上了绝路?

对于不熟悉 Rails 的朋友, 我还是简单回顾下 Rails 的前端是什么:

相比 php, java, python 等语言下的传统 web 框架来说, Rails 的前端技术还是非常丰富的.

关于各个框架我列了一个分数比较, 10 分为满分, 每个列会加在一起算成一个总分.

从上表可以看出:

Rails 这类的全栈框架特点有

优势:

缺点:

ReactJS 学习成本较低, 通过 webpack 与 npm 的配合, 能够达到不错的可维护性, 但开发成本偏高, 这也是组件化的缺点之一.

而 EmberJS 学习门槛过高, 而且 EmberJS 发展也比较迅速, 不利于学习掌握, 相对而言, 总分也不会太高.

MeteorJS 也被我列在这里, 总分最低, 所以仍然不推荐学习, 除非你的应用属于实时应用.

我们再重新思考组件化, 组件化优势在于接口清晰, 可维护性高, 但开发成本是比较高的, 前端属于工程而不是科学, 所以, 我觉得组件化是对的, 但不要过于极端把所有的 dom 都组件化.

而且, 组件化也对现有的基础技术栈进行了破坏.

通过以上的分析, 我们基本上了解了现有技术栈的情况. 那我们该继续学什么? 这才是本文的重点.

所有的一切, 都是围绕着组件化, 可维护, 高效开发, 移动支持而生, 而它们的核心都是还是最基础的东西:

一句话, 还是应该先把基础打好.

基础技术栈

应当好好掌握的内容:

你必须是前端工程师, 同时又是后端工程师, 才能真正摸清晰当下时代的发展, 成为弄潮儿!

预测未来

首先, 我在 2014 年分析 web 开发的文中提到的 gulp, grunt 都已经成为过去式了. Bower 也已经有点不合事宜了.

目前前端构建建议使用 webpack 和 npm 足够, 不需要更多的工具链, 应该越简单, 越顺手!

列几个关心的问题尝试预测一下

重新思考 web 开发

真正能长远的前端技术一定是简单的, 专注的, 比如 jQuery. 但目前几个框架都或多或少存在着问题.

ReactJS 不是表面那么简单, 而 AngularJS 更加复杂.

是否有更简单有效的解决它们的问题, 则能够成为下一代 web 前端框架.

Windy 出品

5388 次点击
所在节点    程序员
22 条回复
chimingphang
2016-05-03 16:54:38 +08:00
好文
astrorobbie
2016-05-03 17:09:10 +08:00
长知识了
Arrowing
2016-05-03 17:18:00 +08:00
ES6 新特性很多,但是目前很多浏览器仅支持部分或者不支持。
学习成本也是比较高的,很多新花样,比较复杂,个人感觉现在优化级还没那么高。
common07
2016-05-03 17:27:08 +08:00
@Arrowing chrome 的新版本 52 都要支持 ES7 了,就问你怕不怕
moe3000
2016-05-03 17:34:36 +08:00
干货啊
sss3600123
2016-05-03 17:56:45 +08:00
get 到新姿势
jarontai
2016-05-03 18:01:19 +08:00
好文,但部分关于 angular2 的观点有些疑问,比如: ES6 能取代依赖注入带来的好处?
yafeilee
2016-05-03 18:16:31 +08:00
@Arrowing 先学着, ES7 也只是会不断增加和改进特性. 依靠标准, 很多事情可以简化, 比如 AMD, CMD, requirejs 都可以不用了.

@jarontai ES6 的 import/export, 以及 class, module 可以让 AngularJS DI 不那么必要, 而 DI 实际上还带来了一定的复杂度. 所以我的观点是, 不必要非要引入依赖注入了.( 在前几年, 依赖注入的好处就非常明显了 )
murmur
2016-05-03 18:46:26 +08:00
依赖注入其实挺好的,这东西跟 java spring 那堆挺像,不知道为啥写前端的不喜欢这个东西
k9982874
2016-05-03 18:52:36 +08:00
这几年流行把并不流行的旧技术换个高大上的新名词重新推一把
markocen
2016-05-03 23:24:25 +08:00
我觉得前端 View 这一层 Vue 和 React 比 Angular 好了不少, 但 Angular 定位是前端的全方面解决方案, 很多公司还是会选择 Angular , 尤其 Angular 2 的一些新特性比如前后端同步 rendering , 层次依赖注入, pipes 感觉都是大型 web 项目需要的,
个人感觉中小型项目用 Angular 2 可能会有些 overkill
thwawar
2016-05-04 08:56:12 +08:00
@Arrowing 敢情你从来没听说过 babel
Arrowing
2016-05-04 09:45:53 +08:00
@common07 支持也没卵用啊,不能普及,了解下即可。

@thwawar 不就是把 ES6 代码编译成 ES5 吗?和直接使用 ES6 有关系?最近在学 ES6 ,还会不知道这个?就是学习了才觉得复杂了好多,但是各大浏览器厂商还没跟上,一年一次的更新到时候恐怕会更乱。
VtoEXL
2016-05-04 09:59:15 +08:00
喜欢 vuejs
liuzhen
2016-05-04 15:19:17 +08:00
反感 requirejs
h0wardc
2016-05-04 17:42:29 +08:00
感覺 browserify 比 webpack 好上手:

[substack/browserify_for_webpack_users.markdown]( https://gist.github.com/substack/68f8d502be42d5cd4942)
AlexMeng
2016-05-04 18:58:59 +08:00
好文支持,火钳留名, Mark 一下
thwawar
2016-05-04 19:14:20 +08:00
@Arrowing 都用 Babel 了,你管它浏览器支持不支持?
yhylord
2016-05-04 19:30:18 +08:00
求问服务器渲染和后端渲染的区别是啥
yafeilee
2016-05-04 20:46:39 +08:00
@h0wardc webpack 规则简单强大, browserify 易于理解. 个人感觉还是 webpack 更易于开箱即用.

@yhylord Let's google for that...
http://lmgtfy.com/?q=server-side+render+vs+backend+render

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/276028

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX