[gulp入门]gulp-connect浏览器自动刷新

  LiveReload可以理解为即时刷新,在前端开发中,开发者在编写或调试html/js/css代码后需要从编辑器切换到浏览器,再刷新浏览器才能看到页面变化,这种频繁的操作在一定程度上影响了工作效率,而LiveReload可以帮助我们解决了这个问题。

  实现原理:通过在本地开启一个websocket服务,检测文件变化,当文件被修改后触发livereload任务,推送消息给浏览器刷新页面。

  安装gulp-connect插件

  npm install gulp-connect

  配置代码🌰: 

 1 //定义依赖和插件
 2 var gulp = require('gulp'),
 3     uglify = require('gulp-uglify'),
 4     concat = require('gulp-concat'),
 5     rename = require('gulp-rename'),
 6     connect = require('gulp-connect');//livereload
 7    
 8 var jsSrc = 'src/js/*.js';
 9 var jsDist = 'dist/js';
10 
11 var htmlSrc = 'src/*.html';
12 var htmlDist = 'dist';
13 
14 //定义名为js的任务
15 gulp.task('js', function () {
16 
17     gulp.src(jsSrc)
18         .pipe(concat('main.js'))
19         .pipe(gulp.dest(jsDist))
20         .pipe(rename({suffix: '.min'}))
21         .pipe(uglify())
22         .pipe(gulp.dest(jsDist))
23         .pipe(connect.reload())
24 
25 });
26 
27 //定义html任务
28 gulp.task('html', function () {
29 
30     gulp.src(htmlSrc)
31         .pipe(gulp.dest(htmlDist))
32         .pipe(connect.reload());
33 
34 });
35 
36 //定义livereload任务
37 gulp.task('connect', function () {
38     connect.server({
39         livereload: true
40     });
41 });
42 
43 
44 //定义看守任务
45 gulp.task('watch', function () {
46 
47     gulp.watch('src/*.html', ['html']);
48 
49     gulp.watch('src/js/*.js', ['js']);
50 
51 });
52 
53 
54 //定义默认任务
55 gulp.task('default', [ 'js', 'html','watch', 'connect']);

 

  展示一下配置后的效果:

1.gulp启动任务后,可以看到终端显示在8080端口开启了一个http服务,而在35729端口开启了LiveReload服务,实际为一个WebSocket服务。

2. 打开页面,可以看到原始页面中插入了livereload的js文件。

3.在network中WS下可以看到WebSocket的消息。

4.当编辑代码发生变化时(Ctrl+S保存后),浏览器会收到消息,触发F5刷新页面的操作。

  

posted @ 2016-03-23 14:45  anywing  阅读(16535)  评论(2编辑  收藏  举报