Angular企业级开发(6)-使用Gulp构建和打包前端项目

1.gulp介绍
基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中。使用gulp能完成以下任务:
- 压缩html、css和js
- 编译less或sass等
- 压缩图片
- 启动本地静态服务器
- 其他
2.gulp构建
前端构建流程:
开发->分析->测试->编译->发布部署
一段简单的基于gulp的项目构建代码,gulpfile.js内容如下所示:
gulp.task('default',function(){
return gulp
.src("**/*.js")
.pipe(jshint())
.pipe(concat())
.pipe(uglify())
.pipe(gulp.dest('./build/'))
})
上面gulp配置完成的内容是:
1.将目录下所有的以.js结尾的文件
2.执行jshint代码检查
3.然后concat合并为一个文件,
4.再使用uglify对文件进行压缩,
5.最后输出到当前目录下,build文件夹中。
项目构建中需要使用的模块有以下这些:
var gulp = require("gulp");
//connect静态服务器
var connect = require("gulp-connect");
// 合并文件模块
var concat = require('gulp-concat');
//less编译模块
var less = require('gulp-less');
//压缩js
var uglify = require('gulp-uglify');
//压缩css
var minifyCss = require('gulp-minify-css');
//压缩html
var minifyHtml = require('gulp-minify-html');
//项目中需要将.less文件重命名为.css
var rename = require('gulp-rename');
//jshint检查js静态语法检查
var jshint = require('gulp-jshint');
3.gulp打包
因为项目中使用bower进行类库的管理,所以在项目打包的过程,需要从bower_components文件夹中就项目实际使用的js和css文件复制发布文件夹中。在gulpfile.js中有一个task名为vendor,主要任务就是将项目中实际使用的js和css复制到发布文件夹中。我们项目发布文件夹名字为dist。task代码如下:
gulp.task('vendor', function () {
gulp.src([
'app/assets/bower_components/ui-select/dist/select.min.css',
'app/assets/bower_components/toastr/toastr.min.css',
'app/assets/bower_components/angular-tour/dist/angular-tour.css',
'app/assets/bower_components/jquery/jquery.min.js',
'app/assets/bower_components/angular/angular.min.js',
'app/assets/bower_components/angular-cookies/angular-cookies.min.js',
'app/assets/bower_components/angular-messages/angular-messages.min.js',
'app/assets/bower_components/angular-animate/angular-animate.min.js ',
'app/assets/bower_components/bootstrap/dist/js/bootstrap.min.js',
'app/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js',
'app/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js',
'app/assets/bower_components/angular-sanitize/angular-sanitize.min.js',
'app/assets/bower_components/ui-select/dist/select.js',
'app/assets/bower_components/oclazyload/dist/oclazyload.min.js',
'app/assets/bower_components/angular-smart-table/dist/smart-table.min.js',
'app/assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js',
'app/assets/bower_components/echarts/dist/echarts.min.js',
'app/assets/bower_components/angular-tour/dist/angular-tour-tpls.js',
'app/assets/bower_components/toastr/toastr.min.js'
], { base: 'app' })
.pipe(gulp.dest("dist"));
});
开发的源代码 vs 发布的代码文件文件大小对比


4.参考内容
Angular企业级开发(6)-使用Gulp构建和打包前端项目的更多相关文章
- 用gulp构建你的前端项目
前言 前端技术发展日新月异,随着模块化.组件化的提出,前端变得越来越复杂,静态资源越来越多,那么对静态资源的处理,如压缩,合并,去掉调试信息.. 如果还是人工去处理,效率非常之低且还容易出错,于是自动 ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Angular企业级开发(2)-搭建Angular开发环境
1.集成开发环境 个人或团队开发AngularJS项目时,有很多JavaScript编辑器可以选择.使用优秀的集成开发环境(Integrated Development Environment)能节省 ...
- gulp + webpack 构建多页面前端项目
修改增加了demo地址 gulp-webpack-demo 之前在使用gulp和webpack对项目进行构建的时候遇到了一些问题,最终算是搭建了一套比较完整的解决方案,接下来这篇文章以一个实际项目为例 ...
- Angular企业级开发-AngularJS1.x学习路径
博客目录 有链接的表明已经完成了,其他的正在建设中. 1.AngularJS简介 2.搭建Angular开发环境 3.Angular MVC实现 4.[Angular项目目录结构] 5.[SPA介绍] ...
- Angular企业级开发(7)-MVC之控制器
1.MVC中的控制器 AngularJS的控制器主要为了把模型和视图连接在一起.大多数业务逻辑操作都会放在视图对应的控制器中.当然如果我们能够把业务逻辑放到后端的REST服务中,就可以开发轻量级Ang ...
- Angular企业级开发(4)-ngResource和REST介绍
一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ...
- Angular企业级开发(3)-Angular MVC实现
1.MVC介绍 Model-View-Controller 在20世纪80年代为程序语言Smalltalk发明的一种软件架构.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并 ...
- Angular企业级开发(1)-AngularJS简介
AngularJS介绍 AngularJS是一个功能完善的JavaScript前端框架,同时是基于MVC(Model-View-Controller理念的框架,使用它能够高效的开发桌面web app和 ...
随机推荐
- 数据降维技术(2)—奇异值分解(SVD)
上一篇文章讲了PCA的数据原理,明白了PCA主要的思想及使用PCA做数据降维的步骤,本文我们详细探讨下另一种数据降维技术—奇异值分解(SVD). 在介绍奇异值分解前,先谈谈这个比较奇怪的名字:奇异值分 ...
- 将Web项目访问的URL项目名设置为"/"
工具:Eclipse 步骤: 1.鼠标右键项目名--->properties--->Web Project Setting--->Context root. 将Context roo ...
- javascript 巴西世界杯倒计时
巴西世界杯是足球迷的今年最终关注的事情,做为球迷的我也不例外,自己做了一个巴西世界杯的倒计时. <!DOCTYPE html> <html> <head> < ...
- android 点滴记录
1.AndroidM环境下,在framework层添加代码会对jar包的package name进行检查,并提示”unknown package name of class file”怎么解决? 产生 ...
- FZU 2091 播放器
简单模拟题,开个栈维护一下即可. #include<cstdio> #include<cstring> #include<cmath> #include<st ...
- with补充知识点
import threading,queue,time import contextlib @contextlib.contextmanager def fun(list_1,val): list_1 ...
- address2line 定位 Android c++奔溃位置
Android调用c++出现奔溃,崩溃信息为如下: 10-11 15:15:13.541 D/AudioMTKStreamOut( 139): write(), buffer = 0x42bd9390 ...
- PHP+AJAX 地区三级联动代码
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- SqlParameter 使用
SqlParameter[] param = new SqlParameter[] { new SqlParameter ...
- Bmob 之 列表查询
查询列表,返回前20个数据: //创建BmobQuery实例,指定对应要操作的数据表名称 BmobQuery *query = [BmobQuery queryWithClassName:classN ...