JavaScript 2016 年后 Web 开发趋势是什么

lyfi2003 · 发布于 2016年5月03日 · 最后由 sec 回复于 2016年8月16日 · 19960 次阅读
121
本帖已被设为精华帖!

Rewriting your Frontend Framework every six week !!!

写给 Rails 圈子的话

大家都在关心前端是否对 Rails 产生冲突, 甚至有人说 Rails 在前端已经走入死胡同, 到底前端是怎么样? 会怎么发展? 以 Rails 工程师的角度来看看.

近二年的进展

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

我们来谈谈这个问题.

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

  • AngularJS

    首创的双向数据绑定, 以及内置的模块注入, 以及组件化的支持, 种种优势, 使得它迅速发展起来. 在 2014-2015 年, 有调查显示, 在使用了前端框架的项目, 有 50% 以上采用了 AngularJS. 但到底值不值我们继续学习, 我们再接下来看.

    项目地址: https://angularjs.org/

  • EmberJS

    受 Rails 全栈框架的启发, EmberJS 逐步发展成前端领域的另一个 "Rails", 成为另一个独特的选择, 理论上, 你选择了 EmberJS, 就选择了一个完整稳定的生态, 不用再折腾的轮子. EmberJS 不仅全面支持模块化, MVC, 也实现了类似 AngularJS 的双向绑定( 当然原理不同 ), 甚至还做到了内置的打包和发布应用功能. 总而言之, 它是一个十分全面的前端框架. 事实上, 如果说 AngularJS 是当前短暂的前端史的一个高峰, 它就是另一个高峰. 但最近, 人气有一定的下降, 原因何在, 我们再分解.

    项目地址: http://emberjs.com/

  • ReactJS

    ReactJS 自发布之始, 就人气很高, 它是第一个采用虚拟节点( virtual dom )技术的框架, 通过这个技术点, 它独创性地整合了函数性编程的理念, 采用单向数据流来设计 dom 渲染与比对, 使得它轻量和灵活, 事实上, 它本身只专注于如何渲染 UI, 也不与 AngularJS 和 EmberJS 有冲突. 换言之, 你可以将它整合到其他框架中.

    随着 ReactNative 和 Redux 方案的出现, ReactJS 重新回到前端的浪尖, 因为其简洁优雅的实现和对 Native APP 的冲击, 又一次成为新的弄潮儿.

    但以后会怎么样, 谁也不知道, 但我也会再给一些解读.

    项目地址: https://facebook.github.io/react/

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

  • ReactJS

    上文已经提到, React 由于本身的简洁性和对组件化专注的实现, 一直没有被新的 ES6 标准和前端思潮落下, 它几乎不受 ES6 的影响, 以及前沿性的支持 native app 开发( 通过 ReactNative ), 所以一直发展趋势良好.

    而 AngularJS 则不一样, 由于 ES6 的发布, 使得它的依赖注入特性成为鸡肋, 以及 AngularJS 第一版对组件化支持的蹩脚实现( 能支持是一回事, 好用是另一回事 ), 而组件化则学习成本过高, 过于复杂, 所以 AngularJS 决定推翻设计重新开发第二版, 而第二版过于激进的采用 Typescript, 完全不兼容的第一版的设计, 以及各种魔法的应用, 使得它离前端越走越远.

  • VueJS

    VueJS 是近二年的新秀, 它起步之初, 只是一个简化版的类似于 AngularJS 双向绑定的实现的研究( 当然原理并不同 ). 但其理念与 ReactJS 相近, 只是专注于实现数据绑定, 模块化与组件化, 所以足够的简单灵活.

    随着生态的快速发展, VueJS 正好接了 AngularJS 第一版的班, 又改良了 AngularJS 的错误设计( 事后来看, 依赖注入与组件化两部分是比较失败的设计 ), 整体发展迅速, 逐步成为后起之秀.

    项目地址: http://vuejs.org/

  • MeteorJS

    MeteorJS 本不适合与上述几个前端框架比较, 因为它实际是一个全栈框架, 更像 Rails 这种角色, 但由于它是纯 Javascript 的方案, 所以还是放在这里.

    如果说上述前端框架都是解决前端工程化的产物, 那 MeteorJS 是一个颠覆思维的 web 开发框架, 它将Javascript 同构技术应用到极端, 再整合 websocket 进行实时数据通知与热代码更新, 不同于前后端分离的理念, 它在开发者角度完全没有前后端的概念, API 既在前端又在后端, 再加它全生态的支持( 移动 app 支持, 应用发布), 也是一个全新的视角, 由于它发展速度极快, 所以列在这里.

    项目地址: https://www.meteor.com/

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

  • ES6 支持

    每一次 Javascript 的新标准发布, 都是各大框架更新的好机会, 所以 ES6 是肯定得到各大框架的良好支持, 建议大家一定要学好.

  • web 组件化

    毋庸置疑, 组件化是现代前端工程化中极为重要的特性, 甚至 google 还专门出了 Polymer 这个只做组件化实现的框架. 所以每一个够格的前端框架都非常重度支持它. 同时, 组件化也将作为 w3c 标准予于定义, 所以前端框架仍将不留余力地改进与标准的兼容.

  • Server-side Render

    服务端渲染技术是 2016 年才开始火的概念, 它与传统的后端渲染不同, 为了解决前端框架第一次加载慢的问题, 以及 SEO 问题, 而提出的解决方案. 之前有 prerender, 现在各大框架都在尝试在内部集成并支持它. 但我个人觉得, 带来的问题远比解决的问题更多, 比如要求我们开发的时候有更多的限制.

  • App Render

    现在有一种大前端的概念, 可以理解为 web 前端对 App 开发的支持, 包括 Ionic ( 基于 AngularJS ), React Native( 基于 React 理念 ), Meteor 都是针对 App 开发的痛点而生.

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

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

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

近二年本质的演进是什么

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

  • 用户体验要求越来越高( 加载速度快, 响应快, 无闪烁 )
  • 前端需求越来越多
  • 前端代码越来越庞大
  • 移动端快速发展对 h5 前端的需求

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

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

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

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

后端渲染技术:

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

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

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

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

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

真正的用户市场需要什么

对用户

  • 更快的响应速度
  • 更好的体验

对开发者

  • 更快的开发速度
  • 更好的可维护性

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

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

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

  • jQuery
  • UJS
  • Assets pipeline
  • SJR( 服务端 JS 生成技术 )
  • Turoblinks( 一种极小成本实现的单页效果的技术 )

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

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

从上表可以看出:

Rails 这类的全栈框架特点有

优势:

  • 开发效率极高
  • 通过 Turoblinks 技术, 体验也不错.
  • 也能支持混合应用开发

缺点:

  • 前端代码可维护差

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

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

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

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

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

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

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

  • Javascript ( ES6, NodeJS )
  • HTML
  • CSS
  • API

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

基础技术栈

应当好好掌握的内容:

  • Javascript 语言( 直接看 ES6 相关的 )
  • NodeJS 生态( npm 与相关的包 )
  • webpack ( 了解如何打包, 发布 )
  • HTML ( 尤其是 form 标签, 以及 HTML5 的内容 )
  • CSS ( 学习盒模型, 最新的 flex 布局, 以及 CSS3 )
  • API ( 掌握如何开发 API )

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

预测未来

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

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

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

  • NodeJS 做后台开发怎么样 ?

    NodeJS 已经是前端框架的一部分, 是极为成功的, 但对于 NodeJS 做后台开发说实在的, 它能够占一定的市场, 但将会非常少( 低于 5% ). 所以做 php 或 java 开发的朋友倒不用担心, 但如果只是搬砖写简单 API 的话, 就有危险了.

  • Rails 还行不行 ?

    Rails 已经到了一定的顶点, 不可能再突破性增长, 但仍然是目前最为顺手的 web 开发框架, 它的前端解决方案目前仍有不错的体验与开发效率, 但可维护性比较差, 如果是我的话, 我会带领团队采用混合式的开发, 但现在不会是引入 AngularJS 而会是 VueJS.

    但 Rails 已经到达它的极限点了, 而众多前端框架才刚刚开始.( 虽然拿 Rails 与前端框架比较不够合适 )

  • AngularJS 还是 ReactJS ?

    很简单, 建议直接上手 VueJS.

    AnguarJS 第一版是个好的框架, 但 Angular2 并不是, 所以还不如直接学习 VueJS.

    ReactJS 是个不错的框架, 但绝不是终点. VueJS 与 ReactJS 在实现上各有利弊. 两者可以择其一学之.

  • MeteorJS 值不值得学习 ?

    我的建议是不值得, 因为它一开始就走在错误的道路上, 注定后面无路可走.

  • 前端会取代 Native APP 开发么?

    一定会的, 未来 3 年后, 至少有 70% 左右的 APP 会用前端开发方案, 比如使用类似于 Ionic 或 Meteor 这样的框架.

重新思考 web 开发

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

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

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

Windy 出品

共收到 66 条回复
445
stephen · #1 · 2016年5月03日 1 个赞

用vue1.0开发过完整项目,容易学,效率也不错,是个不错的选择。

121
lyfi2003 · #2 · 2016年5月03日

@stephen 嗯, VueJS 就是接了 AngularJS 第一版的手. 有点像当年 Ruby 接了 Perl5 的一样.

445
stephen · #3 · 2016年5月03日

@lyfi2003 2.0出来了,新特性也不错,期待未来再出vue native

121
lyfi2003 · #4 · 2016年5月03日

@stephen Vue2.0 计划使用 weex 作为类似于 react native 的解决方案

15420
pathbox · #5 · 2016年5月03日

这样看 angular js 就要牺牲了吗。前端发展的速度太快了

2329
mingyuan0715 · #6 · 2016年5月03日

深有同感,前段时间团队技术选型,力排众议选择了vue + rails

121
lyfi2003 · #8 · 2016年5月03日

#7楼 @defmacro 😪 WebAssembly 很美很遥远啊!

2575
darkbaby123 · #9 · 2016年5月03日 3 个赞

我的某些看法恰恰相反:

  1. Angular 1 不是一个好的框架,Angular 2 有望成为一个好的框架。
  2. 没了解过 Meteor ,不过如果它那么没用,不至于 Vue 的作者跑到 Meteor core team 去。
4384
defmacro · #10 · 2016年5月03日

#8楼 @lyfi2003 就知道你会这么说所以我故意没提 Opal 以及用 Opal 的 volt

另外 Chrome 51 就会有 WebAssembly 了,一点也不远,2016也还有大半年

96
dd1994 · #11 · 2016年5月03日

嘿嘿说 webassembly 早的,我现在用的 Chrome 51 上已经有了

121
lyfi2003 · #12 · 2016年5月03日

@darkbaby123 我觉得你抛出自己的观点是很好的, 但缺乏了分析过程. 我的角度说明为什么 Angular2 不好:

  1. 采用了 Typescript, 事实上, 离 ES6 远的东西都是冒进的, 不好的.
  2. 仍然是复杂的, 学习成本远比 Angular1 高 ( Angular1 入门是很容易的, 也很好上手 )

这样的结果只能使之离开普通开发员.

MeteorJS 不能仅仅看当下的情况, 它实际上进入了死胡同, 本质上, 它不能算是一个前端框架, 而是一个后端框架, 它只有跟 Angular, React, Vue 整合才能进一步发展, 而如果考虑安全性的话, 同构 API 并不比原有的 Restful 有优势, 所以是一个死胡同.

Vue 的作者去 MeteorJS 是考虑了职业发展啊, 跟 MeteorJS 的前途不好并不冲突.

@defmacro volt 就不提了, 既然不看好 MeteorJS, 那 volt 就更难了. 虽然这么说, 咱 Ruby 圈子的兄弟姐妹会不太开心...

WebAssembly 是个好思路, 但离生产实践差太多, 等两年后再来写它吧.

17740
zouyu · #13 · 2016年5月03日 1 个赞

感觉目前来看 使用前端代替native app在一些轻应用上还是可以的

13116
gothic · #14 · 2016年5月03日

所以 2016 年后 Web 开发趋势是什么?简单有效的解决方案是每个大厂也是每个前端工程师追求的方向,所以会有 ng,react,vue 等一大批框架的探索。文章只是把当前流行的几个前端框架简单说了一下而已,未来前端会怎么样发展大家都不知道,大家都是在探索。 我的观点就是 React 系列技术栈依旧是目前最值得投入学习的。

121
lyfi2003 · #15 · 2016年5月03日 2 个赞

@gothic 最简单明确的答案是 VueJS, 以及 ReactJS. 但最值得学习的不是 ReactJS, 而是基础啊.

13116
gothic · #16 · 2016年5月03日

#15楼 @lyfi2003 基础咱就别说了,那是肯定的。只有技术扎实了,才能快速上手各种框架。 Vue 2.0的确优化了很多东西,尤小右也确实牛逼这么短时间搞出2.0出来,而且还不错,Weex 也即将面世,看起来都非常不错的样子。暂且不说 Weex 出来会比ReactNative 落后多少,我觉得 Vue 本身并没有什么创新性的东西,更多的是借鉴综合 ng 和 React 自己搞出来一套前端组件化模式。相反我觉得 React 的思想能走的更远,而且还有 ReactNative 这样的当红炸子鸡。当然还是那句话用哪个框架还得看团队情况和业务场景需求。 但是对有的人说我啥都没有需求,就是想学一个前端框架玩玩,那我觉得 React 系列还是首推的,当然也有牛逼的人是自己写框架玩的

17楼 已删除
23529
mizuhashi · #18 · 2016年5月04日 3 个赞

安利vue吗233,其实到了vuex之后vue和react几乎没有任何区别,都是单纯的渲染器,唯一好处就是vue是真实的dom,搞动画方便点

不过我觉得这种V层框架没什么讨论意义,都是数据直接拿来填了,但是复杂的逻辑要安放在哪里呢?好像vue-router那样把取数据安放在data函数里,我不认为是好的做法。现在的前端框架更缺少的是M层和C层吧

709
suffering · #19 · 2016年5月04日

看了下对比列表, 好像现在讨论WEB, 就是讨论前端, 后端什么的都不是个事儿. 而且讨论前端, 就是讨论JS, 似乎HTML,CSS也不是个事儿. 将这些代码的东西抛开, 似乎图形设计, SEO之类的也不是个事儿. 简而言之, 讨论WEB, 就是讨论JS.

1
Rei · #20 · 2016年5月04日 3 个赞

趋势就是全栈,区别是后端想用什么语言。

20974
excalibur · #21 · 2016年5月04日

这里居然没人吐槽 h5 逃~

68
gazeldx · #22 · 2016年5月04日 1 个赞

Vue.js没有研究过(听你这么一说,打算去研究下),Ember.js入门成本并不高,深入应该也不难(没深入研究过)。AngularJS从一开始就没有吸引到我,Meteor我也不建议大家花太多功夫学,浅尝下可以。 最值得学的我认为是React-Native。

8755
july_12 · #23 · 2016年5月04日 2 个赞

额~ Backbone有听说过吗?

10401
hxh1246996371 · #24 · 2016年5月04日 1 个赞

由于我们的后端是PHP,所以我们前端采用了:Vue + ES6 + webpack、npm 。通过nodejs做视图渲染和路由,实现前后端分离,数据直接调用API(部分API由类似leadcloud的万能接口实现)

121
lyfi2003 · #25 · 2016年5月04日

#19楼 @suffering 不是不是事, 因为后端跟设计都常年稳定, 没有大的变化. 所以重点自然在前端开发上.

#22楼 @gazeldx React Native 有点红过头了, angular2 跟 vue2, 包括 meteor 都能整合或实现类似的效果, 这也是现在 native app 开发的趋势. 更长远一点, H5 的解决方案应该更优.( 现在由于效率问题没法跟 RN 比 )

#24楼 @hxh1246996371 Nice, 有先见之明:)

2909
1272729223 · #27 · 2016年5月05日

#26楼 @darkbaby123 有没有什么工作只专注于写前端接口和算法的? 感觉前端的业务真的是太难写了。不仅要对接后端API,ajax还是fetch,各种异步处理的标准,数据结构处理,还要写组件,之下还有事件、动效,语义化HTML,CSS模块,还有UI。当然还有自动化等等。 一直没玩过emberjS,但是不知道为什么,越来越对它有好感。

2575
darkbaby123 · #28 · 2016年5月05日

@1272729223 我没什么建议。因为我觉得前端就应该懂这些东西,也要求一定的跨界能力。因为涉及的面比较广,所以开发者要做很多选择。全栈框架比较省事就是因为它帮你做了很多选择(而且都是比较优质的)。

其实广义一点说,web 开发者本身不也是要懂很多东西么?就算传统的后端工程师不是也要懂数据库设计,面向对象,数据结构和算法,分层模型,缓存,服务器优化,HTML/CSS/JavaScript 等等嘛。

3454
xwf286 · #29 · 2016年5月05日

弱弱的问一句,有没有人在不用webpack的情况下进行React + ES6 + rails这样子的开发?

31楼 已删除
121
lyfi2003 · #32 · 2016年5月05日

#31楼 @lilijreey 注意素质!

96
tonyisid · #33 · 2016年5月07日 1 个赞

一直在用react + redux 开发效率低点,但是好维护 React Native也在研究,但是没有用到生产环境,因为有太多坑要踩,希望以后慢慢成熟起来。

1471
hunter · #34 · 2016年5月08日

一直在关注vuejs,如果有单页应用场景,这些前端框架就有用武之地。前后端分离带来了额外的开发复杂度,毕竟中间需要API来结合。

所以普通的web应用以熟悉的后台送页面开始,更容易开发和见效,然后把再它们转化为Api。

除了rails,大家也可以关注padrino,基于Sinatra, 是ruby中最轻最快的web框架了

96
tvallday · #35 · 2016年5月08日

我在国外,前几年一些看起来很慢很落后很Low的传统行业的大网站现在都开始转向JS,一下子变得高大上起来。

10498
foru · #36 · 2016年5月09日

vue.js上手容易,用webpack + vue.js做了几个hybrid app,感觉足够好用了

96
jiayp · #37 · 2016年5月09日

在用opal版的ReactJS: ClearWater. 对我这个前端新手来说很不错,开发比较顺手(都是Ruby代码),运行效率比ReatJS还高. 希望用Ruby做前端的人越来越多.真正从前端到后端用ruby做全栈开发.

4584
imlcl · #38 · 2016年5月10日

Rewriting your Frontend Framework every six week+s

4584
imlcl · #39 · 2016年5月10日

很久没关注这些啦,看完基本上能补补课👍

2909
1272729223 · #40 · 2016年5月11日

#33楼 @tonyisid 维护怎么个好?

4789
ghjcumt2008 · #41 · 2016年5月11日

既然meteor这类前端框架会在未来代替native app的开发,还是有必要学习和了解一下的

18137
powermedia · #42 · 2016年5月12日

专业!

96
perect · #43 · 2016年5月12日

从16年一月份开始用的是Rails+Vue.js的搭配,看来是走对了

21306
wlchn · #44 · 2016年5月12日

目前前端React+Redux,后端Rails,维护比较方便,开发效率较高。

13927
qiao2818 · #45 · 2016年5月12日

@perect 请问如何在rails应用里面使用vue.js?有可用的gem吗?对rails版本有限制吗?

96
perect · #46 · 2016年5月13日

@qiao2818 目前是这样的,就是用Vue.js封装了一些gem组件,然后重写了Rails鹰架的模板,这个对Rails版本的限制貌似没有吧,Vue.js毕竟只是前端框架

96
ranmocy · #47 · 2016年5月13日 4 个赞

Web 是绝对不可能取代 Native App 的。技术永远只有两个发展方向,通用和专精。前者让你可以一柄利剑走天下,见谁砍谁,都砍不死但是都能砍残;后者让你打蛇只打七寸,绝不失手,但是见到熊就等同手无寸铁。 没错,全栈是很爽。一次开发,处处运行,这口号大家都听过,而且下半句也都有所耳闻。全栈适用于轻应用,但是长期维护的 App 最终一定会迁移到 Native code,原因很简单,兼容性和性能。就像 Telegram 一样,几乎都是自定义的组件,对重用通用的代码并不做过多考虑。 说以后 70% 的 App 会是 Web App 这我是信的,但是我更相信 70% 真正影响力大的 App 会是 Native 的。

15395
sevenearly · #48 · 2016年5月13日

目前H5的性能很难和native的相提并论,还有很长一段路要走

3226
xieyu33333 · #49 · 2016年5月14日

前端我用Riot

121
lyfi2003 · #50 · 2016年5月14日

@xieyu33333 Riot 初看不错, 是一个选择. thx!

1475
oth · #51 · 2016年5月15日 1 个赞

主要看历史气质,是否有造福 google 卖广告的气质,自己玩的爽,开源的玩意好像没好用的,无论前端后端 facebook 也是卖广告的,屌丝味比 google 重,加分 个人开发者看熬的年数,DHH,Matz 是典型,目前靠得住

个人,小公司搞全栈,还是侧重效率

另外单说 Rails 开发流程,使用手法,也有很多种,同样用 Rails 效率也是有差别 前端还是先跟 DHH, 一招鲜胜过鲜招学

96
bbpnb · #52 · 2016年5月16日 1 个赞

太主观了~~

  • 一年期的ng2跟现在的几乎不是一个东西,一句“Angular2 并不是(好框架)”就被否定了,这得误导不少人,angular2社区日新月异,结合nativescript的mobile方案,universal angular,一大票已经开箱即用的ui库,等等等等,不多关注真可惜;

  • vue是不错,主要体现在对开发者友好方面,但要论起资源、社区、关注度,比起reac还差的远更罔论angular。以get things done rapidly为目标的话,vue还续更多积累。也许weex能够如期望的那样发展起来后,会带动vue发展得更好。

  • meteorjs, 问题不少,主要还是在于对reactively开发方式的适应上,但要是说起meteor就用一句“除非你的应用需要实时”来盖棺定论,只能呵呵了。俺也主观一下:论起RAD,meteor秒杀以rapid著称的ror,而且是支持多种流行前端框架的SPA的,真正isomorphic的,默认realtime的,根本不用等Action Cabel什么的,社区大,发展快,资源多。可能最大问题反而是墙的存在导致初试者等待时间过长,从而产生这“东西国内没法用”进而放弃或一言以蔽之,对多数追求多快好省的rapid爱好者来说,meteor都是一个很好的选择。

  • 至于那个对比列表,只能说一百个人心中有一百个哈姆雷特。开发效率友好程度用户体验之类,本就没有benchmark,你用熟了啥,自然啥就高效了。正所谓手里拿着锤子,看啥都是钉子。有个小建议,可以到yeoman.io上试用流行的项目模板,每种都真正试试,不论node based的,还是python的,ruby的,go的,.net的,java的,都有可取之处,不同领域的专家也会给出不同结果的“体验列表”,或者在todomvc.com上吧主流前端代码都读一读,或许能列出不同结论的对比列表。

121
lyfi2003 · #53 · 2016年5月16日

#52楼 @bbpnb 别先呵呵!

Angular2 是不是好框架, 不是我说了算, 是社区说了算. 我就一个看法, 不易入门的框架都不是好框架, Angular2 就是这样.

MeteorJS 我不想呵呵, 我感觉你是完全对它没写过大一些东西而产生的感觉: 同形很牛, RT 很牛, 支持 SPA 很牛. 错了, 同形的安全问题就够吃一壶了, RT 不是必备需求, SPA 支持的还很不好. 那还有什么是本质改变的呢? 而且这些特性带来的问题更多, 我就不一一说了, 总而言之, 在我看来, 它进入了发展的死胡同而已. 就像 Rails 它也没有更多可能的特性发展了, 它的上限天花板到了.

对比列表确认是主动感受的多一些, 但也是准确的. 拿一些貌似权威模糊的结论说我的不好, 没有任何可论证的证据, 有什么意义呢?

所以, 这一通言论貌似有理, 但没任何价值给我提供, 也对用户造成不好的印象.

在这里, 我不得不回复以上几句.

96
bbpnb · #54 · 2016年5月16日 4 个赞

#53楼 @lyfi2003 呵呵也不是骂人,只是表示些不同看法而已,何必激动,呵呵。

“Angular2是不是好框架”这种话本身是伪命题,存在即合理,你说不好我还真觉得它很好但我没说说也会加上“我认为”这个限定。即便社区说的算数,也得看社区什么时候说的,我对ng2的印象越来越好是基于它这几个月的发展,包括看了ng conf 2016后的感受,以及用新它的新旧版本做过两个原型后的体验,至少可以说发展势头很好,正面评价也越来越多,我认为,ng2及其生态圈可以作为日后主流前端框架来严肃的期待。“不易入门的框架都不是好框架, Angular2 就是这样”,对此观点存疑~~

meteor这事还真让你说对了,我确实没用它做过大项目(当然什么叫大项目也可以各抒己见),不过我喜欢的和我提到的是它整体呈现出来的rapid特性,作为一个日新月异的fullstack的东西,拿它来跟ng,react, vue来比较不太适合,你说的安全问题,而且是由“同型”带来的安全问题,我不太理解,是不是指默认inscure,autopublish这种东西,还是说他的accouts那套看起来太简单以至于怀疑他的可靠性?不懂,请指教。至于“RT不是必备的”,对你的项目而言可能是,对我的不是;“SPA支持的很不好",你是说自带的blaze么?那东西好不好见仁见智,不过meteor官方就支持各种主流前端,ng1,ng2,react等,像vue之类支持也可以在社区找到,甚至还有个angular2-now用ng1来模拟ng2来开箱即用,meteor对前端的的支持可以用激进来形容,这也是该社区的特色所在。所以我也不太理解“SPA支持很不好”所指何意?即便诚如斯言,meteor做“大项目”不适合,不过如果顺手拿起来就能做个原型,做个demo,做个工具,做个内部应用,而且看起来比较专业,前后端完备,即改即发布,实时同型SPA,有何不可?说来惭愧,对它是否适合”大项目“,没发言权,因为没做过,不过说起一些小里小气的东西还是用它做过五六个,感觉良好身心俱爽,也建议更多同好者尝试它,算是一点个人体会吧。

”对比列表确认是主动感受的多一些, 但也是准确的“,其实所有文字里我真正不赞同的只有这一句了,好比说”我妈说我是世界上最帅的,虽然比较主观,但也是准确的“。觉得逻辑上有硬伤。我认为阁下是个知识渊博谦虚谨慎敏而好学的同好者,如果我们对彼此的代码做review,我肯定不会因为你指出了我代码里存在一个很愚蠢的bug而对你心怀嫉恨的,相信阁下也不会,所以你所认为我“拿一些貌似权威模糊的结论说我的不好,没有任何可论证的证据” 对我而言实在有点诛心了。只是,年龄越大,对一些把话说的太满太绝对的断言会比较敏感,对你的文字内容表示尊敬的同时,评价了一句“太主观”而已。

还要声明,我没有故作“貌似有理”状的意思,没觉得自己有资格“给你提供任何价值”,更没想“对用户造成不好的印象”,我总觉得不至于呢?如果确实影响不好了,我道歉。不过如果非要针对本文题目“2016 年后 Web 开发趋势是什么”,我想分享的个人体验在前面已经提过了,不妨重复一下:从实践角度看,todomvc.com是我觉得很好的前端对比和评价的参考,从全面的角度看,yeoman.io上的流行的项目模板能教会我们很多东西,如果对node based的东西感兴趣,nodeframework.com是一个大而全的列表,star在1000以上的项目都值得去了解。对这些列表里的主流东西有了更多了解和实践,也许大家可以一起更愉快的谈论2017年的web开发趋势是什么了,呵呵。希望这个有点价值。

55楼 已删除
56楼 已删除
15
huobazi · #57 · 2016年5月25日

@huacnlee 举报 #56楼

223
404 · #58 · 2016年5月26日 1 个赞

整理的不错。 不过最近做的单页应用是gulp+angular+bootstap+sails。

19045
malayke · #59 · 2016年5月29日

大家讨论的热火朝天的,我作为一个小菜鸟,看完文章,再继续认真看完大家的每一条回复,竟然还是不知道我们菜鸟在未来应该更应该关注、学习那些技术。

本人之前也觉得Meteor以后会是未来的方向,所以下班后的那两个小时一直都在学习meteor,后来,Meteor升级到1.3,全面开始使用es6,升级完发现原来的学习项目无法运行了,新建一个demo以后,查看代码我当场懵B,语法和风格几乎完全变了,后来放弃学习了。

我没学过AngularJS但是,听你们说他升级到2.0版本以后语法也变了且向下不兼容了,大家也又懵B了。。。。

在我这种菜鸟看来,出现的这些全新技术确实很有亮点,但是由于还在飞快的发展期变化太快,菜鸟根本就跟不上它们发展的步伐。

所以我们菜鸟就是应该学习文中提到的那些基础的技术,夯实基础,等这些新秀有了一个稳定的发展以后再来学习比较好。

不要喷我,但是可以指点,看到大牛们讨论的热火朝天,我一激动也说说了自己的看法。。。

23216
nty · #60 · 2016年5月29日

最近angular2.0 出了一个 angular-cli 基于 ember-cli 做的。想必不会太差。

942
reus · #61 · 2016年5月31日 1 个赞

这几个月做的web开发,都是用纯js。效率比过去用模板+css写高,能实现的交互也复杂得多。后端就只实现api给js用。 这是几年前没法想象的,那时候觉得Gmail、Google Docs这类web应用实现起来挺麻烦,也只会想到用jQuery之类直接操作dom。现在看来却是轻而易举,交互再多再复杂,实现方法都是共通的。

10401
hxh1246996371 · #62 · 2016年5月31日

https://www.awesomes.cn/repos/Applications/Frameworks?sort=trend

可以参考一下最近趋势(分析Github近期的关注数据)当然这也仅供参考,无所谓哪个好哪个坏,看你自己的爱好了。不过就我个人而已,我就喜欢vue的简洁且不失功能强大,勿喷。

18716
ruby_wu · #63 · 2016年6月01日

为什么好像少有人讨论extjs,博主对这个框架有什么看法

121
lyfi2003 · #64 · 2016年6月01日

#63楼 @ruby_wu 很少提及 extjs 了, 原因有很多, 主要还是它不够开放, 以及它太重. 换言之, 基本上已经淡出主流前端框架了.

extjs 是成功的:

  1. 从 YUI 时候就产生, 一直发展在现在, 很好.
  2. 如今, 更多被使用在企业内部的工具开发, 很好的 UI 组件库, 适合富客户端使用.

extjs 是失败的:

  1. 不开放
  2. 太重, 加载慢, 组件强到过于臃肿了而不利于定制, 不适合于互联网产品的研发. 所以只被应用在企业应用开发( 要求功能强大, 但不需要过多的用户体验 )

看了最近它的动作, 也增加了 MVVM 的特性, 感觉还是针对企业应用准备的. 总而言之, 除非工作需要, 不建议深入.

个人看法, 供参考.

14149
tcstory · #65 · 2016年6月26日

作为一名前端小菜,我确实也对于现在的前端发展感觉到很困惑,公司这段时间用的时react,所以也顺便学了了下,之前我自学的是vuejs,对于学习,我跟喜欢那些能真正解决问题的 方法和技术,对于那些高大上的名词不太感冒,对于react和vuejs,我更大的感受是vuejs写起来更自然,但是也很喜欢jsx那些强大的表现力. 我在这里提到真阿当会不会被喷呢?因为我还是很认同他的一些观点的,其实我很想体验一下他所说的"组件化方案,轻框架方案",虽然我想从yui3入手看看,但是不懂投入精力学习yui3是不是正确的选择,蛋疼死了

96
qx · #66 · 2016年7月05日

@lyfi2003 '一定会的, 未来 3 年后, 至少有 70% 左右的 APP 会用前端开发方案, 比如使用类似于 Ionic 或 Meteor 这样的框架.' 这一点鄙人觉得绝不可能,以一个5年安卓,3年ios经验的视角来判断.你不能单纯的从技术角度去考虑这个问题,技术根本不是问题.

另外我还是比较看好angular js,不因为别的,就因为他的后台是谷歌

96
monjer · #67 · 2016年7月16日

backbonejs怎么说?都不在讨论范围内了吗?

18716
ruby_wu · #68 · 2016年7月26日

#64楼 @lyfi2003 感谢分享

96
dongit · #69 · 2016年8月05日

在中国,很多流行的东西不见得是优秀的,比如ruby从来就没流行过 /沮丧脸

27349
sec · #70 · 2016年8月16日

技术更新太快,公司一直在用AngularJS和ROR

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册