速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:295325
用户头像

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

关注

评论

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

揭秘1688商品详情关键字搜索API接口:精准定位,高效营销

代码忍者

API 接口 pinduoduo API

探索1688拍立淘API接口:图像搜索技术引领电商新潮流

代码忍者

API 接口 pinduoduo API

快递员上门取件API接口接口Domo下载

快递鸟

快递

天润融通携手挚达科技:AI技术重塑客户服务体验

天润融通

Transmit 5 for Mac(强大的FTP客户端)中文版

Mac相关知识分享

FlowJo 10 for Mac(mac流式细胞分析软件)

Mac相关知识分享

写了本书,准备连载

FunTester

中小企业如何优化业务流程和充分利用ERP系统?

积木链小链

企业管理 数字化 ERP 中小企业

天润融通解决方案:如何避免门店投诉升级为消费者维权

天润融通

Sensei for Mac(实用的系统优化清理工具)中文版

Mac相关知识分享

《一文讲透》第 4-2 期:KWDB 数据库运维 —— 集群参数

KWDB数据库

集群 数据库集群 配置文件 数据库集群方案介绍 数据库集群技术

图片渐进式加载优化实践指南

Immerse

图片 加载 图片优化 渐进式

数据驱动与并行策略:用 JUnit 5 让软件测试更高效

测试人

软件测试

舍得酒业×奇点云|最佳大数据平台供应商

奇点云

大数据

如何使用 NocoBase 构建应用程序?

NocoBase

开源 零代码 无代码 应用程序 宠物追踪

如何选择合适的数据集成工具或平台来实现全域数据的高效整合

Aloudata

数据仓库 数据分析 数据开发 数据集成 数据编织

Redis大Key问题如何排查?如何解决?

王磊

洞悉数据,守护安全!和鲸助力2024年浙江省交通投资集团数字化主题活动圆满闭幕

ModelWhale

人工智能 交通 数据竞赛

国产化软件系统替换中的快速兼容性解决方案

Geek_2305a8

openEuler 发出全球可持续发展倡议,共建AI时代数据安全生态

科技热闻

揭秘淘宝item_get_app_pro:解锁淘宝APP商品详情高级版API接口的奥秘

代码忍者

API 接口 pinduoduo API

淘宝商品描述优化与拍立淘API接口探索:开启智能购物新时代

代码忍者

API 接口 pinduoduo API

如何绘制产品架构图?盘点9个产品架构图模板!

职场工具箱

在线白板 架构图 办公软件 绘图软件 产品架构图

存算分离的过去、现在和未来

Databend

终于能随时解决信息焦虑了

最新动态

全域数据整合下的数据治理:提升数据开发管理效率与质量的策略

Aloudata

数据仓库 数据分析 数据开发 数据集成 数据编织

软件测试丨JUnit5动态测试与生命周期解析

测试人

软件测试

MyZip Pro for Mac(专业解压缩工具)

Mac相关知识分享

淘宝购物新视角:关键字搜索与商品评论的API接口揭秘

代码忍者

API 接口 pinduoduo API

2024年最新Java面试八股文总结,让你少走99%的弯路

采菊东篱下

java面试

支付能力用小程序实现并非最佳技术方案

FinFish

小程序容器 超级app 小程序技术 app支付能力

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