写点什么

Ampersand.js:与 Backbone.js 相媲美的一套全新的“不像框架的框架”

  • 2014-07-03
  • 本文字数:1431 字

    阅读完需:约 5 分钟

&yet 发布了用于构建 JavaScript 应用的“不像框架”的框架 Ampersand.js 。其灵感主要来自 Backbone.js ,但与 Backbone.js 的主要不同之处在于,Ampersand.js 更加模块化,并添加了更多的(完全可选的)特性。

在其博客上的发布公告中,&yet 谈到了他们在 Backbone.js 方面的深度投入,以及为何他们最终决定摆脱 Backbone.js,构建自己的框架:

我们在 &yet 所遇到的问题之一——特别是在开发大型 Backbone 应用时——是缺乏健全的方式,来记录模型应该包含的属性的类型。

在默认条件下,Backbone 的模型并不强制要求任何结构。我们无须在任何地方声明我们将要存储哪些属性。因此,毫无疑问人们将会在视图里的某个地方,把各种混杂的属性保存到模型里。而这将不利于新接手的开发人员阅读模型,并确切地掌握正在跟踪哪些状态。

为了解决这个问题并强制运用结构,我编写了一个名为“HumanModel”的替代模型。该模型与《Human JavaScript》一书中全面探索的哲学一致。现在,它已经演变为 Ampersand 模型 (ampersand-model)。它会强制要求开发者声明将要存储的属性,同时允许开发者声明衍生的属性。

最初,我们在 Backbone 的集合里使用我们的替换模型,但是在这一过程中我们逐渐遇到了问题。一般来说,Backbone 认为开发者将把 Backbone.Model 模型存储到集合中。因此如果视图将实例化模型存储在集合中,Backbone 将无法将它识别为模型。我对 Backbone 打补丁并解决了该问题,但我还希望在其他许多领域里获得更高的灵活性。

对于 Backbone,&yet 认为一个关键问题是它的特性捆绑:&yet 的应用需要更高的灵活性,以便切入、切出特性。于是在 Ampersand.js 中,每个功能片都被组织到其自身的 CommonJS 模块中。这些模块通过 node.js 的包管理器 npm 分发和管理,并使用 Browserify 来将它们“编译”成单独的(或许也是最小化的)JavaScript 文件,以便在浏览器中运行。因此,任何应用都可以只选择自己需要的模块,并且能够轻易地与来自 NPM 的任何其他模块结合。

目前,Ampersand.js 由大约二十几个独立特性组成,托管在Github 上面独立的代码仓库中,同时它还提供了一套命令行工具,能够便捷地使用&yet 的推荐结构来创建Ampersand.js 项目,并为表单、视图、集合和模型生成额外的页面框架(脚手架)。

Ampersand.js 中最重要的模块(它们的文档或许也是最完善的)包括:

ampersand-state :与 Backbone.js 的模型类似,但它们没有与 RESTful 服务进行任何形式的绑定。这一功能被添加在 ampersand-model 中。开发者可以对状态类中的属性赋予类型,并在赋值的时候检查这些类型。

ampersand-model :通过添加与服务器交互,来处理加载、保存和对象同步的方法,对 ampersand-state 进行扩展。

ampersand-collection :除了不提供加载或保存集合的方法外,它与 Backbone.js 的集合等价。

ampersand-rest-collection :扩展了 ampersand-collection,增加了将某个集合加载并保存到某个 RESTful 服务的方法。

ampersand-view :类似于 Backbone.js 的视图,它是一套用于将模型绑定到 DOM 节点的机制。

ampersand-form-view :用于便捷地使用数据绑定来构建一致的表单的模块。

ampersand-router :用于更新浏览器中的 URL 的模型,而且它的更新并不会实际加载页面。该模块中的许多代码来自 Backbone.js,并做了一些扩展。

对任何熟悉 Backbone.js 的人来说, Ampersand.js 都应该很容易上手。它在 Github NPM 上基于 MIT 许可发布。

查看英文原文: Ampersand.js: a New “Non-Frameworky Framework” to Rival Backbone.js

2014-07-03 04:172475
用户头像

发布了 256 篇内容, 共 85.5 次阅读, 收获喜欢 10 次。

关注

评论

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

深入探讨微服务架构中的同步通信机制

不在线第一只蜗牛

架构 微服务 云原生 通信

可图Kolors-LoRA风格故事挑战赛

IT蜗壳-Tango

淘宝/天猫商品详情API返回值实战解析

技术冰糖葫芦

API Explorer api 货币化 API 接口 API 测试

解析淘宝买家秀API返回值中的热门晒单与趋势预测

技术冰糖葫芦

Intel:13/14代酷睿补丁几乎无损性能!未来所有产品都安全

E科讯

深度解析 MetaArena 游戏引擎,如何让 GameFi 应用更具生命力?

股市老人

淘宝买家秀API深度解析:数据驱动的热门晒单与趋势预测

代码忍者

电商数据挖掘:淘宝/天猫商品详情API实战解析与应用

代码忍者

AI 应用实战营 - 作业 十 - 知识库1

德拉古蒂洛维奇

降级攻击可“复活”数以千计的Windows漏洞

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 漏洞 网安

开源图片编辑器的插件化架构

秦少卫

开源图片编辑器 开源vue图片编辑器 vue图片编辑器 开源在线PS源码 开源海报编辑

全球化浪潮下的数据库革新:嘉里物流 TiDB 实践价值的设想

PingCAP

数据库 物流 TiDB

敏捷前瞻:首届中国Scrum大会带您走进Scrum的未来

顿顿顿

敏捷开发 敏捷项目管理 scrum大会 敏捷大会 scrum敏捷开发

2024黑帽大会最热门的九大AI网络安全工具

我再BUG界嘎嘎乱杀

AI 黑客 网络安全 信息安全 网安

华为专家带你玩转To B产品设计,助力企业转型!

轶天下事

掌握这种思维,让你每句话直击要害,颠覆你的职场表现

轶天下事

从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP

PingCAP

MySQL 数据库 TiDB

延迟降10倍,冷查不担心

Ding_Kai

实时数仓 存算分离 StarRocks 湖仓一体 starrocks查询性能优化

GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 WEB安全 网安

PingCAP 崔秋当选 CCF 数据库专业委员会执行委员

PingCAP

TiDB CCF pingCAP

交互式原型设计工具:Axure RP 8 for Mac 汉化版

你的猪会飞吗

Mac破解软件 Mac软件下载站

Ampersand.js:与Backbone.js相媲美的一套全新的“不像框架的框架”_JavaScript_Zef Hemel_InfoQ精选文章