写点什么

SproutCore:将 MVC 引入 JavaScript

  • 2007-08-15
  • 本文字数:1695 字

    阅读完需:约 6 分钟

SproutIt 发布了 SproutCore ,一个基于 JavaScript 语言的完整的全新 MVC 应用程序框架。SproutCore 是 SproutIt 为了他们的产品 Mailroom 而开发的,现在已经被 Apple 用在了.Mac Web Gallery 上。下面是来自 Tucows 的报导:

[……]SproutCore 是一个完全运行于浏览器端的 JavaScript 框架,可以运行在以任何服务器技术为后端的配置环境中。在 Jolley 的公司 SproutIt,他们使用 Rails 作为服务器后端,他们用一个包含了 SproutCore 框架的 Rails 插件来将一切变得更容易。Jolley 说 Apple 前端使用的是 SproutCore,后台则使用 WebObjects 技术和一台 WebDAV 服务器 [……]

由于市面上早就出现了不少 Ajax 程序库,InfoQ 采访了作者 Charles, Jolly,详细了解 SproutCore 与它们的不同之处。Jolly 首先被问到究竟是什么灵感使得他在已有的很多 JavaScript 框架的之外还要再重新开发一个全新的框架:

在我们构建新版本的 Mailroom(我们为小型商业公司提供的邮件管理器—— http://www.sproutit.com/mailroom)时,我想做一些更加丰富多彩的东西,使其更像一个桌面软件,而不是一个 Web 应用程序。 但有个问题就是其它的框架都是被设计用来帮助你在网页的这儿或那儿添加一些 Ajax 以及动画效果,它们不能帮助你在 Web 浏览器之上构建一个功能齐备的应用程序。所以我在开发 Mailroom 的时候,所以我不得不额外构建的用来支持这个富界面的部分,都被我抽取出来,并在软件本身的基础上做出了这个框架。

他又回答了 SproutCore 所拥有的而其它现有框架没有的特性:

SproutCore 和其它框架最大的不同之处在于,它为你提供了所有必要的工具,让你能真正得以与实际数据打交道。换句话说,你可以从服务器读取数据,然后用 SproutCore 来生成你的用户界面。同样,用户操作数据,SproutCore 也将自动的更新你的用户界面并且不需要和服务器进行交互。它使得你的应用程序感觉非常的快速并且丰富多彩。 来看一个非常简单的例子:在 Mailroom 中我们有一个叫做“Needs Attention”的页面,来告诉你你现在必须回复的邮件。当你回复了一个信息,我们就马上将它从“Needs Attention”这个页面移除。

在传统的框架和 Web 程序中,你必须与服务器进行一次完整的交互或者编写大量额外的 JavaScript。但是用 SproutCore 这一切都是自动的。只要将消息的状态设置为“已回复”,那么消息列表就会更新。

接下来 Jolley 被问到到底哪些应用程序该用 SproutCore,哪些不该:

如果你希望构建一个更像桌面程序的富客户端程序,你一定要使用 SproutCore。一旦你在页面上加入工具栏、菜单和源列表之类的组件后,你很快就会发现你得在页面上维护很多细微的状态。SproutCore 使得这些变得更加容易实现。 如果你只是有个网页,并且只需要一些 Ajax 和动画特效的话,SproutCore 就显得大材小用了。我倾向于使用一些更加简捷的框架,譬如 Scriptaculous。实际上,在我们的营销页面和 Sproutit 的 Blog 中,我们使用的是 Scriptaculous 和 Prototype。不过我们也使用 SproutCore 来构建我们所有的 Web 程序。

随后,这次采访的话题又转向了 Apple。Jolley 谈到他自己和 Apple 之间在.Mac Galley 上的合作。他说当 Apple 发现 SpoutCore 框架后,他被邀请加入他们的团队来帮助他们构建应用程序。为了提高 SproutCore 的性能以及完善它的 API,.Mac 团队为在原有基础上又添加了大量的功能。这就使得如今的 SproutCore API 的运行速度提高了 4 到 5 倍,同时跨浏览器方面的表现也是渐入佳境。

最后 Jolley 被问及了 SproutCore 的未来:

我正在为它加入更多的功能,例如源列表、工具栏、拖拽和一些超炫的动画效果,这将使 SproutCore 在 UI 设计方面更上一层楼。不过可能更重要的是,我正在构建一个实例性的应用或是一个入门教程,因为我认为这是现在采用 SproutCore 最重要的障碍。

查看英文原文: Bringing MVC to JavaScript - SproutCore - - - - - -

译者简介:冉翔,有着三年 JavaEE 工作经验,目前是一个 Linux/RoR fan。北京RoR 培训活动核心成员,个人网站 ranxiang.com ,你可以通过 Email&Gtalk 找到他:ranxiang(at)gmail.com。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-08-15 22:521429

评论

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

Flink的程序结构

大数据技术指南

flink 5月日更

☕【JVM技术之旅】彻底弄清楚Minor GC和Major GC及Full GC

洛神灬殇

JVM 垃圾回收 GC 5月日更

自我复盘

lenka

5月日更

网络攻防学习笔记 Day22

穿过生命散发芬芳

5月日更 网络攻防

【音视频】基于声网实时音视频能力的音视频质量体系建设

轻口味

音视频 WebRTC 声网 质量指标

模块4-作业

yu

如何提升Hadoop访问对象存储US3的效率?我们做了这些技术实践

UCloud技术

大数据 hadoop

Python - 日志处理(logging模块)

若尘

日志 log Python编程 5月日更

编辑器的江湖

ES_her0

5月日更

爱情从来都不是简单的事

阿泽🧸

520单身福利

加密货币终将替代黄金?总价值已接近私人持有黄金价值

CECBC

模块四:课后作业

菲尼克斯

架构实战营

InnoDB 锁类型及其分析

luojiahu

innodb 死锁 间隙锁 意向锁

模块4作业4

杨彬

#架构实战营

加油!未来的每一天

Sherry

520单身福利 520 单身福利

密码学基础

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

Python自动化神器-Fabric

小圆子

520 单身福利

设计千万级学生管理系统的考试试卷存储方案

Vincent

架构训练营

双峰哲学 - 一种深度工作的哲学

石云升

学习 职场经验 5月日更

ORACLE数据库应用开发三十忌

老猿Python

数据库 oracle 程序开发 数据库应用开发

ArrayList与LinkedList性能大PK

Damon

java基础 5月日更

C语言不完全类型是什么?有什么用途?

不脱发的程序猿

C语言 C语言不完全类型

缅怀袁老

topsion

随笔杂谈

打击挖矿和交易行为!

CECBC

今年过一次不一样的520!

liuzhen007

520单身福利 520 单身福利

感恩父母

若兮

520 单身福利

Python数据科学基础-Pandas介绍

五分钟学大数据

数据科学 5月日更

【渗透测试】hackthebox靶场之ScriptKiddie

Thrash

🚄【Redis 干货领域】帮你完全搞定Cluster原理(架构篇)

洛神灬殇

redis redis集群 5月日更 redis架构

Vue-2-常用指令

Python研究所

520 单身福利

架构学习笔记:读写分离

风翱

架构 5月日更

SproutCore:将MVC引入JavaScript_Java_Shane Witbeck_InfoQ精选文章