2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:521811

评论

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

应用健康度隐患刨析解决系列之数据库时区设置

京东科技开发者

数据库 优化 企业号 3 月 PK 榜 健康度

剥茧抽丝,细数模块化的前世今生

战场小包

前端 前端工程化 前端模块化

新一代移动动态研发模式及原理机制解析

Onegun

移动开发 热更新 动态更新

玖章算术CEO叶正盛在杭州人工智能小镇AIGC论坛发表主题演讲

NineData

人工智能 代码开发 AIGC 玖章算术 NineData

是找茬? 还是装 B?阿里面试每轮必问的“Spring Boot”意义何在?

三十而立

PostgreSQL 技术内幕(六)Greenplum 排序算子

酷克数据HashData

龙蜥白皮书精选:龙蜥全面支持 Intel 第四代可扩展处理器 SPR 平台

OpenAnolis小助手

开源 Spr 操作系统 intel 龙蜥社区

消费级AR眼镜爆发将近:Rokid+无影突破算力,打造“第三块屏幕”

云布道师

无影

干货分享|袋鼠云数栈离线开发平台在小文件治理上的探索实践之路

袋鼠云数栈

大数据 平台开发

不懂就问:MySQL delete 表数据,磁盘空间为什么没有被释放?

Java你猿哥

Java MySQL 数据库 innodb Java工程师

Surfire 单元测试添加 jvm参数

HoneyMoose

批量上传iOS应用程序截图的实用技巧

Dubbo 正式支持 Spring 6 & Spring Boot 3

Java你猿哥

Java spring Spring Boot dubbo ssm

在 Kubernetes 中部署应用交付服务(第 2 部分)

NGINX开源社区

nginx Kubernetes

弯道超车!阿里高工新产Java面试速成指南,面试骚操作都在里面了

Java你猿哥

Java 面试 面经 Java工程师 春招

zookeeper的Leader选举源码解析

京东科技开发者

数据库 代码 企业号 3 月 PK 榜 选举机制

最新Ins图片保姆级保存方法来啦!你还在等什么!

frank

ins

数据库 CI/CD 工具 -- Bytebase 介绍

Se7en

简单的文件搜索工具:Find Any File激活版

真大的脸盆

Mac Mac 软件 文件搜索 搜索工具 搜索软件

MySQL8.0 优化器介绍(一)

GreatSQL

MySQL greatsql greatsql社区

MySQL 语句中 where 条件后为什么写上1=1 , 是什么意思?

Java你猿哥

Java MySQL sql 后端 ssm

软件工程高效学 | 软件项目的开发模型

TiAmo

软件开发 模型开发

最佳实践 | 用腾讯云智能语音打造智能对话机器人

牵着蜗牛去散步

腾讯云 腾讯 语音识别 语音合成 智能对话机器人

架构的演进

程序员大彬

Java 架构

三方对接「心得」与「体会」

Java 对外接口

MPSK通信系统的设计与性能研究-8PSK

timerring

通信系统 8PSK

2周时间就掌握了Spring boot,原来是收藏了这样一份文档资料

三十而立

Java spring

ChatGPT如何助力DevOps|用例解读

SEAL安全

DevOps ChatGPT 企业号 3 月 PK 榜

Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)

三十而立

Java

厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误

Java你猿哥

spring 面试 Spring Boot mybatis 面经

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