写点什么

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

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

关注

评论

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

译文《全新首发JDK 16全部新特性》

潘大壮

Java jdk JVM

《程序员修炼之道》- 务实的哲学(3)

石云升

读书笔记 程序员 28天写作 批判性思维 完成好过完美

Libra演进与数字货币国际化

CECBC

区块链

开发质量提升系列:问题登记列表(下)

罗小龙

生产事故 28天写作 解决思路

5年Java经验不会源码被拒,苦学这些Spring源码笔记后,面试不再慌

Java架构之路

Java 程序员 架构 面试 编程语言

Redis核心剖析:为什么这么“快”的秘密

Java架构师迁哥

从零开始学习Git

ITCamel

git

内存数据库解析与主流产品对比(三)

星环科技

数据库 大数据

10 个 JavaScript 简洁代码小技巧(文末彩蛋)

零和幺

JavaScript 大前端 CleanCode

程序员入职新公司,只需8步,直接凸显出个人价值

Java架构师迁哥

Elasticsearch 基于脚本进行 partial update

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软

Java架构之路

Java 程序员 架构 面试 编程语言

厌倦了EXCEL想玩点新花样?教你利用Python做数据筛选(下)

智分析

Python

Flink 学习路线总结

大数据学习指南

大数据 flink

抽奖助手利益相关方

千竹

区区一个SpringBoot问题就干趴下了?我却凭着这套“神级PDF文档”吊打面试官

Java 编程 面试 微服务

数据库恢复子系统的常见技术和方案对比(二)

星环科技

数据库 大数据

拍乐云 Flutter SDK 全新发布,跨平台音视频开发更easy

拍乐云Pano

flutter 音视频 WebRTC RTC

【推荐收藏!】Gradle 与 Android 构建入门

百度Geek说

研发工具 andiod

“区块链新闻编辑部”: 从“云媒体”到“链媒体”的现实跨越

CECBC

区块链技术

Flink可靠性的基石-checkpoint机制详细解析

五分钟学大数据

大数据 flink

一周信创舆情观察(1.18~1.24)

统小信uos

译文《最常见的10种Java异常问题》

潘大壮

Java 异常 java异常处理 Exception

kotlin高阶函数let、with、apply、run、also使用场景

陈吉米

kotlin

新思科技发布《美国不良软件质量成本:2020年报告》

InfoQ_434670063458

软件质量 新思科技

数据库恢复子系统的常见技术和方案对比(一)

星环科技

数据库 大数据

一文读懂Java动态代理

潘大壮

Java jdk 动态代理

产品训练营--第二期作业

曦语

产品训练营

智能汽车为什么新势力有胜算(28天写作 Day20/28)

mtfelix

28天写作 新能源汽车 智能汽车 造车新势力

阿里四年技术 TL 的得失总结:如何做好技术 Team Leader

阿里巴巴云原生

云计算 项目管理 程序员 微服务 云原生

一个 3 年 Java 程序员 5 家大厂的面试总结(已拿Offer)

Java架构之路

Java 程序员 架构 面试 编程语言

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