grunt自动刷新liveload

前端构建实践03:用 livereload 即时查看前端更改 介绍了一个能自动监视源文件的改变并自动刷新浏览器实现实时预览效果的Grunt插件。 阅读详情

需要的grunt插件

  • grunt-contrib-watch
  • grunt-contrib-connect
  • connect-livereload
  • serve-static
  • serve-index
  • connect

优点:
* 自动搭建静态文件服务器,不需在自己电脑上搭建Web服务器。
* 不需要浏览器插件的支持(不现定于某个浏览器)。
* 不需要给网页手动添加livereload.js。
缺点:
* 对于刚接触的人,配置略显复杂。

1.grunt-contrib-connect

作用:启动连接的Web服务器,是主要插件

2.connect-livereload

作用:页面自动刷新
使用connect-livereload模块,生成一个与LiveReload脚本(connect-livereload相当于浏览器的liveload插件,这里要用到中间件middleware)
插件会向页面中插入<script src="//localhost:35729/livereload.js?snipver=1" type="text/javascript"></script>
通过LiveReload脚本,让页面重新加载。
使用 middleware(中间件),就必须关闭 LiveReload 的浏览器插件

3.serve-static

作用:创建静态文件服务器
启用静态服务,创建一个新的中间件功能来从给定的根目录中提供文件

4.serve-index

作用:提供列表的页面,启用目录浏览
提供包含给定路径的目录列表的页面(当页面启用静态服务并自动打开浏览器的情况下,会在浏览器中自动展示当前目录下所有文件的列表)

5.connect

作用:粘合各种“中间件”一起来处理请求
连接,Connect是一个简单的框架,可以将各种“中间件”粘合在一起来处理请求,Connect是使用称为中间件的 “插件” 的节点的可扩展HTTP服务器框架。

var app = require('connect');
app.use(' / foo ', function fooMiddleware(req, res, next) {
    //req.url以“/ foo”开头 
    //req是Node.js http请求对象 
    //res是Node.js的http响应对象 
    //next是一个调用来调用下一个中间件的函数 
    next();
})

在服务器中实际使用Connect应用。 该.listen() 方法是启动HTTP服务器的方便( 并且与 您正在运行的Node.js版本中http.Server的listen方法相同)。
var server = app.listen(port);等于var server = http.createServer(app);

6.Gruntfile.js的配置(复制粘贴即可用)

module.exports = function (grunt) {
    var serveStatic = require('serve-static'); //启用静态服务,创建一个新的中间件功能来从给定的根目录中提供文件
    var serveIndex = require('serve-index'); //提供包含给定路径的目录列表的页面(当页面启用静态服务并自动打开浏览器的情况下,会在浏览器中自动展示当前目录下所有文件的列表)
    //var app = require('connect');//连接,Connect是一个简单的框架,可以将各种“中间件”粘合在一起来处理请求,Connect是使用称为中间件的 “插件” 的节点的可扩展HTTP服务器框架。
    //app.use(' / foo ', function fooMiddleware(req, res, next) {
        //  req.url以“/ foo”开头 
        //  req是Node.js http请求对象 
        //  res是Node.js的http响应对象 
        //  next是一个调用来调用下一个中间件的函数 
        //next();
    //})
    //在服务器中实际使用Connect应用。 该.listen() 方法是启动HTTP服务器的方便( 并且与 您正在运行的Node.js版本中http.Server的listen方法相同)。
    //var server = app.listen(port);等于var server = http.createServer(app);

    // 项目配置(任务配置)
    grunt.initConfig({
        // 读取我们的项目配置并存储到pkg属性中
        pkg: grunt.file.readJSON('package.json'),
        // 通过connect任务,创建一个静态服务器

        connect: {
            options: {
                port: 9000,
                livereload: 35729,
                open: true,
                hostname: 'localhost',
                base: './'
            },
            livereload: {
                options: {
                    // 使用connect-livereload模块,生成一个与LiveReload脚本(connect-livereload相当于浏览器的liveload插件,这里要用到中间件middleware)
                    // 插件会向页面中插入<script src="//localhost:35729/livereload.js?snipver=1" type="text/javascript"></script>
                    // 通过LiveReload脚本,让页面重新加载。
                    // 使用 middleware(中间件),就必须关闭 LiveReload 的浏览器插件
                    middleware: function (connect) {
                        return [
                            // 请求connect-livereload中间件,把脚本注入到静态文件中
                            require('connect-livereload')(),
                            // 静态文件服务器的路径,可以是相对于Gruntfile.js所在目录的相对路径
                            serveStatic('./'),
                            serveIndex('./')
                            // 静态文件服务器的路径(老版本)connect.static(options.base[0])
                            // 启用目录浏览(相当于IIS中的目录浏览)(老版本)connect.directory(options.base[0])
                        ];
                    }
                }
            }
        },
        sass: {
            dist: {
                files: {
                    'css/style.css': 'css/style.scss'
                },
                options: {
                    style: 'compact'
                }
            }
        },
        // 通过watch任务,来监听文件是否有更改
        watch: {
            client: {
                // 监听到变化之后从新在页面中写入livereload
                options: {
                    livereload: true
                },
                // '**' 表示包含所有的子目录
                // '*' 表示包含所有的文件
                files: ['*.html', 'css/**/*.scss', 'images/**/*', 'css/*.css'],
                tasks: ['sass', 'connect']
            }
        }
    }); // grunt.initConfig配置完毕

    // 加载插件
    grunt.loadNpmTasks('grunt-contrib-connect');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-sass');

    // 自定义任务
    grunt.registerTask('live', ['connect', 'watch']);
};

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

Running "connect:livereload" (connect) task
Started connect web server on localhost:8000

Running "watch" task
Waiting...

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

注意在网上的好多配置中都是用的老版配置,可能会导错误或页面打不开的情况
grunt-contrib-connect 0.11.x 版本开始,静态文件服务器的创建,需要安装 serve-static 插件支持,否则会出现错误提示“connect.static is not a function Use.” 另外,启用目录浏览,也需要独立安装 serve-index 插件才能支持。

//由于以上配置方式导致在监听文件变动时编译速度有点慢,下面将wach任务分解一下,这样在执行watch任务是不必监听每一项任务,只监听变动的文件,并执行刷新任务
       watch: {
            sass: {
                files: ['css/*.scss'],
                tasks: ['sass'],
                options: {
                    livereload: true
                }
            },
            html: {
                files: ['*.html','teacher/*.html','students/*.html'],
                options: {
                    livereload: true
                }
            },
            image: {
                files: ['images/**/*.{png,jpg,gif}'],
                options: {
                    livereload: true
                }
            },
            css: {
                files: ['css/*.css'],
                options: {
                    livereload: true
                }
            }
        }

7.Grunt常用插件及示例说明

插件作用
load-grunt-tasks使用通配符加载所有任务
time-grunt显示运行任务的执行时间
grunt-contrib-watch文件发生改变运行任务
grunt-contrib-clean清空文件和文件夹
grunt-contrib-copy复制文件和文件夹
grunt-contrib-concat连接、合并文件
grunt-contrib-cssminCSS文件压缩
grunt-contrib-uglifyJS文件压缩
grunt-autoprefixer添加前缀依赖
grunt-contrib-htmlminHTML文件)压缩
grunt-contrib-imagemin图片压缩
grunt-usemin更新文件路径
grunt-svgstore从指定文件夹合并svg
grunt-csscombCSS格式化
grunt-text-replace使用字符串、正则、函数替换内容
grunt-html-buildHTML文件增加js、css、模板引用,移除调试代码
ESP32S3电池电量监测实战:从分压电路到IDF组件配置(附GitHub源码) 本文详细介绍了ESP32S3电池电量监测的完整实战方案。从硬件分压电路的电阻选型、滤波设计,到软件层面利用ESP-IDF的ADC校准机制提升精度,并重点讲解了如何集成bat_monitor开源组件快速实现电压采集、电量计算、充电检测与事件通知。文章提供了从原理到调试的完整指南和GitHub源码,帮助开发者构建稳定可靠的物联网设备电源管理系统。 阅读详情

相关推荐

Power BI实战:从数据清洗到可视化报表的完整流程

本文详细介绍了使用Power BI进行数据分析的完整流程,从数据获取、清洗整理到建模与可视化。通过实战案例,重点讲解了连接MySQL数据库、使用Power Query进行数据清洗、利用DAX创建核心度量值以及设计交互式报表的关键步骤与技巧,帮助用户高效完成从原始数据到专业可视化报表的转化,实现数据驱动决策。

weixin_29070721的博客 397

liveReload在Spring boot 中的使用

为什么80%的码农都做不了架构师?>>> ...

weixin_34138056的博客 307

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

LiveReload配置,安装使用方法~~~前端页面神助手

LiveReload插件安装使用方法

好好大东的博客 1万+

深入解析进化算法中的选择与多样性

在计算科学的世界里,最优雅的解决方案往往源于最古老的智慧——大自然。进化算法(Evolutionary Algorithms, EAs)正是这样一种受达尔文自然选择学说启发的强大工具。它们通过模拟“适者生存”的过程,在庞大的可能性海洋中搜寻最优解。。:指的是深入挖掘和优化已知的优质解。这就像在一片已知的沃土上精耕细作,力求获得最高产量。强大的选择压力会促进这一过程。:指的是在整个搜索空间中寻找全新的、可能更优的解。这好比派遣探险队去发现新大陆,充满了未知与机遇。保持种群的多样性是探索的关键。

weixin_62533513的博客 716

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

【JVM】JMH的使用(一)

介绍 JMH( Java Microbenchmark Harness )是一个用于微测的工具,可以类比成JUNIT,后者用于代码正确性,前者用于代码的性能测试。 开始第一个简单的JMH程序 简单步骤概括: 1.直接打开命令行/console ,通过maven archetype 生成jmh项目 2.然后在项目中编写需要进行微测的方法(可以指定检测输出,循环几次,以及测试数据) 3.maven clean install 打包,然后运行benchmark.jar 第一步,生成JMH项目 //mvn创建命令

Will Of Coding 1241

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程

本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。

weixin_29281941的博客 198

grunt 合并压缩任务

module.exports = function(grunt) { // LiveReload的默认端口号,你也可以改成你想要的端口号 var lrPort = 35729; // 使用connect-livereload模块,生成一个与LiveRel...

180

2024年电气工程师最新面试题及答案

1. **基本电气工程原理**:包括电流、电压、电阻、功率等基本概念。2. **欧姆定律**:V = IR,描述电压、电流和电阻之间的关系。42. **风力发电系统组成**:包括风力涡轮机、发电机、控制系统等。44. **智能电网技术**:包括自动化控制、通信技术、数据分析等。10. **减少EMI**:使用屏蔽、滤波、合理布线等方法。40. **光伏系统组成**:包括光伏板、逆变器、控制器等。48. **能量存储技术**:包括电池、超级电容器、飞轮等。

guo162308的博客 6561

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

Grunt插件之liveReload--前端刷新神器,解放你的F5

昨天看了小胡子哥的一篇文章《工作五年,后面四年重复着第一年的活儿?》,正好是关于前端开发的,我就看了。的确感触很深,作为程序开发者,不应该是编码的机器,不能日复一日做同样的事情,小胡子哥在文章里说:重复的事情要交给机器,作为开发者,我们的任务是告诉机器怎么做就行了。所以开发越到后期,我们应该变得越懒才是好事情,这也是小胡子哥提倡的。在小胡子哥的文章里就提到了一个工具LiveReload,当时一看到这

novenn 814

人形机器人开源资源大盘点(四):硬件开源平台

开源人形机器人平台推动技术民主化 本期聚焦四大开源人形机器人平台:斯坦福的ToddlerBot以6000美元低成本实现30自由度运动,支持仿真到现实的零样本迁移;法国Reachy2被HuggingFace收购,融合开源AI与硬件,适配医疗、工业等场景;国内OriginMan基于ROS2全开源,集成大模型能力,支持深度改造;OAN框架则为经典NAO机器人注入开源活力,扩展交互功能。这些平台通过不同路径降低研发门槛,推动人形机器人技术走向开放共享的未来。

Studying…… 370

网页自动刷新插件LiveReload

网页开发者一个头痛的问题是每次修改完网页之后都要到浏览器里刷新才能看到效果,这样子效率实在是不高。 还好Firefox有一个自动刷新的插件,修改保存后网页就会自动更新了。

穆穆里的专栏 6002

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

livereload(自动刷新)

安装node    1:换镜像(淘宝)原生npm安装太慢了npm install cnpm -g --registry=https://registry.npm.taobao.org 2:检查版本命令 (cnpm-v) 3:安装livereload (--global 表示全局环境安装)(--save-dev 表示局部文件)cnpm install livereload --global 4:执行...

Joan_yang的博客 6177

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

使用 Grunt 实现页面自动刷新

1.这里就不陈述Grunt是什么这些理论了,自行搜索哈,当然要安装的东西还是要先声明一下,首先我们先下载安装NodeJs->Git(下载npm)->npm->Grunt。这里一个过程就不陈述了,自己自行搜索便能安装搭建。 2.假设我们这些都已经安装好了,那么我们就从零开始搭建一个项目来测试一下(完整的目录如下) 我们简要说一下每个文件搭建与内...

weixin_30436101的博客 166

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

grunt livereload nodemon grunt集成自动重启(实例)

1、安装express-generator: 参见http://blog.youkuaiyun.com/weixin_36401046/article/details/52860827 2、在D盘下新建目录grunt-liveredload-demo,打开命令行,进入grunt-liveredload-demo目录, 初始化myapp这个项目目录 > express m...

weixin_34313182的博客 154

Grunt 配置livereload笔记

Grunt 用于构建项目,对于前端开发来说,grunt最好用的两个插件就是watch 和 connect ,使用watch grunt 可以获得项目中文件变化并作出反应,使用connect 可以构建站点,这样就不需要传统服务器支持了,可以用于前端开发,而且connect 有 livereload 插件可以配合watch 使用,实时刷新页面!这样只要文件变化,浏览器就自动刷新页面,就不用F5刷新页面

ch66586953的专栏 1706

grunt-contrib-connect自动刷新html页面

grunt-contrib-connect可以在我们开发的时候自动刷新页面,省去了手动刷新的时间。 下面说一下如何配置grunt-contrib-connect

小红帽的博客 785

Grunt插件之LiveReload 实现页面自动刷新,所见即所得编辑

方案一:简化前端测试的利器 – BrowserSync(推荐) 当你的网页有多个浏览器需要照顾时,编写代码变得举步维艰,而测试也变得不省心了。你需要一个一个挨个打开,刷新…。 现在好了,有BrowserSync这样的利器,无需手动刷新了,全部由 BrowserSync 搞定。 BrowserSync是一个自动化测试辅助工具,可以帮你在网页文件变更时自动载入新的网页。 如何使用 Bro...

weixin_30929295的博客 199

使用grunt实现livereload(实时刷新)

在做网页的时候,经常刷新页面去查看修改的代码是否正常的显示出来。经常按【刷新键】好麻烦,如果改了代码后,浏览器上就能看到更新代码后的效果,那多好啊。 使用grunt(温习一下怎么使用grunt) 1、在项目路径下安装grunt sudo npm install grunt --save-dev 2、生成package.json npm init ...

ddsk97345的博客 239

grunt-contrib-watch 结合 connect-livereload 实现修改文件后,理解刷新页面

watch 的配置 watch : { less :{ files:['css/*.less'], tasks:['less'] }, livereload:{ options:{ livereload:true }, files:['css/*.css','js/

xiongzhengxiang的专栏 8068

使用grunt实现浏览器自动刷新

  首先安装必备的插件: nodejs安装 grunt安装 grunt-contrib-watch:npm install grunt-contrib-watch —save-dev 因为这是要引入livereload来监听你对文件所做的修改,所以需要一个服务器来实现浏览器与服务期间的通信, 因此,可以利用apache实现。将你的项目放在Apache服务器下。   然后就是进行...

weixin_30698527的博客 179

grunt live reload 配置记录

npm install --save-dev grunt-contrib-watch connect-livereload  安装liverelo

ISaiSai的专栏 1924

livereload的简单使用

一/直接使用:npm install -g livereload 全局安装 http-server 起到服务 livereload启动 在html中引入<script src="http://localhost:35729/livereload.js?snipver=1"></script> 二/与gulp结合使用 npm install -g gul...

afk46847的博客 532

livereload_LiveReload

livereload 回想一下:您多久手动重新加载一个网站以查看刚刚在代码编辑器中所做的更改? 数百次,如果您对网络业务的时间更长,则可能成千上万次。 这种行为似乎是我们固有的,因此我们不会对此表示怀疑。 然而,这可能是如此简单。 有一个名为LiveReload的小工具,可以在保存后立即为我们神奇地重新加载网页。 您可能已经听说过它,但是由于设置可能存在一些陷阱,因此从不尝试尝试。 以下指南将...

174
上一篇: grunt
下一篇: Javascript操作DOM常用API总结
chentian888
博客等级 码龄11年 16粉丝 76原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值