第一章 课程介绍
1.1 课程目标和学习内容介绍
前端集成解决方案
☑ 什么是前端集成解决方案?
草根派:解决前端工程的根本问题。
学院派:一套包含框架和工具,便于开发者快速构建美丽实用的web应用程序的工作流,同时这套工作流必须是健壮的。
☑ 解决哪些前端问题?
开发团队代码风格不同意,如何强制开发规范
前期开发的组件库如何维护和使用
如何模块化前端项目
服务器部署前必须的压缩、检查流程如何简化,流程如何完善.
☑ 主流的方式有哪几种?
- Yeoman
- Bower
- Grount|Gulp
CodeKit:https//inclient57.com/codekit/ —-仅限于os x
FIS:http://fis.baidu.com/
Spirit:http://alloyteam.github.io/Spirit
☑ 目前Grunt的竞争者?
Buildy
jasy
Gmake
2 准备工作
2.1 nodejs简介
2.2 Yeoman,Bower,Grunt简介及安装
Yeoman
简介:在Web项目的立项阶段,使用yeoman来生成项目的文件、代码结构。Yeoman自动将最佳实践和工具整合进来,大大加速和方便了后续的开发。
官方站点:http://yeoman.io/
1 | sudo npm install -g yo |
Bower
简介:跟踪管理web站点的框架 、库、公共部分等
官方站点:http://bower.io/
1 | sudo npm i -g bower |
Grunt
简介:: Build tool,实现开发自动化(减少像压缩、编译、单元测试、代码校验这种重复且无业务关联的工作。)
官方站点: http://gruntjs.com
优点: 生态庞大
1 | sudo npm i -g grunt-cli |
第3章 Yeoman实践
3.1 Yeoman实践
Generator:各式各样的模具
安装模具:npm i -g generator-[框架或工具的名称]
案例:angular项目
1 | sudo npm install -g generator-angular ----安装angular的模具 |
第4章 Bower实践
基本使用:bower install [框架和工具名 | github短写 | github仓库 | url]:会从bower服务器上下载
☑ 一般情况
bower install jquery
☑ 通过github短写(github网站上显示的项目的github短语)
bower install jquery/jquery
☑ 通过github完整仓库地址安装
bower install https://github.com/jquery/jquery.git
☑ 直接通过URL安装(使用的框架或组件,没有在github上的情况)
bower install http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js
1 | mkdir bower-in-action && cd bower-in-action ----bower测试目录 |
4.1 bower.json:配置项目依赖
1 | $ bower install jquery # 在没有配置文件的情况下先安装jquery |
4.2 .bowerrc: bower本身相关的配置
1 | $ vim .bowerrc |
第5章 Grunt实践
5.1 Grunt的task,target和options
命令:
grunt {task}:{target}
:执行某个task
中的某个target
grunt {task}
:执行整个task
配置文件:
grunt.initConfig({Object})
:定义单个taskgrunt.registerTask({String}, {String}, {function})
或grunt.registerTask({Array})
:组合已有的task集合为一个新的task
案例:配合Yeoman
1 | $ mkdir -p grunt-in-action/grunt-by-yo && cd grunt-in-action/grunt-by-yo |
5.2 从无到有构建grunt项目
多少年的老规矩了。 ----霸王别姬
1 | $ mkdir -p grunt-empty/js |
5.3 初识Grunt Files处理方式
5.3.1 初始化环境
1 | $ npm install grunt-contrib-copy --save-dev ----grunt复制文件的工具 |
5.3.2 编写Gruntfile
在target中定义简单的task:使用src、dest、files
案例1:自定义复制和清除任务
1 | $ vim Gruntfile.js |
1 | ; |
1 | $ grunt copy ----测试copy这个task(文件复制) |
案例2:在案例一的基础上细化任务
1 | $ vim Gruntfile.js |
案例3:在案例一的基础上使用files增加复制的文件,比案例二更精简
files:成对设置原文件和目标文件(数组方式)
1 | vim Gruntfile.js |
案例4:在案例三的基础上使用{目标文件:源文件}的方式进一步改进,这种情况下不支持额外参数
files:成对设置原文件和目标文件(键值对方式)
1 | $ vim Gruntfile.js |
案例五:使用通配符和其它options简化案例四
1 | $ vim Gruntfile.js |
或
1 | vim Gruntfile.js |
案例6:综合使用各种options
使用通配符和其它options
序号 | options | 功能 | |
---|---|---|---|
filter | 指定过滤方式(可以是函数) | ||
dot[Boolean] | true代表命中以.开头的文件 | ||
matchBase[Boolean] | true代表只匹配路径的最后一级的名称 | ||
expand[Boolean] | true代表动态处理src到desc的文件映射 | ||
cwd[string] | 源文件根目录 | ||
src[string] | 匹配源文件 | ||
ext[string] | 修改源文件的后缀 | ||
extDot[string] | 从源文件的何处开始替换后缀(first\ | last) | |
flatten[Boolean] | 是否将中间各层目录去掉 | ||
rename[Function(dest,src)] | 对生成的目标文件进一步进行处理 |
1 | vim Gruntfile.js |
5.4-5.5 剖析Grunt Tasks-Grunt serve
我,胡汉三,又回来啦! ----《闪闪的红星》
hostname配置项:设置server的hostname(0.0.0.0代表允许外部访问)
Grunt原子插件搜索:https://github.com/search?utf8=%E2%9C%93&Q=GRUNT
注意:参数配置
- 动态注入:
grunt {task}:abc:def:ghi
:动态地在{task}
的注册函数(grunt.registerMultitask
除外)体内的this
对象的flags
对象中创建属性,相当于
1 | module.exports = function (grunt) { |
- 参数访问优先级
以connect:dist:keepalive
为例:
- connect task中的
this.flags.keepalive
options.keepalive
grunt.registerMultitask
:允许配置为多个task配置参数- 相关target的属性
options | 前提 | 用途 |
---|---|---|
server |
只能用于没有设置dest 的target |
用于设置需要进行清理的文件夹的路径 |
1 | $ mkdir grunt-yo-webapp && cd grunt-yo-webapp |
1 | $ cat Gruntfile.js |