使用Gulp构建Angularjs应用的缘由

2016在前端已经大热的今年也决定跟上时代的步伐进入前端自动化的行列,刚好公司框架采用的是angularjs,css采用的是scss预编译语言,所谓做事三思而后行:可不可以不做? 可不可以明天做?可不可以给别人做?因此在众多自动化工具中选择了gulp,其中还有看重他的轻量级和众多的插件的原因。

初始化Gulp

首先需要安装node,然后生成package.json:npm init
安装gulp:npm install gulp --save-dev 将gulp的包依赖加入到package.json中。
然后再是gulp的插件:
gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename。

gulpfile.js:var gulp = require('gulp');
//引入gulp组件
//js语法检查
var jshint = require('gulp-jshint');
//sass预处理
var sass = require('gulp-sass');
//文件合并
var concat = require('gulp-concat');
//js压缩
var uglify = require('gulp-uglify');
//重命名
var rename = require('gulp-rename');

目录结构划分

然后是我们的目录结构划分,之前是想按照项目模块来划分,就好比登陆的模块就是login的文件夹下面是他的html文件和css文件。但之后考虑到因为是三级分销加商城的系统项目模块比较多还是选择按功能来划分如下图:

gulpfile任务配置

先添加gulp的相关依赖:

var gulp = require('gulp');
//引入gulp组件
//js语法检查
var jshint = require('gulp-jshint');
//sass预处理
var sass = require('gulp-sass');
//文件合并
var concat = require('gulp-concat');
//js压缩
var uglify = require('gulp-uglify');
//重命名
var rename = require('gulp-rename');
//server服务
browserSync = require('browser-sync').create();

值得注意的是 browserSync 号称前端页面调试神器:
Browsersync能让浏览器实时、快速响应您的文件更改(html、js、css、sass、less等)并自动刷新页面。更重要的是 Browsersync可以同时在PC、平板、手机等设备下进项调试。

因为是angularjs项目当然需要angularjs的包和ui-router的路由(ui-router对于路由的处理相对于ng-router还是强大太多,不过也看个人习惯是使用ui-router还是ng-router),项目中因为npm现在的包管理也还不错所以我也就没使用bower,这个也是看个人习惯吧。这里手动加入项目依赖的两个包,然后创建任务做代码的合并和压缩处理。

var jsFiles = ['./node_modules/angular/angular.js','./node_modules/angular-ui-router/release/angular-ui-router.js'
];//合并、压缩来自npm的js资源文件
gulp.task('npmscripts', function() {return gulp.src(jsFiles).pipe(concat('npm.js')).pipe(gulp.dest('./dist/js')).pipe(rename('npm.min.js')).pipe(uglify()).pipe(gulp.dest('./dist/js'));
})

下面则是对于生产环境编写的js和css的处理:

//检查脚本
gulp.task('lint', function() {gulp.src('./app/**/*.js').pipe(jshint()).pipe(jshint.reporter('default'));})//编译Sass
gulp.task('sass', function() {console.log('sass!');gulp.src('./app/style/*.scss').pipe(sass()).pipe(gulp.dest('./app/style'));gulp.src('./app/style/*.css').pipe(concat('style.css')).pipe(gulp.dest('./dist/css'))
})//合并、压缩js文件
gulp.task('scripts', function() {gulp.src('./app/**/*.js').pipe(concat('all.js')).pipe(gulp.dest('./dist/js')).pipe(rename('all.min.js')).pipe(uglify()).pipe(gulp.dest('./dist/js'));
});

启动browserSync服务

//使用connect启动一个Web服务器
gulp.task('browserSync', function () {browserSync.init({server: {baseDir: "./app/"}});
});

配置gulp默认任务

//默认任务
gulp.task('default', function() {gulp.run('npmscripts');//初始化browserSync
browserSync.init({server: {baseDir: "./"}});//监听js变化,如过发生变化则执行lint和scripts两个task
gulp.watch('./app/**/*.js', ['lint', 'scripts']);//监听js变化,如过发生变化则执行sass task
gulp.watch('./app/style/**/*.scss', ['sass']);//监听当app文件夹下任何文件发生变化,则自动刷新浏览器
gulp.watch('./app/**', function() {console.log('reload');browserSync.reload();});
})

配置Angularjs

配置路由

app.routes.js(function() {'use strict';angular.module('app', ['ui-router']).config(config);function config ($stateProvider, $urlRouterProvider) {$urlRouterProvider.otherwise('/index');$stateProvider.state('/index', {url: "/index",templateUrl: "views/index.html"})}
})()

配置首页

index.html
<!DOCTYPE html>
<html ng-app="app"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" /><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /><title></title><link rel="stylesheet" href="../dist/css/style.css" charset="utf-8"><script src="../dist/js/npm.js"></script><script src="../dist/js/all.js"></script></head><body><div ui-view class="Index"></div></body>
</html>

在引用css和js的时候就可以直接引用在dest目录下合并了的文件了。
运行gulp,构建成功!并且修改代码浏览器内容自动刷新,更加方便了移动端的调试。

下面贴一个完整的gulpfile.js

var gulp = require('gulp');
//引入gulp组件
//js语法检查
var jshint = require('gulp-jshint');
//sass预处理
var sass = require('gulp-sass');
//文件合并
var concat = require('gulp-concat');
//js压缩
var uglify = require('gulp-uglify');
//重命名
var rename = require('gulp-rename');
//server服务
browserSync = require('browser-sync').create();var jsFiles = ['./node_modules/angular/angular.js','./node_modules/angular-ui-router/release/angular-ui-router.js'
];//检查脚本
gulp.task('lint', function() {gulp.src('./app/**/*.js').pipe(jshint()).pipe(jshint.reporter('default'));})//编译Sass
gulp.task('sass', function() {console.log('sass!');gulp.src('./app/style/*.scss').pipe(sass()).pipe(gulp.dest('./app/style'));gulp.src('./app/style/*.css').pipe(concat('style.css')).pipe(gulp.dest('./dist/css'))
})//合并、压缩js文件
gulp.task('scripts', function() {gulp.src('./app/**/*.js').pipe(concat('all.js')).pipe(gulp.dest('./dist/js')).pipe(rename('all.min.js')).pipe(uglify()).pipe(gulp.dest('./dist/js'));
});
//合并、压缩来自npm的js资源文件
gulp.task('npmscripts', function() {return gulp.src(jsFiles).pipe(concat('npm.js')).pipe(gulp.dest('./dist/js')).pipe(rename('npm.min.js')).pipe(uglify()).pipe(gulp.dest('./dist/js'));
})//合并、压缩css文件
// gulp.task('css', function() {
//   gulp.src('./app/style/*.css')
//     .pipe(concat('style.css'))
//     .pipe(gulp.dest('./dist/css'))
//     // .pipe(rename('style.min.css'))
//     // .pipe(uglify())
//     // .pipe(gulp.dest('./dist/css'));
// });//使用connect启动一个Web服务器
gulp.task('browserSync', function () {browserSync.init({server: {baseDir: "./app/"}});
});//默认任务
gulp.task('default', function() {gulp.run('npmscripts');//监听js变化
browserSync.init({server: {baseDir: "./"}});gulp.watch('./app/**/*.js', ['lint', 'scripts']);gulp.watch('./app/style/**/*.scss', ['sass']);// gulp.watch('./app/style/**/*.css', ['css'])gulp.watch('./app/**', function() {console.log('reload');browserSync.reload();});})

Gulp构建Angularjs应用相关推荐

  1. 用gulp构建你的前端项目

    前言 前端技术发展日新月异,随着模块化.组件化的提出,前端变得越来越复杂,静态资源越来越多,那么对静态资源的处理,如压缩,合并,去掉调试信息.. 如果还是人工去处理,效率非常之低且还容易出错,于是自动 ...

  2. Gulp构建前端自动化工作流

    ## Gulp构建前端自动化工作流 ### Gulp构建前端自动化工作流之:常用插件介绍及使用 在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: ...

  3. 使用gulp构建前端(三)

    为什么80%的码农都做不了架构师?>>>    使用gulp构建前端(三) 紧接着上述文章内容,开始新的插件的使用   插件三    gulp-clean-css,作用减小文件大小, ...

  4. (36)Gulp 构建资源(图片)文件

    一.Gulp 构建资源(图片)文件概述 所谓Gulp 构建资源(图片)文件就是将图片占用大小压缩后变小.其实我们Gulp构建资源文件不只是单独只图片,还有其他的比如说字体文件,也是资源文件.这里我们拿 ...

  5. (35)Gulp 构建任务组合

    一.Gulp构建任务组合 就是前面我们学习的Gulp构建样式文件,构建脚本文件,构建HTML页面文件,每构建一种文件都需要敲写一条命令,那么这样的话,我们就需要写3个命令执行,是不是还是觉得有些麻烦? ...

  6. (34)Gulp 构建HTML页面文件

    一.Gulp 构建HTML页面文件概述 我们的HTML文件将来再做大型项目时,文件HTML结构代码也是很多的,上传到服务器上线时也是有缓慢压力和内存占用较大的情况的,所以我们为了解决该问题,还需要对H ...

  7. (33)Gulp构建脚本文件

    一.构建脚本文件流程图 构建脚本文件和我们构建样式文件是一样的,也是将源代码进行编译,编译以后压缩,然后重命名,最终成为目标文件. 这里脚本文件压缩是将ES6语法转换成ES5语法,比如说箭头函数,它在 ...

  8. (31)Gulp 构建样式文件

    一.Gulp构建样式文件流程图 Gulp构建样式文件和我们之前想要实现的效果和流程差不多,我们通过源代码,这里拿less文件举例,第一步那么我们通过less文件先将文件进行转换,转换成浏览器认识的cs ...

  9. gulp构建项目(三):gulp-watch监听文件改变、新增、删除

    一.gulp.watch()功能介绍 举例说明:当'./src/*.html'发生变化时,执行'html'任务,同时刷新浏览器.如下: gulp.task('watch', function(){gu ...

最新文章

  1. Android中如何使用命令行查看内嵌数据库SQLite3
  2. 操作系统(十六)调度算法(一)
  3. boost::geometry::convert用法的测试程序
  4. lucene4.7 高亮功能(八)
  5. eslint 保存自动格式化_ESLint一款可组装的JavaScript和JSX检查工具
  6. 点石关键词排名优化软件_福建关键词优化软件有哪些
  7. 惋惜!42 岁安全研究员、DNS 漏洞发现者去世
  8. python修改csv文件字段顺序_Pandas中DataFrame交换列顺序的方法实现
  9. 访问量中 pv uv ip的区别
  10. php 去除 ufeff,PHP去掉诡异的BOM \ufeff
  11. Android控件介绍及用法
  12. 【Spring学习03】Spring简单入门实例
  13. LocalSolver快速入门指南(连载四十一) -车辆路径调度问题建模指导
  14. 闰年c语言循环计算方法,C语言计算有多少闰年(答案原创)
  15. VMware ESXi 与ESX 产品之比较
  16. java 解析GZIP 和 Deflate 网页源文件
  17. 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案
  18. 芯海科技2022数字芯片笔试题
  19. 磁力机航向角计算与补偿
  20. python翻译成中文_Python调用有道智云文本翻译API接口实现“智能”伪原创

热门文章

  1. 百度SEO站群织梦响应式博客资讯网模板
  2. 如何腾出计算机内存,教你如何正确腾出手机内存,尤其是生活在易门的你,必学!...
  3. 判断设置两天后时间,时间戳
  4. 1539. 第 k 个缺失的正整数
  5. 魅思V20全新正规视频系统源码
  6. 短网址缩短和还原综合源码
  7. Swift中文教程(十一) 方法
  8. Swift中文教程(二)基本运算符
  9. 采用curl库在PHP程序之间传递数组
  10. 1 echo();2 print();3 die();4 printf();5 sprintf();6 print_r();7 var_dump(); 区别