是否有 JavaScript MVC(微)框架? [关闭]
Posted
技术标签:
【中文标题】是否有 JavaScript MVC(微)框架? [关闭]【英文标题】:Is there a JavaScript MVC (micro-)framework? [closed] 【发布时间】:2010-09-28 01:32:01 【问题描述】:是否有任何客户端 javascript MVC(微)框架?
我有一个相当复杂的 html 表单,它会从 MVC 模式中受益。
我想一个好的解决方案将提供以下内容:
模型和视图在值更改时更新控制器(观察者模式) 在页面加载时从表单数据填充模型 当模型改变时从模型中填充表单阿贾克斯、彗星、JSONP 和所有爵士乐都严重矫枉过正。
【问题讨论】:
我错了还是这只是一个坏主意(或者可能是一个符合流行语的框架)? 我不久前开始做某事,因为我和你有同样的感觉。它是最小的,AMD 和我能得到的一样无主见。这意味着没有 jQuery 等。我知道它现在已经关闭,但我认为这 可能 是您正在寻找的那种东西:github.com/Wolfy87/tarmac - 我最近没有做太多,因为我以为我会是唯一的用户。 github.com/yuval-a/ZOE 看看TodoMVC,它通过实现一个简单的 TODO 应用程序来比较(几乎)所有可用的 JavaScript 框架。 看看stimulusjs——对于一个带有服务器端生成标记的现有应用程序,我发现这个框架是最小的、侵入性最小的并且切中要害。一起工作真的很有趣。但可能无法满足您的所有要求 【参考方案1】:Backbone 是一个很棒的轻量级框架。试一试: http://backbonejs.org/
【讨论】:
我很高兴找到 Backbone。 我同意,一定要退房! 如何以MVC方式使用Backbone? @TristanJuricek 是否有免费的替代 peepcode?span> 跳过 Backbone 并直接前往 Spine。它有一个更符合逻辑的 MVC 实现。【参考方案2】:JavaScriptMVC 是一个很好的解决方案。 It's Everything is a plugin 方法使您能够仅选择您需要的功能。从 2.0 开始,它基于 jQuery。
在逐步增强您的网站时,这取决于用户,因为 JMVC 只提供了一个中间层进行开发 - 由您自己做出设计选择。
然而,JavaScriptMVC 是最好的通用 JavaScriptMVC 库,因为它具有强大的基于事件委托的控制器。
事件委托让您不必附加事件处理程序,只需为您的页面创建规则。
最后,JMVC 不仅仅是一个 MVC 架构。它涵盖了开发周期的所有部分:
代码生成器 Selenium 和 Env.js 集成测试 文档引擎 自动连续+压缩 错误检测和报告【讨论】:
+1 for JavascriptMVC - 我现在已经将它用于一些应用程序,它非常好。跳过网站上的代码生成示例。我想这些只是为了安抚 Rails 的粉丝。 :) 从基本的 JQueryMX 对象模型开始,然后创建一个控制器。 自从我发表此评论后,我已切换到使用 Require 和 Spine。最终,它们比 JMVC 更小、更优雅、更少“企业”。 JMVC 非常适合我们的 Java 开发人员团队对 JS 进行调整,但是一旦您开始更好地理解 JS,它就不再适用了... JMVC的MVC部分现在是can.js【参考方案3】:Spine 有一个类似于 Backbone 的 API,但它要小得多。它具有原型继承。
【讨论】:
它也是用 CoffeeScript 编写的,并使用 CoffeeScript 的类风格——这不是一个巨大的胜利,但它有点好。 我认为这就是为什么它比骨干还小? Coffeescript 代码更紧凑... 我喜欢脊柱。将它与 RequireJS 一起使用以获得纯粹的魅力。也不要让 CoffeeScript 吓跑你,它也适用于普通 JS... 浏览器支持为 IE >= 9,因此请检查是否与访问者的个人资料相匹配。【参考方案4】:AngularJS 与 jQuery 配合得很好,将在 MVC 结构和严格的关注点分离方面为您提供很多帮助。
包括完整的测试环境和依赖注入...
查看http://angularjs.org
【讨论】:
Angularjs 是 2013 年底迄今为止最好的......我认为...... angular 不是微框架:/ 同意,Angular 不是一个微型框架。 是的,学习曲线也是不成比例的,与其他框架相比它的好处。 angular 与微框架完全相反。这是一头野兽。【参考方案5】:确实有:http://www.javascriptmvc.com/
我想你会觉得这就足够了!
【讨论】:
该网站有一个闪烁标签。 o_0 该网站根本无法为我加载 再试一次,应该可以再工作了。【参考方案6】:我认为这个看起来像你应该检查的东西:http://knockoutjs.com/
(作为一个 silverlight / wpf 程序员,这是让我终于开始学习 javascript 的库。它基于 Model-View-View-Model (MVVM) 模式,对我来说现在似乎是一个不错的选择! )
【讨论】:
作为 silverlight / wpf 程序员,我评估了淘汰赛、骨干网和其他几个。在一天结束时,我切换到了 Angular。它有绑定等等。【参考方案7】:Ember.js
这些是让 Ember 易于使用的三个功能:
-
绑定
计算属性
自动更新模板
绑定
使用绑定使两个不同对象之间的属性保持同步。您只需声明一次绑定,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(模型-视图-控制器)模式来构建您的应用程序,然后放心地知道数据将始终正确地在层与层之间流动。
计算属性
计算属性允许您将函数视为属性。 计算属性很有用,因为它们可以与绑定一起使用,就像任何其他属性一样。
自动更新模板
Ember 使用 Handlebars,一个语义模板库。要从您的 JavaScript 应用程序中获取数据并将其放入 DOM,请创建一个标签并将其放入您的 HTML 中,无论您希望值出现在何处:
<script type="text/x-handlebars">
The President of the United States is MyApp.president.fullName.
</script>
【讨论】:
ember 有利于以任何方式在骨干上使用..如果规范在初始阶段不是那么清楚.. 我确实喜欢 emberJS,但它不是 "micro" 它是 HUGE 因为它是一个扁平化的框架 不允许在同一个句子中使用 Ember 和微框架。【参考方案8】:Stapes.js
完全披露:我是这个库的作者 :)
如果您正在寻找非常小的东西(1.5kb 压缩/压缩),请查看,如果您喜欢,请告诉我。
【讨论】:
第一眼看起来很棒!我喜欢您对原型继承的关注(没有模拟类,也没有令人困惑的new
运算符)。似乎没有必要的是另一个each
和map
。我已经在Underscore.js 和jQuery 中有它们。【参考方案9】:
还有热门Backbone.js
【讨论】:
【参考方案10】:如果您的要求真的很简单,您可以编写自己的简单 MVC,就像 Alex Netkachov 所做的那样。
他的示例是基于 dojo 构建的(注意:由于缺少 dojo.js 文件,它们在他的页面上对我不起作用),但您可以在纯 Javascript 中遵循该模式。
【讨论】:
【参考方案11】:对于你需要的东西可能有点过头了,但是 SproutCore 是一个 MVC 框架,而且它看起来并不比 JavaScriptMVC 或 TrimPath 的 JavaScriptMVC强>Junction。
不幸的是,这些似乎都不是建立在progressive enhancement的原则之上的。
【讨论】:
JavaScriptMVC 的核心 MVC 组件比 Backbone 的 gzipped 大 1k 左右(同时具有更多功能)。 JMVC 完全能够构建逐步增强的应用程序。你只会扔掉模型层。【参考方案12】:流行的 ActionScript MVC 框架 PureMVC 最近被移植到 JavaScript。我还没有机会尝试它,但我相信它很好。
【讨论】:
我喜欢它的 flex。简单而强大。【参考方案13】:2016 年更新:Sammy.js 似乎已被废弃。
看看Sammy.js
来自网站的文字:
一个带类的小型网络框架。
SMALL Sammy 的核心只有 16K 压缩和 5.2K 压缩和 gzip 压缩 模块化 Sammy 建立在插件和适配器系统之上。仅包含您需要的代码。将您自己的代码提取到可重用的插件中也很容易。 干净 整个 API 的设计易于理解和阅读。 Sammy 试图鼓励良好的封装和应用程序设计。 有趣 如果不愉快,开发的真正意义是什么。 Sammy 试图遵循 MATZ 的方法。它针对开发者的幸福进行了优化。【讨论】:
请您详细介绍一下 MATZ 是什么? 红宝石的创造者 Yukihiro “Matz” Matsumoto 经常说他“试图让 Ruby 变得自然,而不是简单”,以一种反映生活的方式。所以软件应该让用户感觉很自然。这是 MATZ 方法的意思。【参考方案14】:也请查看jquery-claypool。
jquery-claypool 是基于我在 django、rails、spring 等方面的经验,基于 jquery 构建的小型、快速、railable mvc 框架。它的重量非常轻,可以在客户端和服务器环境中运行。
它为干净的 mvc、类别日志记录、过滤器 (aop)、控制器的延迟创建、控制反转、约定优于配置等提供了一个路由框架。
它没有做任何 jquery 已经做过的事情,感觉就像 jquery,并且像一个好的框架应该:简单地说。
jquery-claypool
希望你检查一下。
【讨论】:
您如何看待 Claypool 与 Backbone 的关系?【参考方案15】:Jamal 是我见过的最轻的。它也基于 jQuery(奖金)。没用过。
http://jamal-mvc.com/
【讨论】:
【参考方案16】:如果您想控制一切并且非常简单,您可能不需要框架,只需实现自己的 mvc 模式即可。 只需查看这篇文章:Model-View-Controller (MVC) with JavaScript Alex Netkachov 于 2006 年发表。
【讨论】:
【参考方案17】:这是人类已知的所有开源 JavaScript 框架的列表。
http://getopensource.info/explore/javascript/framework/
或者只有 MVC 框架
http://getopensource.info/explore/javascript/mvc/
披露:我是这个网站的开发者。
【讨论】:
【参考方案18】:试试kitty。它只有 1.4KB,唯一的依赖是 EJS。
【讨论】:
【参考方案19】:我不会称其为 micro 框架,但它确实看起来很有趣:Cappuccino Web Framework
【讨论】:
【参考方案20】:CorMVC,易于理解和上手,基于 jquery,不依赖任何服务器技术
【讨论】:
【参考方案21】:我开发了一个非常简单的 Javascript MVC 框架,名为MCV。它并不能完全满足您的要求,但可以通过助手轻松扩展。无论如何,它绝对是微型的(1,9kb 压缩)。
它或多或少有点像 Jamal,但我决定推出自己的产品有两个原因:
移除 jQuery 依赖(虽然我大部分时间都和 jQuery 一起使用) 使用助手使其可扩展。这些类似于 Cakephp 的行为、组件和助手。【讨论】:
【参考方案22】:只是为了让列表更完整一点: ActiveJS
【讨论】:
【参考方案23】:我对 AngularJS 投了赞成票(完全公开,我以有限的方式参与了 Angular 开发工作)并且对此感到非常兴奋。我做了一个并排比较,将一个功能用于一个内部项目(抱歉没有签署共享它)并在 AngularJS 和 Backbone 中实现它。这是一个很棒的练习,最后,我非常倾向于 Angular。核心开发人员非常擅长回答问题,他们在内置数据绑定、单元/e2e 测试和文档方面做得非常好。它仍处于测试阶段,在不久的将来会发布 1.0。 Beta非常稳定。
有一点范式转变,他们使用的方法与大多数人完全不同。集成您最喜欢的 jquery 插件需要一些努力,但可行并且已经完成(github 上的 angular-contrib)。
我会说(这对于大多数以 js 为中心的框架来说都是一个问题),请务必研究如何使您的内容对 SEO 友好(如果它对您很重要)。自从 6 月份加入 Angular 社区以来,我注意到人们的兴趣在增长,许多人在发帖说他们看过 Backbone 和其他人,但真的很喜欢他们在 Angular 中看到的东西。
【讨论】:
【参考方案24】:Maverick 是一个小型 JavaScript MVC 框架 — http://maverick.round.ee
【讨论】:
【参考方案25】:我也将在此处使用管道 - AFrameJS 可与 jQuery、MooTools 和 Prototype 一起使用。
【讨论】:
【参考方案26】:另一个:MooTools-MVC
【讨论】:
【参考方案27】:有一个名为“Coherent”的键值绑定 JavaScript 框架,其灵感来自 Apple 的 Cocoa Bindings。该框架已被 Apple 购买,但在 http://github.com/trek/coherentjs/tree/master 处仍有旧副本。
【讨论】:
【参考方案28】:试试这个jQuery based javascript MVC framework。
【讨论】:
【参考方案29】:还有一个,轻巧小巧:http://jqnano.oleksiy.pro/
【讨论】:
【参考方案30】:Can.js 拥有您所需的一切,而且大小仅为 8 KB。它从 JavaScriptMVC 中汲取了最好的部分,并将其提炼成一个小而有趣的框架,其中包含观察器、小部件、绑定和工作。它与主要框架(jQuery、Dojo Toolkit、MooTools 等)兼容。文档非常好,作者反应灵敏。绝对值得一看。
【讨论】:
以上是关于是否有 JavaScript MVC(微)框架? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
javascript:12种JavaScript MVC框架之比较