AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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

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

关注

评论

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

2021年vivo互联网技术最受欢迎文章TOP25

vivo互联网技术

数据库 前端 服务器 年度总结 Vivo

C语言-数组

DS小龙哥

C语言

区块链,元宇宙时代的“基础设施”

CECBC

企业管理系统可视化权限功能设计

雯雯写代码

可视化 权限 企业管理系统

ONES 收购为知笔记,全面升级企业知识库产品

万事ONES

ONES 知识库

详解数据中台的底层架构逻辑

五分钟学大数据

数据中台 数据仓库 1月月更

C语言-语句(if,for,while,switch,goto,return,break,continue)

DS小龙哥

C语言

在Windows上运行Rainbond,10分钟快速安装

北京好雨科技有限公司

城墙上的“云镜派”,如何守护云上资产安全?

白洞计划

阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级

阿里云弹性计算

弹性计算 年度峰会 计算巢

深入解析Kafka的offset管理

编程江湖

kafka

跨平台技术实战!百度文库跨平台技术快速落地全过程

百度Geek说

跨平台 PC 百度文库

如果你是加勒比海盗首领,会选择哪种算法来使价值最大化?

博文视点Broadview

Hadoop中mapreduce作业日志是如何生成的

华为云开发者联盟

hadoop hdfs mapreduce YARN 作业日志

『征文精选』技术翻译与术语管理技术:专业人说专业话

SphereEx

数据库 翻译 ShardingSphere 征文 SphereEx

C语言-函数的定义、声明、传参

DS小龙哥

C语言

发挥好数字人民币促“双碳”作用

CECBC

2022年中科柏诚服务再提升,为银行数字化转型提供精准化助力

联营汇聚

C语言-基本数据类型与位运算

DS小龙哥

C语言

Ubuntu LNMPR环境搭建(Ubuntu 20.04 + Nginx1.8 + PHP 7.3 + Mysql8.0 + Redis5.0)

Owen Zhang

ubuntu LNMPR

抢占先机!为何说区块链通证经济象征未来?

CECBC

评委拍案叫绝、项目惊喜不断,这是一届怎样的 Hackathon ?丨TiDB Hackathon 2021 回顾

PingCAP

在Mac上运行Rainbond,10分钟快速安装

北京好雨科技有限公司

C语言-函数的可变形参(不定形参)

DS小龙哥

C语言

从内存管理原理,窥探OS内存管理机制

华为云开发者联盟

cpu 内存 内存管理 应用程序 OS

Ubuntu 基于Nginx1.8的Golang环境搭建(Ubuntu 20.04 + Nginx1.8 + Golang 1.17 )

Owen Zhang

golang nginx ubuntu

最佳实践:青藤云安全发布国内首个K8S ATT&CK攻防矩阵

青藤云安全

2021关键词:重新起航

faiting

数据结构算法 盘点 2021

缓存一致性最佳实践

得物技术

缓存 分布式 数据 一致性 实践

Hyperf结合PhpOffice/PhpSpreadsheet实现Excel&CSV文件导出导入

Owen Zhang

php hyperf php扩展 PhpOffice/PhpSpreadsheet

Golang:定时器的终止与重置

恒生LIGHT云社区

golang 定时器 语言 Go 语言

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