环境:windows 7
执行全局安装
# grunt 必须依赖
npm install -g grunt-cli
# 生成项目脚手架 grunt-init --help
npm install -g grunt-init
Yeoman 是 yo + bower + grunt
npm install -g yo
自动安装grunt 和 bower
# 生成项目脚手架
npm install -g generator-webapp
进入项目根目录
npm install grunt --save-dev
npm install grunt-contrib-qunit --save-dev
验证版本 grunt -version
grunt-cli v0.1.9
grunt v0.4.1
yo wabapp
查看目录下的文件,自动生成 package.json 和 Gruntfile
npm install
grunt server --force
http://localhost:9000 出现欢迎页面
bower install ember
app 目录下自动生成 bower_components
npm install grunt-ember-templates --save-dev
建立模版文件夹 templates
mkdir app/templates
在Gruntfile.js文件添加
grunt.loadNpmTasks('grunt-ember-templates');
在grunt.initConfig内添加
emberTemplates: {
compile: {
options: {
templateName: function(sourceFile) {
return sourceFile.replace(/app\/templates\//, '');
}
},
files: {
"<%= yeoman.app %>/scripts/templates.js": ["<%= yeoman.app%>/templates/**/*.handlebars"]
}
}
},
在 watch处添加如下内容:
emberTemplates: {
files: '<%= yeoman.app %>/templates/**/*.handlebars',
tasks: ['emberTemplates']
},
最后添加emberTemplates到server任务
grunt.registerTask('server', function (target) {
...
grunt.task.run([
...
'compass:server',
' emberTemplates', // Add this line.
'livereload-start',
...
]);
});
App = Em.Application.create({
rootElement: $('#app'),
});
App.Router.map(function(){
this.route('about');
});
<div id="app" class="container">
</div>
添加js文件
<script src="bower_components/jquery/jquery.js"></script>
<script src="bower_components/handlebars/handlebars.js"></script>
<script src="bower_components/ember/ember.js"></script>
<script src="scripts/main.js"></script>
<script src="scripts/templates.js"></script>
在 app/templates目录下建立模版文件
<h1>My App</h1>
{{outlet}}
<h1>My App</h1>
<h1>index</h1>
{{#linkTo "about"}}About{{/linkTo}}
<h1>About</h1>
{{#linkTo "index"}}index{{/linkTo}}
grunt server --force
http://localhost:9000 出现欢迎页面,内容如下:
My App
index
About
对components、controllers、models、routes、views等js文件进行合并和压缩。

