ember学习笔记
19 December 2014
前言
是不是涉及太多东西了,rails还没学好,就去学ember.js,搞单页面的应用程序。但是,对客户端的js MVC有些好奇,所以,想要了解一下。
起步
起步可以使用http://emberjs.com/提供的starterkit,包含所有依赖资源: jQuery, handlbar, ember等。
指南中介绍, 为应用添加application.js
和router.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