基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境
基于 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 搭建一套高性能的前端开发环境的更多相关文章
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 基于gulp编写的一个简单实用的前端开发环境
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 【前端福利】用grunt搭建自己主动化的web前端开发环境-完整教程
jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发者.假设你如今还不知道grunt或者听说过. ...
- 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...
- 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程
jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...
- 转:【前端福利】用grunt搭建自动化的web前端开发环境-完整教程
原文地址:http://blog.csdn.net/wangfupeng1988/article/details/46418203 jQuery在使用grunt,bootstrap在使用grunt,百 ...
- 用grunt搭建自动化的web前端开发环境-完整教程
原稿:http://www.cnblogs.com/wangfupeng1988/p/4561993.html#!comments jQuery在使用grunt,bootstrap在使用grunt,百 ...
- 用grunt搭建自动化的web前端开发环境
用grunt搭建自动化的web前端开发环境 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发 ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
随机推荐
- vim 末行模式简单练习
练习 1 . 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符 :%s#^[[:space:]]\+##g ...
- 团队项目-BUG排查-ADT工程 To Android Studio 一整天的排查日记
4-22 10:44至4-23 0:45 ①打开Eclipse从Github上Clone MathsApp到本机,报错'Unable to resolve target'android-19' ②尝试 ...
- QMap使用
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QMap使用 本文地址:https://www.techieliang.com/201 ...
- 软工实践团队展示——WorldElite
软工实践团队展示--WorldElite 本次作业链接 团队成员 031602636许舒玲(组长) 031602237吴杰婷 031602634吴志鸿 081600107傅滨 031602220雷博浩 ...
- js获取窗口滚动条高度、窗口可视范围高度、文档实际内容高度、滚动条离浏览器底部的高度
1.获取窗口可视范围的高度 //获取窗口可视范围的高度 function getClientHeight(){ var clientHeight=0; if(document.body.clientH ...
- C语言 aabbcc、abc、fabc、aabc
输入一个字符串,匹配字符串中连续出现的字符串.并且连续个数相等 如输入 aabbcc.abc.fabc.aabc.aabbc 分别输出yes还是no #include<stdio.h>#i ...
- [LeetCode] [LeetCode] Populating Next Right Pointers in Each Node II
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- postman 断言学习
请求 url :https://www.v2ex.com/api/nodes/show.json?name=python get请求 postman发起请求并做断言 断言: tests["B ...
- 卸载iptables 小心了!!怎么关闭和卸载iptables
千万千万不要使用下面的命令卸载iptables yum remove iptables 这样操作会卸载掉很多系统必要的组件,那就开不了机了,链接不上了.切记切记. 如果想永远停用,使用以下命令即可: ...
- hadoop和spark搭建记录
因玩票需要,使用三台搭建spark(192.168.1.10,192.168.1.11,192.168.1.12),又因spark构建在hadoop之上,那么就需要先搭建hadoop.历经一个两个下午 ...