基于 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前 ...
随机推荐
- OA--对于每个form表单(<s:iterator>生成)的处理
由于是后台传过来的,我们不知道form 有几个 也不能指定form的id和name,(其实也可以就是可能会冲突我们还是用下面讲的方法把) 之前有想过 对于每个form 里面都有一些参数,举个例子 项目 ...
- java沙盒入门(2)
Java在Internet上的应用已经日渐普遍,使用在网页上的Java程序称之为applet,利用Applet的嵌入能够使原本静态的HTML富有变化,并且能够做到"声"." ...
- 【Linux 命令】- tar 命令
语法 tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Sc ...
- vue-cli3使用cdn方式引入moment.js
1. index.html引入: <script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js"&g ...
- 我们为什么要使用Spring Cloud?
我们为什么要使用Spring Cloud? 两个需要好好看看: Spring Boot Spring Clude Spring Cloud是一个集成了众多开源的框架,利用Spring Boot的开发便 ...
- 第184天:js创建对象的几种方式总结
面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象简单 ...
- 【JavaScript】jsp表格页面记录
页面效果如下: jsp代码如下(里面引入了很多其他js文件,很多方法调用来自其他js): <%@ page language="java" contentType=" ...
- (转)rabbitmq的web管理界面无法使用guest用户登录
转至http://www.cnblogs.com/mingaixin/p/4134920.html 安装最新版本的rabbitmq(3.3.1),并启用management plugin后,使用默认的 ...
- MySQL配置文件简单解析
[mysqld] basedir = /data/mysql datadir = /data/mysqldata tmpdir = /data/mysqltmpdata //mysql的查询临时目录, ...
- CPP 替代 PIL 图片处理(缩略图生成)
python中使用PIL(Pyhton Image Library)进行图片处理,好处就是编写简单方便,但是不能很好利用机器多核的特点,于是在项目中决定使用cpp来实现图片处理. 项目中的图片处理主要 ...