基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境

Express 是比较经典的,也是最常用的 Nodejs Web框架。

一、Express 快速构建一个web应用程序或架

1、首先用全局安装 express-generator!

npm install express-generator -g

2、生成项目

express express-gulp

3、执行

运行项目之前,先安装依赖包。在项目根目录下运行:

npm install

安装完成之后,启动服务器:

npm start

4、打开浏览器浏览 http://localhost:3000/ !

基本的应用框架搭好了,但是每次文件修改后,必须在浏览器中刷新(F5),才能看到最新修改后的效果,每次这样的操作,是不是很繁琐呢?如何无刷新监控文件变化呢?这个时候自动化构建工具 grunt、gulp 就派上用场了!这里只讨论 gulp !

二、加入 Gulp 自动化

1、安装 gulp,进入项目目录,执行命令:(Ps:gulp 首先需全局安装一次)

npm install gulp --save-dev

2、安装所需的 gulp 插件

npm install gulp-uglify --save-dev             // js压缩插件
npm install gulp-autoprefixer --save-dev // css3文件前缀
npm install gulp-nodemon --save-dev // 项目自动重启
npm install gulp-rename --save-dev // 重命名
npm install del --save-dev // 文件删除模块
npm install node-sass --save-dev // gulp-sass 依赖于此
npm install gulp-sass --save-dev // 构建编译sass
npm install gulp-sourcemaps -save-dev // sassmaps,生成的css文件下面会加上这个

这里需要注意,在安装 gulp-sass 的时候,需要先安装 node-sass,并且在安装的时候,有可能会安装失败,这个时候,可以用 cnpm 试一下

cnpm node-sass gulp-sass --save-dev

3、安装 browser-sync

npm install browser-sync --save-dev

browser-sync 是重头戏,可以监控文件的变化实现自动刷新,具体的API用法可以参考官方文档!

4、配置gulpfile.js

var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var sass = require('gulp-sass');
var prefix = require('gulp-autoprefixer');
var nodemon = require('gulp-nodemon');
var sourcemaps = require('gulp-sourcemaps');
var jade = require('gulp-jade');
var rename = require('gulp-rename');
var del = require('del');
var uglify = require('gulp-uglify'); // dev task start DONE can not compile the sass or less file
gulp.task('sass', function() {
return gulp
.src(['./sass/*.scss'])
.pipe(sourcemaps.init())
.pipe(sass({
errLogToConsole: true,
outputStyle: 'compact'
}).on('error', sass.logError))
.pipe(prefix('last 2 versions', '> 1%', 'ie8', 'Android 2'))
.pipe(sourcemaps.write())
.pipe(rename({ // Renames the merged CSS file
basename: 'style', // The file name
extname: '.css' // The file extension
}))
.pipe(gulp.dest('./public/stylesheets/'))
.pipe(reload({
stream: true
}));
});
gulp.task('sass-watch', ['sass'], browserSync.reload);
gulp.task('browser-sync', ['nodemon', 'sass'], function() {
browserSync.init(null, {
proxy: 'http://localhost:3000',
files: [
'public/**/*.*', 'views/**/*.*', 'routes/*.*', 'sass/*.*'
],
browser: 'chrome',
notify: false,
port: 5000
});
gulp.watch('sass/*.scss', ['sass-watch']);
}); gulp.task('js', function() {
return gulp.src(['routes/*.js'])
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
}); gulp.task('nodemon', function(cb) {
var called = false;
return nodemon({
script: 'bin/www'
}).on('start', function() {
if (!called) {
cb();
called = true;
}
});
}); gulp.task('clean', function(cb) {
del(['./dist'], cb)
}); //build task start DONE add build task
gulp.task('jade', function() {
return gulp
.src(['views/**/*.jade', '!views/layout/**/*.jade', '!views/includes/**/*.jade'])
.pipe(jade({
pretty: true
}))
.pipe(gulp.dest('./dist/views'));
}); gulp.task('dist', ['jade', 'js']);
gulp.task('default', ['browser-sync']);

5、运行

gulp

运行完命令,会自动打开浏览器,大功告成!

Ps:以上的 gulp 插件,可以根据自己需求自己配置!

Github:https://github.com/jonechen1127/Express-Gulp

基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境的更多相关文章

  1. 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  2. 基于gulp编写的一个简单实用的前端开发环境

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  3. 【前端福利】用grunt搭建自己主动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发者.假设你如今还不知道grunt或者听说过. ...

  4. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  5. 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...

  6. 转:【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

    原文地址:http://blog.csdn.net/wangfupeng1988/article/details/46418203 jQuery在使用grunt,bootstrap在使用grunt,百 ...

  7. 用grunt搭建自动化的web前端开发环境-完整教程

    原稿:http://www.cnblogs.com/wangfupeng1988/p/4561993.html#!comments jQuery在使用grunt,bootstrap在使用grunt,百 ...

  8. 用grunt搭建自动化的web前端开发环境

    用grunt搭建自动化的web前端开发环境 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发 ...

  9. Grunt搭建自动化web前端开发环境--完整流程

    Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...

随机推荐

  1. 读我是一只IT小小鸟有感

    进入大学半年了,每个人都说软件工程是一个非常有前途的高薪职业,但我这半年来都很迷茫,看不清自己的未来,不知道如何度过接下来的三年半时光,虽然我也认为软件工程是有前途的专业,但是经过一学期的学习,发现不 ...

  2. [Oracle收费标准]

    http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf 1: 数据库 2. 中间件 3. weblogi ...

  3. php缩略图

    /*引入文件Easyphpthumbnail.class.php 引用地址:http://www.itdaodan.com/article-detail-id-252.html */   class ...

  4. 【C++】new和delete表达式与内存管理

    new和delete表达式可以用来动态创建和释放单个对象,也可以用来动态创建和释放动态数组. 定义变量时,必须指定其数据类型和名字.而动态创建对象时,只需指定其数据类型,而不必为该对象命名.new表达 ...

  5. python之enumerate()学习

    X = 'abcdefghijklmn' for (index,char) in enumerate(X): print (index, char) 利用enumerate()函数,可以在每次循环中同 ...

  6. fiddler启动报错Unable to bind to port [8888],ErrorCode:10106

    启动运行fiddler 报错,提示Unable to bind to port [8888],ErrorCode:10106 解决方式: 使用Fiddler或其他类似的监听工具出现这种错误时, Una ...

  7. es6中对象转数组,转map

    //对象转数组let array = Object.keys(userPermission).map(key=> userPermission[key]) console.log(array) ...

  8. 【bzoj5123】[Lydsy12月赛]线段树的匹配 树形dp+记忆化搜索

    题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根 ...

  9. bug:margin塌陷

    margin塌陷:两个嵌套的div,内部div的margin-top失效,内部对于外部的div并没有产生一个margin值,而是外部的div相对于上面的div产生了一个margin值. 弥补方法: 1 ...

  10. QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

    QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->ad ...