写点什么

Origami:基于组件的 Web 应用程序

  • 2014-12-16
  • 本文字数:1428 字

    阅读完需:约 5 分钟

Velocity Europe 2014 大会上, FT Labs 的总监 Andrew Betts 为与会者展示了由他们自行开发的一套用于 web 开发的标准与工具,目标是以它来应对创建与维护总数超过 800 个的 *.ft.com 网站的开发中的挑战。FT Labs 的主要策略是将 web 页面分解为多个组件,由合理定义的规则来构造这些组件。

FT Labs 是隶属于金融时报(Financial Times)的一个团队,专注于 web 技术。由于金融时报的电子资产的快速发展,公司面临着一系列的挑战,这些挑战都与规模的扩大有关。在他们管理的大量网站中缺乏通用与结构化的规则和工具,意味着大量的工作被不断重复。不断扩大与趋于复杂化的 web 生态系统对公司的发展生产了极大的阻力:难以维护及更新 web 应用程序;遗留的代码无法消除;费解的应用程序集成过程;所需要的端到端的工程技术又难以找到。

因此 FT Labs 计划寻求一种能够解决这些问题的解决方案,并决定了这套基于组件的方案。这套方案是由一系列准则推动的,以下仅举几例:

  • 必须完全遵守标准
  • 不允许对某个单一的产品(例如网站)创建特定的组件
  • 组件应当易于使用,并且具有灵活性
  • 组件使用者对于所使用的组件有权决定在何时进行升级
  • 组件应当被封装,或者使用命名空间,以确保不会与其它组件产生冲突
  • 对外部系统的依赖应降至最低,因此保证了整个解决方案的高可靠性与快速发布能力

组件以两种形式存在:模块(module)与 web service。

基于 Origami__ 组件创建的应用程序(图片来自于 Origami网站)

模块是指静态资源(例如 CSS 文件)或 CommonJS 模块,因此它的主要目的在于为多个网站提供相同的 UI 体验。每个模块必须遵守规格说明,包括命名规则、打包及构建配置、测试及演示规则,以及一些其它需求。举例来说, o-grid 是一套适应响应式布局的网格系统, o-date 专用于日期的格式化与修改, o-ft-typography 则是专门用于 FT 的排版样式。这些模块的文档说明了遵循规格开发可实现的效果。

如同名称所示,web service 通过 URL 终结点提供内容与数据。Web service 同样必须遵循一套规格说明,其中定义了一些需求,例如过期规则、必须提供的终结点(用于运行情况诊断、度量以及文档化),版本化规则以及多web service 环境的规则。Origami web service 的例子包括 responsive-image-proxy ,它是一个用于改变图片大小与进行图片优化的代理服务。

Origami 为模块提供了一套构建服务,通常在运行时进行触发。如果某个网页中包含了以下格式的标签:

复制代码
<link rel="stylesheet" href="//build.origami.ft.com/bundles/css?modules=o-ft-icons@^2.3.1" />

那么构建过程中会进行以下处理:

  • 安装 o-ft-icons 模块的 2.3.1 版本(或升级至下一个主要版本)
  • 如果存在任何依赖项,则自动进行安装
  • 运行构建过程
  • 对 CSS 输出内容进行压缩(Minify)
  • 进行 GZip 压缩并进行缓存
  • 由某个 CDN 进行托管

与之类似的是,script 标签会触发 JavaScript 的构建过程,其内容基本相同。

FT Labs 为组件提供了一份注册信息,可以为任何人使用。当然,如同我们所看到的那样,某些组件是专门为金融时报网站所使用的。

在报告的最后,Andrew 为与会者演示了FT Labs 的 Polyfills 服务。Polyfills 是一种 JavaScript 代码,它能够为 web 浏览器加入本身不支持的特性,以此减少各个浏览器提供商与各种版本所带来的差异。这个服务是可自定义的,但使用起来极其简单,只要在 web 页面中加入以下 script 标签即可。

复制代码
<script src="https://cdn.polyfill.io/v1/polyfill.min.js"></script>

查看英文原文: Origami: Component-Based Web Applications

2014-12-16 09:362362
用户头像

发布了 428 篇内容, 共 199.6 次阅读, 收获喜欢 39 次。

关注

评论

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

架构师培训 -11 安全、高可用

刘敏

奈学:红黑树(RedBlackTree)的概述

奈学教育

AVL

甲方日常1

句子

工作 随笔杂谈 日常

架构师训练营-第十一周-命题作业

sljoai

极客大学架构师训练营 命题作业 第十一周

《黑神话:悟空》出圈背后,国产3A游戏的技术新机

脑极体

奈学:红黑树(RedBlackTree)的概述

古月木易

week11 总结

雪涛公子

架构师培训第十一周练习

小蚂蚁

架构师课程第十一周总结

dongge

极客大学架构师训练营---习题

李朋

week 11作业

Geek_z9dmvw

架构师训练营第十一章总结

叮叮董董

week11 作业

雪涛公子

Java二进制和位运算,这一万字准能喂饱你

YourBatman

位运算 二进制

图解 K8s 核心概念和术语

后端进阶

Docker Kubernetes 容器 云原生 k8s

第11周 安全和高可用

陆不得

手写Spring框架之IOC

简爱W

架构师训练营——第11周学习总结

jiangnanage

架构师训练营第十一章作业

叮叮董董

合同、封条、电梯……通通上链!

CECBC

区块链技术 监管平台

Week11总结

leis

架构师训练营第 11 周——练习

李伟

极客大学架构师训练营

系统高可用

陈皮

第11周学习总结

Bruce Xiong

架构师训练营第十一章作业

吴吴

对于三千万攀登者来说,云是安全绳,是登山杖,是趋顶之路

脑极体

【Elasticsearch 技术分享】—— Elasticsearch 存储一条数据, put 过程是什么样子的?

程序员小航

Java elasticsearch 搜索 ES Lucene Elastic Search

区块链技术可提高数据可信性和安全性

CECBC

区块链技术 安全性

Cause: java.sql.SQLTimeoutException: ORA-01013: user requested cancel of current

Java个体户

Druid

架构师训练营——第11周作业

jiangnanage

不可用与高可用

dongge

Origami:基于组件的Web应用程序_JavaScript_João Miranda_InfoQ精选文章