Emberjs 上手 - 使用Grunt进行项目组织与创建

在要开始构建Emberjs的应用前,首先考虑一个可以组织和管理好整个JavaScript项目的方法和工具,可以使用Ember-cli,也可以使用通用的JavaScript的构建工具Grunt。

为什么需要这样的工具呢?原因是软件项目的开发与管理离不开良好的代码组织方法与管理工具的使用,特别是团队开发人员多,项目结构复杂时,技术的组织管理就会是一个挑战。好比盖一幢楼房,如果不能够有效地管理建筑材料、工人与施工进度时,那么工程质量与交付就无法得到保障了。

Grunt 的功能

好了,现在来看看使用Grunt有些什么好处吧,

1. 支持在Linux及Windows上的命令行操作,无需界面

2. 自定义任务Task,可以完成各种软件项目的工作(包括创建、编译、压缩、测试等常见的需求)

3. 支持第三方插件,已经形成覆盖JavaScript软件项目的完整的生态系统,并且不断更新。
    详细的插件库资料可以浏览 http://gruntjs.com/plugins

4. 由于被广泛支持,很多出名的JS框架都可以在grunt插件库里找到相应的可用插件

5. 使用JSON格式配置项目,实现灵活、简便,可以适合几乎任何项目的文件目录结构

环境安装

步骤1: 安装npm

由于Grunt和Gurnt插件的安装和管理都是通过npm在进行, 所以你需要先安装npm, 也就是Node.js的包管理工具到你的电脑上。安装请点击 http://nodejs.org/, 下载安装包到你的电脑上安装好, 然后打开命令窗口,输入 npm help

[email protected] C:\Program Files\nodejs\node_modules\npm

你应该可以看到想用的版本信息,恭喜你,npm安装已经完成了

步骤2: 安装Grunt CLI

接下来,你需要安装Grunt CLI,在命令窗口下输入

npm install -g grunt-cli

安装完毕后,你可以输入 grunt命令来查看版本信息。

grunt-cli: The grunt command line interface. (v0.1.13)

如果你看到类似上面的信息,你就完成了grunt cli的安装了

步骤3: Emberjs 项目目录结构

一个好的JS项目离不开好的目录结构,你可以根据自己的需要来配置目录名和层次。而在Ember项目里,由于Ember的设计特性会影响到你的功能结构组织方式,因此在这里我们采用以下的目录树结构作为一个例子供项目参考

/scripts
   |_app
     |_components
       |_sample-comp.js
     |_controllers
       |_sample-controller.js
     |_helpers
     |_models
     |_routes
       |_sample-route.js
     |_styles
     |_templates
       |_sample.hbs
     |_views

这些目录未必你都用得着,但我们就拿它来作为一个普通的JS项目吧。对于多数的中大型项目来说,项目的模块化、组件化是整个项目结构的设计方向,主要目的是做到易于管理、可重用和方便测试。而Ember世界的设计理念为项目提供了这些组织结构, 我们可以把路由、控制器和模板分别放在不同的文件下。

步骤4:创建Grunt配置文件

接下来,你需要创建一些Grunt的配置文件,以便可以使用Grunt来管理、编译、测试你的项目。先移到/scripts目录下,创建一下的文件

package.json文件

这是用于描述项目的metadata文件,内容如下

{
  "name": "Sample Project",
  "version": "0.0.1",
  "devDependencies": {
    "grunt": "~0.4.5",
  }
}

Gruntfile.js文件 

接着,要创建任务配置文件,内容如下

module.exports = function (grunt) {
    //configuration
    grunt.initConfig({
        pkg: grunt.file.readJSON(‘package.json‘),
    });
    //tasks
    grunt.registerTask(‘default‘, []);
};

保存文件后,打开命令行,输入 npm install 该命令会读取package.json文件并找到依赖的工具 grunt 0.4.5并安装。 如果没有错误信息,你就可以得到一个新的目录生成

/scripts
      |_node_modules

步骤5:插件安装

要完成项目创建、编辑、压缩、测试等工作,你还需要各种插件,安装到你的项目里。

grunt-contrib-concat 合并插件

输入以下命令安装该插件,它的作用是把数个分割的js文件合并成一个

npm install grunt-contrib-concat --save-dev

上面的命令的参数 --save-dev 是让npm在安装完插件后同步跟新package.json元数据信息。

命令运行完成后,你可以看到grunt-contrib-concat被安装到你的机器上,打开package.json文件,看到以下信息

“grunt-contrib-concat”: “^0.5.0”

grunt-contrib-jshint 代码检验插件

输入以下命令安装该插件,它的作用是扫描你的代码并找到潜在的bug,并给出提示

npm install grunt-contrib-jshint --save-dev

命令运行完成后,你可以看到grunt-contrib-jshint被安装到你的机器上,打开package.json文件,看到以下信息

"grunt-contrib-jshint": "^0.10.0"

grunt-contrib-uglify压缩插件

输入以下命令安装该插件,它的作用是压缩你的js文件,并提供一定程度的加密

npm install grunt-contrib-uglify --save-dev

命令运行完成后,你可以看到grunt-contrib-uglify被安装到你的机器上,打开package.json文件,看到以下信息

"grunt-contrib-jshint": "^0.6.0"

grunt-ember-templates Ember模板插件

输入以下命令安装该插件,

npm install grunt-ember-templates --save-dev

命令运行完成后,你可以看到grunt-ember-templates被安装到你的机器上,打开package.json文件,看到以下信息

"ember-template-compiler": "^1.9.0-alpha","grunt-ember-templates": "^0.5.0-alpha","handlerbars": "^2.0.0"

步骤6:配置Grunt任务

完成插件的安装后,你就可以根据自己的目录结构来配置任务了。以下是供参考的任务配置例子

function config (name) {
    return require(‘./‘+name+‘.js‘);
}

module.exports = function (grunt) {
    //configuration
    grunt.initConfig({
        pkg: grunt.file.readJSON(‘package.json‘),
        concat: config(‘concat-build‘),
        jshint: config(‘jshint-build‘),
        emberTemplates: config(‘template-build‘)
    });

    //load
    grunt.loadNpmTasks(‘grunt-contrib-concat‘);
    grunt.loadNpmTasks(‘grunt-contrib-jshint‘);
    grunt.loadNpmTasks(‘grunt-ember-templates‘);

    //tasks
    grunt.registerTask(‘default‘, [‘concat‘, ‘jshint‘, ‘emberTemplates‘]);

};

这里面按顺序加载了3个任务, 分别是 concat, jshint 及 emberTemplates。 每个任务都需要一个独立的配置文件,并放在与package.json相同目录下。参考以下写法

concat-build.js文件

module.exports = {
      
      option: {
         separator: ‘\n‘
      },
      
      basic_and_extras: {
        files: {
          ‘scripts/app/components.js‘: [‘scripts/app/components/**/*.js‘],
          ‘scripts/app/controllers.js‘: [‘scripts/app/controllers/**/*.js‘],
          ‘scripts/app/helpers.js‘: [‘scripts/app/helpers/**/*.js‘],
          ‘scripts/app/models.js‘: [‘scripts/app/models/**/*.js‘],
          ‘scripts/app/app.js‘: [‘scripts/app/routes/**/*.js‘]
         }
      }
      
}

* 这里的separator作用是分割每个JS文件的内容

jshint-build.js文件

module.exports = {
        
        files: [‘Gruntfile.js‘,
                ‘scripts/components/*.js‘,
                ‘scripts/controllers/*.js‘,
                ‘scripts/helpers/*.js‘,
                ‘scripts/locale/*.js‘,
                ‘scripts/models/*.js‘,
                ‘scripts/routes/*.js‘,
                ‘scripts/templates/**/*.js‘
        ],
        
        options: {
            globals: {
                jQuery: true,
                console: true,
                modules: true
            }
            
        }

}

template-build.js文件

module.exports = {

compile: {
        options: {
            templateName: function(sourceFile){
                return sourceFile.replace(/scripts\/templates\//, ‘‘);
            }
        },
        files: {
            ‘scripts/admin/templates.js‘: [‘scripts/templates/**/*.hbs‘]
        }
    }

}

步骤7:运行Grunt任务

当完成上述所有配置后,你就可以运行Grunt任务了。打开命令窗口,并进入到你的项目目录,也就是上述的Gruntfile.js所在文件夹,然后输入以下命令

grunt

正常情况下,你将看到以下信息

Running "concat:option" (concat) task

Running "concat:basic_and_extras" (concat) task
File scripts/components.js created.
File scripts/controllers.js created.
File scripts/app.js created.

Running "jshint:files" (jshint) task
>> 34 files lint free.

Running "emberTemplates:compile" (emberTemplates) task
File "scripts/templates.js" created.

Done, without errors.

如果你的JS文件出错,将会得到相关的提示信息。

总结

Grunt的插件可以让你完成几乎任何的项目任务,你可以到Grunt的官方网站去找你想要的插件,他就像你的JS项目工具箱,让你灵活配置自己的行装。万一如果你找不到自己想要的,也可以自行编写。

时间: 2024-10-27 07:08:04

Emberjs 上手 - 使用Grunt进行项目组织与创建的相关文章

JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架

 Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台.Grunt 能够从模板快速创建项目,合并.压缩和校验 CSS & JS 文件,运行单元测试以及启动静态服务器. 安装 Grunt 推荐 Windows 用户使用 Git Shell 来进行命令行操作.安装 Windows 桌面版 GitHub 的时候会自动安装 Git Shell. GitHub for Windows 下载地址:http://windows.github.com Grunt

cordova3.X 运用grunt生成plugin自定义插件骨架

Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码. 一.安装cordova npm install -g cordova 二.创建项目 cordova create hello com.blue.sky.hybrid.app.hello HelloWorld 三.添加平台支持 cd hello cordova pl

再探 butterfly.js - grunt.js篇(一)

再探 butterfly.js - grunt.js篇(一) 神器 grunt.js 久仰grunt.js的大名,学习grunt.js一直是我todo List的第一位.趁着新春佳节来临之际(打酱油的日子),就来填了这个坑,完了这个心愿. grunt.js的强大,强大在于它拥有很多用途丰富的插件,和不同插件之间的联动实现更牛逼的功能. 这里默认大家已经安装了npm和会用npm install等指令,就不详细讲了.下面讲用到grunt-contrib-watch和grunt-contrib-con

快速上手之 MVC入门实例

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 快速上手.今天我们来从无到有创建mvc项目,介绍一下相关的知识点.咱们开门见山.我做的简单的demo 是最基本

windows下使用grunt

grunt官网:http://www.gruntjs.org/ 一.安装grunt 先安装node,在http://www.nodejs.org/可以下载安装包直接安装.在命令行下运行: npm install -g grunt-cli 即可安装grunt. 二.创建项目 创建web项目:my-project-name,项目目录如下: 在项目根目录下新建Gruntfile.js和package.json文件.示例如下: /* package.json */ { "name": &quo

[译]使用Babel和Broserify创建你的ES6项目

原文地址:Setting up an ES6 Project Using Babel and Browserify JavaScript的发展日新月异,ES6很快就要接管JS了.很多著名的框架像AngularJS 2.React Native已经开始支持ES6了.我们是时候准备拥抱变化了,所以我们应该开始在几乎所有的浏览器支持之前使用ES6码代码了. 本文将要介绍如何使用Babel和Browerify来创建项目并且编写能够运行在老版本浏览器上的现代代码.Babel将ES6代码编译为大多数浏览器(

使用grunt压缩,合并前端代码

-- 安装nodejs Windows下安装nodejs,点击这里,其他系统会安装软件,nodejs就会安装,nodejs安装还是很简单的. -- 安装grunt 使用npm全局安装,命令: npm install -g grunt-cli -- 测试压缩 -- npm init npm init创建package.json文件 加入依赖的包.package.json内容 { "name": "demo1", "version": "1

Grunt 初体验

对于没有接触过类似自动化工具的朋友,对 grunt 也许只是停留在听过阶段,而并没有真正的使用过.今天就从最初级的教程说起.在开始教程之前,需要先确保你已经安装了 node. 下面就开始来讲解 grunt 的使用过程. 1.安装全局的 grund-cli $ npm install -g grunt-cli 安装 grunt-cli 并不等于安装了 Grunt 任务运行器!Grunt CLI 的任务是运行 Gruntfile 指定的 Grunt 版本. 这样就可以在一台电脑上同时安装多个版本的

最受IT公司欢迎的50款开源软件

文章来自:云头条编译 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服务,或基于开源工具而建的产品和服务,还有一些在为开源代码贡献代码或支持开源项目. Black Duck 在 2015 年的一项调查发现,78% 的企业组织使用开源软件,这个比例几乎是 2010 年时候的两倍.此外,88% 的企业表示,它们预计在今后几年