有很多可用的JavaScript库,其中大多数都非常擅长提供典型网站所需的传统的以DOM为中心的交互。但是,当需要为单页应用程序构建可管理的代码库时,就需要一整套新框架来解决问题。
老话说得好:“用最好的工具完成任务”。
并不是说像jQuery这样的传统库不能帮助您构建类似桌面的体验,它只是不是它的用例,并且缺少数据绑定、事件路由和状态管理等功能。当然,您可能可以拼凑一堆插件来实现其中一些功能,但在我看来,从专门从头开始构建的框架来解决这些特定问题更有意义。老话说得好:“用最好的工具完成任务。”
我最近接受了Ember.js团队的采访;我的动机是想要了解我所说的“新热点”:Ember.js。
Ember符合我上面描述的要求,并且以一种让人想起jQuery如何让开发人员快速启动和运行的方式。该团队特意采取措施,利用多年从构建大型应用程序中获得的专业知识和知识,抽象化了设计和构建基于模型/视图/控制器的应用程序所固有的许多复杂性。
我想做的是通过一个由多部分组成的文章系列帮助您加快使用Ember.js的速度,该系列文章将逐步向您介绍该框架的概念。我们将从通常的介绍开始(恰好是这篇文章),然后逐渐构建一个完整的应用程序。最重要的是,这也将帮助我强化我已经学到的概念,也许还能学到一些新技术!我会尽力让Ember.js团队审查此材料的准确性,甚至可能为其贡献一些有价值的内容。
在我们继续之前,请注意:Ember.js为您带来了很多魔力。有时您会看着代码并说“啊?它是怎么做到的?”我已经去过那里了,我会尽力提炼一些东西,但我不会深入研究Ember框架代码的内部。相反,我将讨论如何利用其工具和API来构建您的应用程序。
所以让我们开始吧。
核心概念
Ember.js不是构建传统网站的框架。
首先要记住的是,Ember.js不是用于构建传统网站的框架。像jQuery和MooTools这样的库非常适合这一点。如果您正在考虑Ember.js,那么我们的假设是您正在寻求构建类似桌面的体验-尤其是可扩展的体验。事实上,该框架的口号是“一个用于开发雄心勃勃的Web应用程序的框架”,这告诉您它显然不是您爸爸的JavaScript库。
我之前提到过,Ember利用MVC模式来促进正确的代码管理和组织。如果您从未进行过基于MVC的开发,那么您绝对应该阅读它。Nettuts+有一篇关于该主题的精彩文章。对于那些熟悉这些概念的人来说,您应该有宾至如归的感觉。我一直听到的一件事是,从Backbone迁移到Ember.js实际上很容易,因为Ember为您做了很多繁重的工作,同时仍然保持那些开发人员习惯的代码组织模式。p>
Ember还依赖于客户端模板......很多。它使用Handlebars模板库,该库提供允许您创建基于HTML的动态模板的表达式。Ember开发人员可以将数据绑定到这些可嵌入表达式,并动态更改其应用程序的显示。例如,我可以创建一个模板,该模板可以接收一组人员并将其显示在无序列表中: