写点什么

Facebook 告诉我们如何构建网站

  • 2015-02-15
  • 本文字数:1241 字

    阅读完需:约 4 分钟

Eric Florenzano 最近在自己的博客上发表了一篇题为《Facebook 教我们如何构建网站》的文章,他认为软件开发有些时候需要比较大的跨越,而这将会在2015 年再次上演,主角们则是Facebook 的React.js、Relay 和GraphQL。

Eric Florenzano 在该文章中提到:2003 年 Brad Fitzpatrick 发布了 Memcached,由此开启了 LiveJournal 架构的时代;2004 年 Google 发布了 MapReduce 论文,由此诞生了 Hadoop 并开始风靡世界;2007 年 Amazon 发布了 Dynamo 存储系统,让我们知晓了如何通过线性扩展的方式让数据库和应用程序一起工作,并导致了 Cassandra、Riak 等数据库的产生;2010 年 Twitter 教会了我们如何通过客户端模板让服务器端变成一些简单的 API,并引发了 Web 应用的又一次大转变;2012 年 Google 发布了 Angular.js 1.0,并最终成为流行的 Web 开发框架,这一切都有一个共同点,那就是:公司或者创业团队从生产中得到了沉痛的教训,从失败中找到了向前的出路,然后在将自己的技术突破共享出来的时候引发了一系列的变革。Fitzpatrick 相信,在 2015 年 Facebook 将会通过 React.js、Relay 和 GraphQL 三把利剑引发 Web 应用开发的另一次跨越。

Fitzpatrick 做出如此判断的理由主要是基于 Facebook 的员工在一些演讲中所透露出的 Web 开发理念。例如,Pete Hunt 在 2013 年的 JSConf 上做了题为《React:重新思考最佳实践》的演讲,讲述了Facebook 之所以会避开某些“最佳实践”的原因,Pete Hunt 认为JS 模板分离了技术,但是并没有分离关注点,而框架并不知道如何分离关注点,解决这一问题的方案是组件,要充分利用JavaScript 的能力,削弱模板的作用;Daniel Schafer 和Jing Chen 在2015 年的React.js Conf 上讲述了 Facebook 如何通过 GraphQL 改变既有的数据获取方式,让开发者更容易地在 React 应用中获取数据;Christopher Chedeau 在《React:CSS in JS》中讲述了在大规模使用CSS 时所面临的问题以及如何通过JS 来解决。

总的来说,Facebook 提出的Web 开发理念可以概括为:将应用分解为一个个独立的组件,与该组件相关的样式、标记、验证以及数据要求都放到组件定义的内部,对于自我渲染所需的所有数据每一个组件都有明确的声明且保存在该组件内部,同时对于哪些行为会改变组件的状态,组件状态改变之后会有哪些反应也要有明确的定义。通过这种方式编写的组件能够封装它自身的逻辑,使得组件高内聚,组件之间低耦合,增强了复用性,同时也降低了开发人员的运维难度和复杂性。

毫无疑问,Facebook 提出的技术与理念对于大部分Web 网站开发团队而言还是有一定借鉴意义的,其中的思想也值得我们深思与学习,但是Fitzpatrick 的判断是否真的会实现,Facebook 的React.js、Relay 和GraphQL 是否会引发Web 开发的再一次变革,只有等待时间来验证了。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-15 08:295595
用户头像

发布了 321 篇内容, 共 127.6 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

中软鸿联:集聚智能化能量势场,点燃小家电创新星火

中软国际AIoT开发者社区

智慧家电

云原生时代的DevOps平台设计之道

北京好雨科技有限公司

中软鸿联:数字为运动蓄能,智能为健康充值

中软国际AIoT开发者社区

智能穿戴 运动健康

【Go微服务】开发gRPC总共分三步

王中阳Go

微服务 gRPC RPC #go 10月月更

都说复盘能力很重要,如何复盘更有效?Superset你值得拥有

王中阳Go

Code Review BI 分析工具 项目复盘 Superset 10月月更

全息投影正在威胁LED显示屏在舞台的地位

Dylan

LED显示屏 led显示屏厂家

行业大咖秀,第二期开播!

云计算

从零开始实现一个Promise

helloworld1024fd

JavaScript

开奖啦!看看 9 月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动

直播预告|Apache APISIX x KubeSphere 在线 Meetup 来袭

API7.ai 技术团队

APISIX KubeSphere

数据结构学习,串篇(顺序串及算法)

IC00

学习 数据结构 算法 学习笔记 10月月更

公网对讲SDK| 快速搭建公网对讲应用

anyRTC开发者

音视频 监听 快对讲 AI降噪 录音

真机调试设备不够?荣耀云调试帮你忙

荣耀开发者服务平台

开发者 手机 云服务 荣耀 honor

基于纯前端类Excel表格控件实现在线损益表应用

葡萄城技术团队

前端 Excel 报表

synchronized 和 ReentrantLock 的区别

zarmnosaj

10月月更

2022互联网母婴行业用户洞察

易观分析

互联网 母婴

开源云原生平台对比 KubeSphere vs Rainbond

北京好雨科技有限公司

C# ref用法,实现引用传递(地址传递)

IC00

C# 学习 程序员 上位机 10月月更

NFT 数据基础设施 NFTScan 的产品介绍【科普】

NFT Research

区块链 NFT 数据基础设施

STM32L051测试 (五、串口测试 — 与Enocean模块通讯问题)

矜辰所致

stm32 串口通信 STM32L051 10月月更

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

重磅 ! Redis+Nginx+JVM+设计模式+Spring全家桶+Dubbo

程序知音

Java 数据库 spring JVM 后端技术

一条 SQL 语句是如何执行的

说故事的五公子

MySQL 数据库 sql

Qt | 本地存储配置信息 QSettings

YOLO.

qt 10月月更 C++

Qt示例 | 模拟时钟示例 Analog Clock Example

YOLO.

qt 10月月更 C++

MASA Framework的异常处理

MASA技术团队

.net MASA Framewrok MASA

大学毕业后转行软件测试我后悔了

测吧(北京)科技有限公司

测试

电子表格也能做购物车?简单三步就能实现

葡萄城技术团队

前端 在线excel 应用系统 控件

手撕常见JS面试题

helloworld1024fd

JavaScript

喜迎华诞,openEuler 22.09 正式发布,与1265名开发者共建面向数字基础设施的开源操作系统

openEuler

开源 开源操作系统 open Euler

ctk流程

留白的艺术

Facebook告诉我们如何构建网站_Meta_孙镜涛_InfoQ精选文章