2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

数字孪生智慧校园三维可视化管理系统解决方案

数据可视化平台

智慧校园 智慧学校 智慧校园解决方案 智慧校园管理系统 校园三维可视化

和我一起入JavaScript

楠羽

JavaScript 笔记 知识 9月月更

降本增效两不误——云原生赋能航空业数字化转型

York

容器 云原生 数字化转型 开发运维 智慧航空

企业在SaaS时代如何玩转帮助中心?

Baklib

跟着卷卷龙一起学Camera--Binder

卷卷龙

ISP 9月月更

元宇宙与泛娱乐的邂逅:次世代第一CP养成记

脑极体

一文读懂,硬核 Apache DolphinScheduler3.0 源码解析

白鲸开源

源码阅读 Apache DolphinScheduler 工作流编排 大数据 开源 大数据调度

BNBChain NFTScan 与 SpaceID 达成合作,在浏览器内支持 .bnb 域名搜索!

NFT Research

区块链 域名 bnb

精讲数据归档分析 |Data Infra 研究社第四期

Databend

大数据 开源 活动预告 #开源 数据归档

给网站加个速,原来很简单

科技怪咖

易观分析:制造行业数字孪生AMC分析 ——数字孪生智能制造步入市场启动期,闭环验证能力待优化

易观分析

数字孪生 市场分析

select多路选择

飞翔

Go

给网站加个速,原来很简单!

sofiya

MySQL 中的锁机制

月明风清

C++学习---STL中nullptr_t的实现原理

桑榆

c++ 源码阅读 9月月更

【spring-kafka】@KafkaListener详解与使用

石臻臻的杂货铺

kafka 9月月更

《数字经济全景白皮书》新市民金融创新篇 重磅发布!

易观分析

金融 新市民服务

【云原生 | 从零开始学Docker】四、Docker镜像深度解析

泡泡

Docker 云计算 容器 云原生 9月月更

【云原生 | 从零开始学Docker】五、容器数据卷实战

泡泡

Docker 云计算 容器 云原生 9月月更

直播预告 | 在 CurveBS 上部署跨机 PolarDB for PostgreSQL 集群

阿里云数据库开源

数据库 postgresql 阿里云 开源 polarDB

官宣 | 极狐(GitLab) 公司成立一年完成 4 轮融资,夯实中国开源市场信心

极狐GitLab

开源 DevOps 融资 自主可控 极狐GitLab

资深专家亮相华为云快成长直播间CDN专场,助力企业体验升级!

神奇视野

什么是访问控制列表ACL?

wljslmz

acl 访问控制列表 9月月更

腾讯云Crane获国家级科技奖,助力企业降本增效节能减排

科技热闻

专家亮相华为云快成长直播间云安全专场,“未雨绸缪”化解数据风险

创意时空

经验分享|企业搭建帮助中心步骤

Baklib

SaaS 产品该如何定价?

产品海豚湾

产品经理 SaaS 产品规划 9月月更 商业产品

leetcode 637. Average of Levels in Binary Tree 二叉树的层平均值(简单)

okokabcd

LeetCode 数据结构与算法

数据仓库分层架构

阿泽🧸

数据仓库 9月月更

企业做好知识管理的方法:文档管理

Baklib

2022-09-15:Range模块是跟踪数字范围的模块。 设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。 半开区间 [left, right) 表示所有 left <= x < righ

福大大架构师每日一题

算法 rust 福大大

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