写点什么

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

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

关注

评论

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

HyperDock for Mac(mac窗口调整工具)v1.8.0.10中文激活版

mac

苹果mac Windows软件下载 HyperDock 窗口调整工具

Nginx 基本原理与最小配置

timerring

nginx

Koordinator 异构资源/任务调度实践

阿里巴巴云原生

阿里云 开源 云原生

TiDB Bot:用 Generative AI 构建企业专属的用户助手机器人

PingCAP

人工智能 数据库 AI TiDB

开源软件下游分发合规性讨论 ——“心寄源”法律沙龙(2023第四期 | 总第九期)成功召开

开放原子开源基金会

开源

天翼云加速落地紫金DPU实践应用,让算力供给更高效!

天翼云开发者社区

云计算

全链路Trace全量存储-重造索引

乘云数字DataBuff

数仓中典型的几种不下推语句整改案例

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

HarmonyOS开发者

HarmonyOS

低代码平台:简化软件开发步骤,让开发更简单

高端章鱼哥

软件开发 低代码 JNPF 开发方式

TiDB v7.1.0 跨业务系统多租户解决方案

PingCAP

MySQL 数据库 多租户 TiDB

对标数据科学家,直面AI浪潮丨和鲸助力中国石油大学(华东)理学院,打造有学科特色的数据科学与大数据专业

ModelWhale

大数据 人才培养 数据科学 高等教育 数据科学家

GaussDB技术解读系列之应用无损透明(ALT)

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

现代技术与语言翻译的未来

汽车之家客户端前端团队

AI 语言翻译 现代技术 AI翻译

程序员如何利用低代码平台提升软件开发效率?

互联网工科生

程序员 低代码 PaaS 开发工具 开发效率

小灯塔系列-中小企业数字化转型系列研究——企业网盘测评报告

向量智库

校源行丨开放原子开源基金会赴厦门大学访问交流

开放原子开源基金会

开源 校源行

企业大数据分析系统可以给企业主带来哪些帮助?

夜雨微澜

小灯塔系列-中小企业数字化转型系列研究——项目管理测评报告

向量智库

WAVE SUMMIT2023六大分会场同步开启,飞桨+文心大模型加速区域产业智能化!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

Ethereum第一笔转账

FunTester

细数应用软件的缺陷分类

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

在软件开发领域寻找更安全的众包平台?YesPMP助您无忧!

知者如C

深入思考 Next.js App Directory 架构

汽车之家客户端前端团队

架构 nextjs App Directory

优测云服务平台|【压力测试功能升级】轻松压测

优测云服务平台

性能测试 压力测试 并发测试 云性能测试

17. 正则表达式

茶桁

Python 正则表达式

如何快速完成PostgreSQL数据迁移?|NineData

NineData

postgresql 数据迁移 不停机发布 NineData 结构迁移

华为携手华中地区5大高校倡议共建湖北省高性能计算研究院建设

彭飞

OpenAtom OpenHarmony携千行百业创新成果亮相HDC.Together 2023

开放原子开源基金会

开源 OpenHarmony

LED电子显示屏幕如何计算它的面积

Dylan

广告 交通 LED显示屏 全彩LED显示屏 体育

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