Web 开发的未来:React、Falcor 和 ES6

Widen是一家数字资产管理解决方案提供商。目前,其技术栈还非常传统,包括服务器端的Java、浏览器端的AngularJS、提供REST API支持的Jersey以及jQuery、 Underscore、lodash、jQuery UI和Bootstrap等各种库。近日,该公司的首席开发人员Ray Nicholus在一篇文章中提出了一个面向未来的Web开发技术栈,用于取代现有的工具。

虽然他们已经习惯并信任现有的技术栈,但为了实现以下几个目标,Ray希望引入一个全新的技术集合:

一种新的、闪亮的方法:作为一名开发人员,他希望通过采用一个全新的工具集获得全新的视角,并有所进步。

简洁:他不喜欢 AngularJS 1.x 陡峭的学习曲线,更令他失望的是,AngularJS v2的学习曲线更加陡峭。Java也有这样的特点。另外,他希望能够尽可能地避免样板代码,应用程序可以快速投入应用而又无损可扩展性,前端很容易描述为 一组独立的专用组件的集合。他还希望用一种更好的方法取代难以维护和改进的传统REST API。

高效:他希望可以消除由传统REST API所导致的不必要的请求和响应开销。

优雅:他希望编写优雅、易读的代码。在用户界面上查找和修改数据要直观,最好是开发者只需要考虑自己的数据模型,而不用关心可用的API端点。

放弃现有的技术栈意味着开发人员要走出自己的舒适区,部分人可能会抵触,认为新选择不必要或过于复杂。Ray也有类似的想法,但当他对React、 webpack、Falcor有了深入地了解之后,他改变了这种想法,认为这是一个面向未来的Web开发技术栈,Widen即将推出的部分软件产品将会使 用下面讨论的所有技术:

React:Ray认为,React与Angular&Ember 的不同之处在于其有限的应用范围和空间占用。Angular&Ember的定位是框架,而React主要是作为应用程序“视图”。React不包含依赖注入或“服务”支持,不需要“jq-lite”,也不依赖于jQuery。开发人员可以直接使用JSX编写标记,而无需Ember Handlebars。React会维护一个“虚拟DOM”,并通过它更新真正的DOM,避免了不必要的重排与重绘。总之,他非常喜欢React这种用途相对专一的特性。而且,React让他可以将复杂的应用程序切分成更小的组件。

Falcor:这是一个由Netflix开源的、非常新的库。不同于传统REST API,它只提供唯一的一个端点。有了它,开发者不再需要向不同的服务器端点请求不同的数据,而是向同一个端点请求不同的模型数据。服务器端可以识别请求参数,并由Falcor Router调用恰当的router函数。也就是说,Falcor提供了一个更加直观的API,就是开发者的数据模型。这可以确保服务器永远不会返回不必要的模型数据, 节省了带宽。Falcor客户端还可以使用缓存数据为连续的请求提供服务,减少服务器响应时间。要了解更多关于Falcor的信息,可以查看Jafar Husain的视频。

webpack:作为一个模块绑定器,webpack可以为React组件模块化提供进一步的支持。它使开发者可以轻松压缩和连接CSS及JavaScript,并通过生成source map大大地简化调试工作。配置完成后,webpack会监控代码,每次代码发生变化,它就会生成新的bundles。客户端无需再导入大量的CSS或JS文件,而只需要导入bundles,减少了页面加载时的HTTP请求数。此外,webpack还提供了大量的插件,例如,使用jsx-loader可以将JSX转换成JavaScript,使用babel-loader 可以将ES6代码转换成兼容ES5的代码。

ES6:即ECMAScript 2015,是JavaScript的最新规范,定义了若干重要的新特性,比如胖箭头函数、类、字符串插值、块作用域等。更多信息,请查看Mozilla Developer Network上的ECMAScript 6参考指南。

为了帮助读者更好地理解这些技术,Ray使用它们创建了一个单页应用程序,并详细解释了整个的创建过程及相关技术的工作原理。感兴趣的读者可以阅读原文,并从GitHub上下载该应用程序的源码。

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-09-25 04:22:20

Web 开发的未来:React、Falcor 和 ES6的相关文章

Weex和Web开发体验的异同

在2017年1月12日 Weex Conf 2017下午的技术实践论坛上, Weex团队的勾股详细讲解了Weex和Web开发体验的异同.他主要从Weex 中的 Web 标准.Weex 中的 Web 研发模式以及其它注意事项展开了此次分享. 本文根据现场分享和幻灯片整理而成. Weex 中的 Web 标准 Weex中的Web标准主要包括HTML/CSS/JavaScript三个维度. HTML 目前Weex支持的Components约为15个,具体组件如下图所示. 相比于完成的HTML语法标准,W

现代Web开发需要学习的15大技术

将近4年前,我写了一篇名为<Future of Web and Mobile: HTML5, CSS3 and Javascript>的博客文章,其中我提到了Javascript的出现,以及JavaScript框架,例如jQuery.Knockout等的爆 发. 快进到现在,我发现现代web开发再一次将发生压倒性的改变.信息资讯的铺天盖地令人迷惑,尤其对于初学者而言.首要原因是新的框架,例如 Angular 2和ReactJs出现了,使用了尚未完全定型的ECMAScript 6特性.并且有更多

ASP.NET 2.0实现AJAX的Web开发

ajax|asp.net|web [导读]在过去的几个月中,基于AJAX技术开发高度交互的Web应用程序的设计模式迅速流行开来.现在,具有高度可配置性的Web应用程序,例如Google Maps和A9,都在综合利用这些技术来创造丰富的客户端用户体验.其实,结合AJAX技术进行Web开发并非最近的研究成果,只不过这些技术一直以来不断得到持续更新和改进. 本文中我有三个目的.首先,我想提供一个AJAX风格应用程序的高级概述.其次,我想详细地描述ASP.NET 2.0的异步回调机制.最后,我想对构建A

Web开发技术发展史话

web  讨论Web开发技术的历史,当然要先说说Web的起源.众所周知,Web这个Internet上最热门的应用架构是由Tim Berners-Lee发明的.Web的前身是1980年Tim Berners-Lee负责的Enquire(Enquire Within Upon Everything的简称)项目.1990年11月,第一个Web服务器nxoc01.cern.ch开始运行,Tim Berners-Lee在自己编写的图形化Web浏览器"WorldWideWeb"上看到了最早的Web

现代Java Web开发架构分析

web|架构 当主流计算机应用软件开始迁移到客户/服务器体系结构时,程序员们开始寻找方法以简化使用类似技术并且在结构也类似的工程的开发.这就为现代软件开发框架打好了基础. 随着基于万维网的应用程序服务器的发展及其相关的应用软件的膨胀,支持这些技术的开发框架也随着蓬勃发展.当前,在企业开发领域中出现了许多特别适合于Java J2EE平台的软件开发框架. 在本文中,我将集中讨论现代的Java开发框架,分析它们的特征和各自的使用优点.另外,我还想比较目前流行的生产质量框架,例如Struts,Sprin

专家称Java在WEB开发领域处境危险

web 据国外媒体报道,在3月25日召开一个有Java语言未来的研讨会上,与会专家表示,Java语言在Web及低端开发领域面临诸如Ruby等动态语言的威胁,不过,Java可以通过改进和拓展虚拟机技术迎接挑战. 在这场名为"企业Java的未来"的研讨会上,来自Java技术业界的知名专家指出了Java语言目前在低端应用.网络WEB应用开发方面的"软肋",同时对EJB(企业JavaBeans)对象技术的持久竞争力表示出质疑. 一些专家表示,随着互联网迎来Web2.0时代,

圣殿骑兵PHP 2007年Web开发技术预言

前言 2006年即将过去,这一年被广泛地看作是:在线投资新浪潮的一年;更新的web技术和技巧兴起和成长年;在采用web标准上增长年;从未这样采用web能量的新商务模式的兴起(和衰落)的一年. 从SitePoint和Ektron这两家组织提供的调查报告预览版中,其中的数据照射出在技术进化进程中的一丝亮光.大家不妨跟随作者一起放眼遥望一下亮光周围的风景,也许你会听到自己的惊呼,请加入到对"未来"的预言中吧!尝试一下网络对趋势的影响力! 关于SitePoint和Ektron进行的2006/2

用ASP.NET 2.0实现AJAX风格的Web开发

ajax|asp.net|web 提要 在过去的几个月中,基于AJAX技术开发高度交互的Web应用程序的设计模式迅速流行开来.现在,具有高度可配置性的Web应用程序,例如Google Maps和A9,都在综合利用这些技术来创造丰富的客户端用户体验.其实,结合AJAX技术进行Web开发并非最近的研究成果,只不过这些技术一直以来不断得到持续更新和改进. 本文中我有三个目的.首先,我想提供一个AJAX风格应用程序的高级概述.其次,我想详细地描述ASP.NET 2.0的异步回调机制.最后,我想对构建AJ

html5 Web开发:防止浏览器假死的方法

在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出"脚本运行时间过长"的提示框,如果出现这种情况说明你的脚本已经失控了. 一个浏览器至少存在三个线程:js引擎线程(处理js).GUI渲染线程(渲染页面).浏览器事件触发线程(控制交互). JavaScript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来然后加以处理,浏览器无论再什么时候都只有一个JS线程在运行JS程序. GUI 渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某