安装插件
Ember拥有丰富的插件生态系统,可轻松添加到项目中。插件可以为项目提供广泛的功能,通常可以节省时间并让您专注于项目。
浏览插件,请访问Ember Observer网站。它列出并分类了已经发布到NPM的Ember插件,并根据各种标准为他们分配了一个分数。
对于超级租赁,我们将利用两个插件:ember-cli-tutorial-style和ember-cli-mirage。
ember-cli-tutorial-style
代替复制粘贴CSS样式到超级租赁应用,安装ember-cli-tutorial-style插件可以立即为应用添加CSS样式。ember-cli-tutorial-style会生成一个叫ember-tutorial.css
的文件并放置在应用的vendor
目录中。vendor
目录是Ember的一个特殊目录,其中可以包括被编译到应用程序中的内容。当Ember CLI执行构建时,会把ember-tutorialCSS
文件的内容复制vendor.css
文件中。该vendor.css
文件被app/index.html
引用,使得样式在运行时可用。可以自己打开app/index.html
看看其中对于vendor.css
的引用。
安装ember-cli-tutorial-style
插件:
$ ember install ember-cli-tutorial-style
由于Ember插件是npm软件包,ember install
请将它们安装在node_modules
目录中,并在package.json
中添加了条目。插件安装成功后,需要重新启动服务器。重新启动服务器(执行ember s
)。
ember-cli-mirage
Mirage是一个客户端HTTP骨架库,经常用于Ember验收测试。对于本教程,我们将使用mirage作为我们的数据源而不是传统的后端服务器。mirage将允许我们在开发应用程序时创建假数据和模拟API。
安装mirage插件:
$ ember install ember-cli-mirage
需要注意mirage的config.js
文件,这是定义API端点和数据的地方。我们将遵循JSON-API规范,这要求我们以某种方式格式化数据。我们修改mirage/config.js
文件,以便mirage发回之前定义的租赁清单:
export default function() {
this.namespace = '/api';
this.get('/rentals', function() {
return {
data: [{
type: 'rentals',
id: 'grand-old-mansion',
attributes: {
title: 'Grand Old Mansion',
owner: 'Veruca Salt',
city: 'San Francisco',
"property-type": 'Estate',
bedrooms: 15,
image: 'https://upload.wikimedia.org/wikipedia/commons/c/cb/Crane_estate_(5).jpg'
}
}, {
type: 'rentals',
id: 'urban-living',
attributes: {
title: 'Urban Living',
owner: 'Mike Teavee',
city: 'Seattle',
"property-type": 'Condo',
bedrooms: 1,
image: 'https://upload.wikimedia.org/wikipedia/commons/0/0e/Alfonso_13_Highrise_Tegucigalpa.jpg'
}
}, {
type: 'rentals',
id: 'downtown-charm',
attributes: {
title: 'Downtown Charm',
owner: 'Violet Beauregarde',
city: 'Portland',
"property-type": 'Apartment',
bedrooms: 3,
image: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Wheeldon_Apartment_Building_-_Portland_Oregon.jpg'
}
}]
};
});
}
mirage会覆盖发送网络清单的javascript代码,并代替它们返回你指定的JSON串。这意味着你的开发工具中不会看到任何网络请求,而是会看到控制台中记录的JSON。我们修改mirage/config.js
来配置Mirage,以便每当Ember Data发出GET请求/api/rentals
时,Mirage将返回此JavaScript对象作为JSON,并且实际上没有网络请求。在mirage配置中,我们还定义了/api
的命令空间。如果没有这个修改,应用程序导航到/rentals
时会与Mirage冲突。
为了使这个起作用,需要应用程序来默认向/api
命名空间发送请求。为此,我们要生成一个应用程序适配器。适配器是一个对象,Ember Data用它来确定我们如何与后台进行通信。我们将在本教程的后面更详细地介绍Ember Data。现在,我们为应用程序生成一个适配器:
$ ember generate adapter application
这个适配器(app/adapters/application.js
)扩展了Ember Data的基础类JSONAPIAdapter:
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api'
});
请注意,在本教程的这一节上,app/routes/rentals.js
文件仍然提供数据。我们将在“使用Ember Data”一节中使用这里设置的mirage数据。