19 December 2014

前言

是不是涉及太多东西了,rails还没学好,就去学ember.js,搞单页面的应用程序。但是,对客户端的js MVC有些好奇,所以,想要了解一下。

起步

起步可以使用http://emberjs.com/提供的starterkit,包含所有依赖资源: jQuery, handlbar, ember等。

指南中介绍, 为应用添加application.jsrouter.js以及models目录。

对具体的细节,感到厌烦了,决定去看一会儿核心概念。

web的特殊性: web应用是通过收藏和分享链接来凹陷作用,URL是web应用的核心 - 可享性,可协作性。web,不仅仅是HTML,css,js。

Ember.js的设计目标: 构建媲美本地应用的web框架。

概念

Ember.js的核心概念:

  • 模板: 对应模型,应用程序的用户接口。模板中包含:表达式()、出口()、组件(自定义的HTML元素,重用)
  • 路由: URL 与 模板的映射,类似Rails中的路由
  • 组件: Hanlebars描述,js实现行为,简化应用的模板
  • 模型: 存储持久化状态的对象,服务器端加载,服务器端通信
  • 控制器: 应用状态的对象,从两者中获取属性

对比下来,非常类似Rails中的MVC框架。以路由为导向。

命名惯例

Ember.js使用命名管理连接对象(路由、控制器、模板),这也类似Rails。

应用程序: Ember启动时,寻找如下对象(以App为命名空间)

  • App.ApplicationRoute - 提供了控制器的钩子方法(model,setupController)
  • App.ApplicationController
  • application模板 - 主渲染模板

代码示例为:

App.ApplicationRoute = Ember.Route.extend({
  setupController: function(controller) {
    // `controller`是ApplicationController的实例
    controller.set('title', "Hello world!");
  }
});

App.ApplicationController = Ember.Controller.extend({
  appName: 'My First Example'
});
// application template
// <h1></h1>
// <h2></h2>

简单路由

每个路由都存在对应的控制器和模板。例如,this.route('favorites');路由将对应/favorites的URL,App.FavoritesRoute、App.FavoritesController和favorites模板。

后记

我觉得,我Rails还没学到家,就东看看西瞧瞧的态度不好。我还是继续深入学习Rails比较好。 以灵活嵌入和学习成本方面来考虑,backbone.js 比 ember.js 更具有吸引力。




傲娇的使用Disqus