详解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 相关文章推荐
我的论坛源代码(九)
Oct 09 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP curl使用实例
Jul 02 PHP
PHP加密解密函数详解
Oct 28 PHP
PHP错误机制知识汇总
Mar 24 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 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
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
Python实现登陆文件验证方法
2018/10/06 Python
基于python3的socket聊天编程
2020/02/17 Python
结束运行python的方法
2020/06/16 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
荷兰超市:DEEN
2018/03/14 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
给朋友的道歉信
2014/01/09 职场文书
婚假请假条怎么写
2014/04/10 职场文书
农村文化活动总结
2014/08/28 职场文书
股指期货心得体会
2014/09/10 职场文书
总账会计岗位职责
2015/04/02 职场文书
工程催款通知书
2015/04/17 职场文书
python 提取html文本的方法
2021/05/20 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python