详解Grunt插件之LiveReload实现页面自动刷新(两种方案)


Posted in PHP onJuly 31, 2015

方案一:grunt-livereload + Chrome Plug-in

优点:安装、配置简单方便。
缺点:需要配合指定的浏览器插件(Firefox也有相关插件,IE么你懂的)。

1. 需要安装2个插接件:grunt-contrib-watch、connect-livereload

执行命令:

npm install --save-dev grunt-contrib-watch connect-livereload

2. 安装浏览器插件:Chrome LiveReload

3. 配置一个Web服务器(IIS/Apache),LiveReload需要在本地服务器环境下运行(对file:///文件路径支持并不是很好)。

4. 修改Gruntfile.js文件:

module.exports = function(grunt) {
 // 项目配置(任务配置)
 grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),
  watch: {
   client: {
    files: ['*.html', 'css/*', 'js/*', 'images/**/*'],
    options: {
     livereload: true
    }
   }
  }
 });
 // 加载插件
 grunt.loadNpmTasks('grunt-contrib-watch');
 // 自定义任务
 grunt.registerTask('live', ['watch']);
};

5. 执行:grunt live

看到如下提示,说明已经开始监听任务:

Running "watch" task

Waiting...

6. 打开我们的页面,例如:http://localhost/

7. 再点击Chrome LiveReload插件的ICON,此时ICON圆圈中心的小圆点变成实心的,说明插件执行成功。此时你改下网站文件看看,是不是实时更新了?

方案二:grunt-contrib-watch + grunt-contrib-connect + grunt-livereload

优点:自动搭建静态文件服务器,不需在自己电脑上搭建Web服务器。

 不需要浏览器插件的支持(不现定于某个浏览器)。

不需要给网页手动添加livereload.js。
缺点:对于刚接触的人,配置略显复杂。

1. 安装我们所需要的3个插件:grunt-contrib-watch、grunt-contrib-connect、connect-livereload

执行命令:

npm install --save-dev grunt-contrib-watch grunt-contrib-connect connect-livereload

2. 修改Gruntfile.js文件:

module.exports = function(grunt) {
 // LiveReload的默认端口号,你也可以改成你想要的端口号
 var lrPort = 35729;
 // 使用connect-livereload模块,生成一个与LiveReload脚本
 // <script src="http://127.0.0.1:35729/livereload.js?snipver=1" type="text/javascript"></script>
 var lrSnippet = require('connect-livereload')({ port: lrPort });
 // 使用 middleware(中间件),就必须关闭 LiveReload 的浏览器插件
 var lrMiddleware = function(connect, options) {
  return [
   // 把脚本,注入到静态文件中
   lrSnippet,
   // 静态文件服务器的路径
   connect.static(options.base[0]),
   // 启用目录浏览(相当于IIS中的目录浏览)
   connect.directory(options.base[0])
  ];
 };
 // 项目配置(任务配置)
 grunt.initConfig({
  // 读取我们的项目配置并存储到pkg属性中
  pkg: grunt.file.readJSON('package.json'),
  // 通过connect任务,创建一个静态服务器
  connect: {
   options: {
    // 服务器端口号
    port: 8000,
    // 服务器地址(可以使用主机名localhost,也能使用IP)
    hostname: 'localhost',
    // 物理路径(默认为. 即根目录) 注:使用'.'或'..'为路径的时,可能会返回403 Forbidden. 此时将该值改为相对路径 如:/grunt/reloard。
    base: '.'
   },
   livereload: {
    options: {
     // 通过LiveReload脚本,让页面重新加载。
     middleware: lrMiddleware
    }
   }
  },
  // 通过watch任务,来监听文件是否有更改
  watch: {
   client: {
    // 我们不需要配置额外的任务,watch任务已经内建LiveReload浏览器刷新的代码片段。
    options: {
     livereload: lrPort
    },
    // '**' 表示包含所有的子目录
    // '*' 表示包含所有的文件
    files: ['*.html', 'css/*', 'js/*', 'images/**/*']
   }
  }
 }); // grunt.initConfig配置完毕
 // 加载插件
 grunt.loadNpmTasks('grunt-contrib-connect');
 grunt.loadNpmTasks('grunt-contrib-watch');
 // 自定义任务
 grunt.registerTask('live', ['connect', 'watch']);
};

5. 执行:grunt live

看到如下提示,说明Web服务器搭建完成,并且开始监听任务:

Running "connect:livereload" (connect) task

Started connect web server on 127.0.0.1:8000.
Running "watch" task

Waiting...

注:执行该命令前,如果你有安装过LiveReload的浏览器插件,必须关闭。

6. 打开我们的页面,例如:http://localhost:8000/http://127.0.0.1:8000/
注:这里所打开的本地服务器地址,是我们刚才通过connect所搭建的静态文件服务器地址,而不是之前你用IIS或Apache自己搭建Web服务器地址。

以上就是本文详解Grunt插件之LiveReload实现页面自动刷新(两种方案),希望大家喜欢。

PHP 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
如何在PHP中使用Oracle数据库(5)
Oct 09 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
php删除左端与右端空格的方法
Nov 29 PHP
php获取网页上所有链接的方法
Apr 03 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
PHP中filter函数校验数据的方法详解
Jul 31 #PHP
PHP代码实现爬虫记录――超管用
Jul 31 #PHP
PHP 前加at符合@的作用解析
Jul 31 #PHP
PHP查看当前变量类型的方法
Jul 31 #PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 #PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 #PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 #PHP
You might like
网络资源
2006/10/09 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
angularjs自定义过滤器demo示例
2019/08/24 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
中秋晚会策划方案
2014/06/12 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
出纳岗位职责
2015/01/31 职场文书
地心历险记观后感
2015/06/15 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫