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刷新頁面的操作。

