生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

微博评论高可用高性能计算架构设计

Jack

架构实战训练营9期

大数据培训学习后,就业不好就业

小谷哥

「推荐收藏」提高组件库Level必做好这六件事

GFE

前端 组件库

JavaScript刷LeetCode拿offer-位运算

Geek_07a724

JavaScript LeetCode

pytorch实现空洞卷积+残差网络实验(torch实现

Studying_swz

深度学习 11月月更

深入nodejs的event-loop

coder2028

node.js

Java Web(十二)Vue&Element

浅辄

Vue javaWeb 11月月更

鼎医信息加入PolarDB开源数据库社区

阿里云数据库开源

阿里云 polarDB PolarDB-X 阿里云数据库 PolarDB for PostgreSQL

深入剖析nodejs中间件

coder2028

node.js

用javascript分类刷leetcode3.动态规划(图文视频讲解)

Geek_07a724

JavaScript LeetCode

前端leetcde算法面试套路之双指针

js2030code

JavaScript LeetCode

专为实时而生 — GreptimeDB 现已在 GitHub 正式开源

Greptime 格睿科技

开源 分布式 云原生 时序数据库 存算分离

极客时间运维进阶训练营第四周作业

好吃不贵

惊艳华为PocketS发布会! 杰美特旗下高端品牌决色推出首款“月光宝壳”

科技热闻

架构--模块5

李某人

架构训练营 #架构训练营

融云全球社交泛娱乐洞察,「视频社交」为什么好赚钱,难出圈?

融云 RongCloud

视频社交

web前端培训上海学习好吗

小谷哥

java学习后该怎么培养自主学习能力

小谷哥

哪些前端学习方法对小白比较有用?

小谷哥

5 分钟教你搭建「视频动作分类」系统

Zilliz

人工智能 计算机视觉 Towhee 视频动作分类

5 步!用阿里云 Serverless 搭建高质量的图片压缩工具

阿里巴巴云原生

阿里云 Serverless 云原生

一文读懂Js中的this指向

hellocoder2029

JavaScript

深入理解Node.js的进程与子进程

coder2028

node.js

一文彻底搞懂前端缓存机制

hellocoder2029

JavaScript

web前端培训学习需要注意什么

小谷哥

Milvus 编译环境演进

Zilliz

c++ Python Milvus cmake 编译环境

OpenI启智社区2022年度优秀项目及开发者申报通知

OpenI启智社区

开源社区 优秀项目 优秀开发者 OpenI启智社区

自助客户服务页面|从To B产品流量获取到客户服务体验上升

Baklib

豆瓣评分9.8!阿里内部的分布式架构手册让多少人突破了瓶颈?

程序知音

Java 分布式 java架构 java架构师 后端技术

一比一手写迷你版vue,彻底搞懂vue运行机制

hellocoder2029

复杂组合逻辑电路

攻城狮Wayne

Verilog 11月月更 74LS138 译码器

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