有没有 JavaScript MVC (微型)框架?

有没有客户端的 JavaScript车祸(微型)框架?

我有一个相当复杂的 HTML 表单,它将受益于 MVC 模式。

我认为一个好的解决办法应该是:

  • 模型和视图在值发生变化时更新控制器(观察者模式)
  • 在页面加载时从表单数据填充模型
  • 在模型更改时填充模型中的窗体

阿贾克斯,彗星,JSONP和所有的爵士乐是严重的过度杀伤。

72598 次浏览

确实有: http://www.javascriptmvc.com/

我想你会发现这已经足够了!

我不会称之为 微观框架,但它看起来确实很有趣: Cappuccino Web 框架

有一个名为“ Coherent”的键值绑定 JavaScript 框架,它的灵感来自于苹果的 Cocoa Bindings。这个框架已经被苹果公司买下,但是在 http://github.com/trek/coherentjs/tree/master上还有一个旧的拷贝。

对于您所需要的东西来说,它可能有些夸张,但是 SproutCore是一个 MVC 框架,它看起来并不比 Http://www.JavaScriptMVC.com/rel = “ nofollow noReferrer”> JavaScriptMVC 或 TrimPath 的 译自: 美国《科学》杂志网站(http://code.google.com/p/trimpath/wiki/TrimJunction)原文地址: http://code.google.com/p/trimpath/wiki/TrimJunction 原文地址: http://code.google.com/p/trimpath/wiki/TrimJunction更重量级。

不幸的是,这些似乎都没有建立在 渐进增强的原则上。

流行的 ActionScriptMVC 框架 纯 MVC最近被移植到 JavaScript 中。我还没有机会尝试,但我相信它是好的。

如果您的要求是 真的简单,您可以编写自己的简单的 MVC 就像 Alex Netkachov一样。

他的示例是在 dojo 上构建的(注意: 由于缺少 dojo.js 文件,它们在他的页面上无法工作) ,但是您可以遵循普通 Javascript 中的模式。

Jamal 是我见过的最轻量级的。它也是基于 jQuery 的(额外奖励)。

Http://jamal-mvc.com/

JavaScriptMVC 是一个很好的解决方案。它的一切都是一个插件方法,使您只选择您需要的功能。从2.0开始,它基于 jQuery。

在逐步增强您的网站时,这取决于用户,因为 JMVC 只提供了一个开发的中间层——这取决于您自己的设计选择。

然而,JavaScriptMVC 是最好的通用 JavaScriptMVC 库,因为它强大的基于事件委托的控制器。

事件委托使您不必附加事件处理程序,只需为页面创建规则即可。

最后,JMVC 不仅仅是一个 MVC 架构,它涵盖了开发周期的所有部分:

  • 代码生成器
  • Selenium 和 Env.js 集成测试
  • 文档引擎
  • 自动连接 + 压缩
  • 错误检测和报告

请同时检查 Jquery-claypool

Jquery-claypool 是一个基于 jquery 构建的小型、快速、可运行的 mvc 框架,它基于我使用 django、 ails、 spring 等的经验。它的重量非常轻,可以在客户端和服务器环境中运行。

它提供了一个路由框架,用于清理 mvc、类别日志记录、过滤器(aop)、延迟创建控制器、控制反转、约定优于配置等等。

它不做 jquery 已经做的任何事情,感觉像 jquery,工作起来像一个好的框架应该做的: 简单。

Jquery-claypool

希望你能去看看。

如果您想要控制事情并且非常简单,那么您可能不需要框架,只需要实现您自己的 mvc 模式。 看看这篇文章: 基于 JavaScript 的模型-视图-控制器(MVC)作者: Alex Netkachov,2006年。

CorMVC,易于理解和开始,基于 jquery,不依赖于任何服务器技术

我已经开发了一个非常简单的 Javascript MVC 框架,称为 MCV。它不能完全满足您的要求,但是可以很容易地通过助手进行扩展。无论如何,它肯定是微型(1,9千字节包装)。

它的工作原理或多或少有点像贾马尔,但我决定自己卷,原因有二:

  • 删除 jQuery 依赖项(尽管我大多数时候都与 jQuery 一起使用它)
  • 这些模拟了 CakePHP 的行为、组件和 helpers。

还有流行的 Backbone js

我认为这个看起来像你应该检查的东西: http://knockoutjs.com/

(作为 Silverlight/wpf 程序员,正是这个库让我最终开始学习 javascript。它基于模型-视图-视图-模型(MVVM)模式,对于我来说,现在看起来是一个不错的选择!)

Backbone 是一个很好的轻量级框架,试试看: Http://backbonejs.org/

Maverick 是一个小型的 JavaScript MVC 框架ー http://maverick.round.ee

我也将在这里介绍一下—— AFrameJS可以与 jQuery、 MooTools 和 Prototype 一起工作。

只是为了让清单更完整一点: ActiveJS

Spine 有一个类似于 Backbone 的 API,但是要小得多,它具有原型继承特性。

另一个: MooTools-MVC

AngularJS 与 jQuery 协同工作,在 MVC 结构和严格的关注点分离方面会有很大帮助。

全面测试环境和依赖注入包括..。

http://angularjs.org看看

试试 Kitty,它只有1.4 KB,它唯一的依赖关系是 EJS。

我支持 AngularJS (充分披露,我在一个有限的方式参与角度开发的努力) ,并非常兴奋它。我对一个内部项目的一个特性进行了并行比较(对不起,没有签名来分享它) ,并在 AngularJS 和 Backbone 中实现了它。这是一个伟大的练习,最后,我非常倾向于 Angular。核心开发人员非常善于回答问题,他们在内置数据绑定、单元/e2e 测试和文档方面做得非常好。它仍处于测试阶段,不久将推出1.0版本。测试版非常稳定。

这里有一点范式的转变,他们使用的方法与大多数相当不同。集成您最喜欢的 jquery 插件需要一点努力,但是是可行的,而且已经完成了(在 github 上的 angle-Contrib)。

我会说(这对于大多数以 js 为中心的框架来说是个问题) ,确保研究如何使你的内容搜索引擎友好(如果这对你很重要的话)。自从六月份加入了棱角社区,我注意到人们的兴趣正在增长,许多人发帖说他们已经看过 Backbone 和其他人,但是真的很喜欢他们在棱角社区看到的东西。

下面是人类已知的所有开源 JavaScript 框架的列表。

Http://getopensource.info/explore/javascript/framework/

或者只有 MVC 框架

Http://getopensource.info/explore/javascript/mvc/

披露: 我是这个网站的开发者。

Ember.js

以下是 Ember 有趣的三个特性:

  1. 捆绑
  2. 计算属性
  3. 自动更新模板

捆绑

使用绑定使两个不同对象之间的属性保持同步。您只需声明一次绑定,Ember 将确保向任一方向传播更改。

下面是如何创建两个对象之间的绑定:

MyApp.president = Ember.Object.create({
name: "Barack Obama"
});


MyApp.country = Ember.Object.create({
// Ending a property with 'Binding' tells Ember to
// create a binding to the presidentName property.
presidentNameBinding: 'MyApp.president.name'
});


MyApp.country.get('presidentName');
// "Barack Obama"

绑定允许您使用 MVC (Model-View-Controller,模型-视图-控制器)模式来构建应用程序,然后您就可以轻松地知道数据将始终正确地从一个层流向另一个层。

已计算属性

计算属性允许您将函数视为属性。 计算属性非常有用,因为它们可以像任何其他属性一样使用绑定。

自动更新模板

Ember 使用 Handlebar,这是一个语义模板库。要从 JavaScript 应用程序中获取数据并将其放入 DOM,请创建一个标记并将其放入 HTML 中,只要您希望该值出现在任何位置:

<script type="text/x-handlebars">
The President of the United States is \{\{MyApp.president.fullName}}.
</script>

Stapes.js

全面披露: 我是这个图书馆的作者:)

如果你正在寻找一些非常小(1.5 kb 缩小/压缩)看看,并告诉我如果你喜欢它。

2016年更新: Sammy.js 似乎被放弃了。

看看 Sammy.js

来自网站的文本:

一个带类的小型网络框架。

  • 萨米的核心只有16K 压缩和5.2 K 压缩和 gzip 压缩
  • Sammy 是建立在一个由插件和适配器组成的系统之上的。只包含您需要的代码。将您自己的代码提取到可重用的插件中也很容易。
  • 整个 API 被设计成易于理解和阅读。Sammy 试图鼓励良好的封装和应用程序设计。
  • 如果发展不令人愉快,那么它的真正意义是什么。萨米试图遵循 MATZ 的方法。它是为开发者的幸福而优化的。

还有一个,重量轻,体积小: http://jqnano.oleksiy.pro/

Can.js 拥有你需要的一切,重量只有8 KB。它从 JavaScriptMVC 中提取了最好的部分,并将其浓缩为一个小型的、但是非常棒的框架,包括观察器、小部件、绑定等等。它与主要框架(JQuery道场工具箱MooTools等)兼容。文档非常优秀,作者反应迅速。绝对值得一看。