AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

《觉醒年代》观后感

xiezhr

觉醒年代 五四运动 南陈北李

小走神

Nydia

学习

前端开发:node.js的node包管理器npm安装以及使用

三掌柜

5月日更

Github Action 自动构建 Flutter Android Apk

Leetao

flutter Github Actions

解密华为云FusionInsight MRS新特性:一架构三湖

华为云开发者联盟

数据湖 云原生 华为云 FusionInsight MRS TechWave

超详细的JQuery的 DOM操作,一篇就足够!

华为云开发者联盟

html 大前端 DOM 函数 JQuery框架

☕【JVM 技术之旅】带你重塑对类加载机制的认识

码界西柚

JVM Java虚拟机 类加载器 原理分析 5月日更

为什么很多程序员,成为不了技术大牛?

实力程序员

网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

JackJiang

websocket 消息推送 即时通讯 IM

架构实战营模块4作业

阿体

k8s 上运行我们的 springboot 服务之——技术方案实现图

柠檬

k8s SpringBoot 2

做开发,这几种锁机制你不得不了解一下

华为云开发者联盟

读写锁 自旋锁 互斥锁 优先锁

阿里巴巴P8自爆:Java八大核心思维导图知识梳理

Java架构师迁哥

防火墙

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

云智慧发布《智能业务运维》2021年刊 邀您共览数字化运维全景象

云智慧AIOps社区

AIOPS 智能运维

谈一谈Java的前生今世

孙叫兽

Java jdk 发展史

Rust从0到1-泛型-定义

rust 泛型 generic

☕【JVM 技术之旅】深入挖掘Java对象的内存结构

码界西柚

JVM java对象分析 java对象 5月日更 内存对象结构

【Flutter 专题】121 图解简易 Slider 滑动条

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

Flink 实时计算在微博的应用

Apache Flink

flink

教你用 3 行代码发邮件

小匚

Python 学习 自动化

【数据标注的类型有哪些】看懂这篇文章就够了!

澳鹏Appen

人工智能 机器学习 大数据 数据标注

一文带你认识MindSpore新一代分子模拟库SPONGE

华为云开发者联盟

神经网络 mindspore 新一代分子模拟库 SPONGE 分子结构

树莓派上的 K8S 集群挂了,怎么办?

百度开发者中心

百度 技术 经验分享

Docker挂了,数据如何找回

运维研习社

Docker 运维 数据恢复 5月日更

深度分享|中小银行如何实现数字化转型,建设智能营销新体系?

索信达控股

大数据 数字化转型 金融 银行 营销数字化

着力区块链技术等方向,上海这所高校成立研究院

CECBC

中国与世界共享数字经济机遇

CECBC

数字经济

多元线性回归模型 - DAY14

Qien Z.

5月日更 多元线性回归

微服务架构设计之解耦合

Damon

微服务 5月日更

一种基于实时分位数计算的系统及方法

百度Geek说

云计算 大前端 云服务

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