昨天看了小胡子哥的一篇文章《工作五年,后面四年重复着第一年的活儿?》,正好是关于前端开发的,我就看了。的确感触很深,作为程序开发者,不应该是编码的机器,不能日复一日做同样的事情,小胡子哥在文章里说:重复的事情要交给机器,作为开发者,我们的任务是告诉机器怎么做就行了。所以开发越到后期,我们应该变得越懒才是好事情,这也是小胡子哥提倡的。在小胡子哥的文章里就提到了一个工具LiveReload,当时一看到这个名词我猜肯定是网页实时刷新的东西,因为在web前端开发过程中频繁刷新浏览器是多么痛苦的一件事,更可恶的是缓存就像魔鬼一样挥之不去。 
       昨晚做了各种实验,大概明白了liveReload的工作原理,liveReload分为服务器和客户端两部分。服务端程序在本地开启了一个websocket服务,安装在浏览器的livereload客户端开启后,与服务端建立websocket连接。而服务端监听者工程目录下的文件,当工程的目录下的文件有更改,立即通知liveReload客户端刷新网页,达到修改立即刷新的效果。 
       安装过程:1、在chrome浏览器的应用商店搜索liveReload插件进行安装。

安装完成之后,浏览器右上角会出现刷新的按钮,如果开启了liveReload服务器,点击该按钮边可以和服务器连接,来凝结成功后按钮的中心会变成实心圆。 
       安装服务端:以sublime text3为例。 
点击Preferences,选择Package Control,如果没有该选项,必须先安装Package Control. 

输入Install Package

在搜索面板里搜索liveReload即可安装。 
安装完成之后,重启sublime text.

使用快捷键ctrl+shit+p 调出命令行面板; 
输入LiveReload,选择LiveReload:Enable/disable plug-ins,回车; 
 
再选择Enable - Simple Reload 即可开启服务。 

此时被sublime text3 加载的文件都被liveReload监听,如果浏览器正在打开这些文件,只要其中一个文件被修改,浏览器就会自动刷新。

上面刚发在开发纯前项目的时候后很好用,不用为项目搭建http服务器,直接用浏览器打开本地文件就能够达到实时刷新的目的。但是当我们的开发的javaWeb项目时,静态页面是jsp文件,浏览器是无法直接解析的,而且jsp文件中可能还有java代码,访问时需要tomcat去解析,所以代码必须部署到tomcat上上发布,必须使用http去访问。虽然我们可以使用sublime text去编辑代码,修改代码时,浏览器也受到代码被修改的通知,但是是浏览器刷新时,是从tomcat上去获取文件,而我们修改的本地文件还没有部署到tomcat上去,所以技术自动刷新了 还是获取到历史文件。所以我们要单独配置LiveReload服务器。

首先安装nodeJs,安装好了nodejs的同时,会一并安装npm包管理器。 
Grunt:Grunt是一个基于NodeJS,可用于自动化构建、测试、生成文档的项目管理工具。这里我们用grunt来单间liveReload服务器。

安装grunt-cli: 
打开cmd,输入命令:

npm install -g grunt-cli
  • 1

安装完之后,已经将grunt 命令添加到全局变量,在任何地方都能使用grunt了。 
然后再我们想要监听的文件夹下创建空文件package.json和Gruntfile.js 
在该目录下执行命令:

npm init
  • 1

接下来填写项目的各种参数,可以不填,一路回车

安装依赖模块: 在package.json所在目录下,行执命令行

npm install --save-dev grunt matchdep grunt-contrib-connect grunt-contrib-watch connect-livereload grunt-open
  • 1

其中: 
grunt-contrib-connect 负责启动web服务 
connect-livereload负责给middleware,动态在html底部加一条livereload的js 
grunt-contrib-watch 监控文件变化并通知

修改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: grunt.file.readJSON('package.json'),connect: {options: {// 服务器端口号port: 8080,// 服务器地址(可以使用主机名localhost,也能使用IP)hostname: 'localhost',// 物理路径(默认为. 即根目录) 注:使用'.'或'..'为路径的时,可能会返回403 Forbidden. 此时将该值改为相对路径 如:/grunt/reloard。base: '.'},livereload: {options: {// 通过LiveReload脚本,让页面重新加载。middleware: lrMiddleware}}},watch: {client: {files: ['*.html', 'css/*', 'js/*', 'images/**/*','WEB-INF/JSP/*.jsp','WEB-INF/JSP/**/*.jsp'],options: {livereload: true}}}});// 加载插件grunt.loadNpmTasks('grunt-contrib-watch');// 自定义任务grunt.registerTask('live', ['watch']);};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

在package.json所在目录执行命令行:

grunt live
  • 1

输出: 
Running “watch” task 
Waiting…

此时liveReload已经监听我们的项目,我们可以用eclipse编辑文件,用tomcat开发项目,由于eclipse保存文件之后自动发布到tomcat上,保存后通知浏览器刷新就可以获取最新的文件,达到刷新的目的。

但是这里还有一个问题,eclipse保存之后浏览器刷新总是慢一拍。

最后在同事的帮助下,监听D:\j2ee\workspace.metadata.plugins\org.eclipse.wst.server.core/的目录,成功的解决了eclipse慢一拍的问题。

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

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

    苦B的前端每次在制作和修改页面时,都有一个特定的三部曲:coding-save-F5.很多时候都希望自己一改东西,页面就能立刻显示,而现在LiveReload就能做到这点. LiveReload会监控 ...

  2. 前端自动化工具 grunt 插件 uglify 的简单使用(一)

    Grunt 的简介: Grunt 是一套前端自动化工具,是一个基于 node.js 的命令行工具,它一般用于: 1.压缩文件: 2.合并文件: 3.简单的语法检测: 4.监听文件变动: 5.less ...

  3. 前端开发神器:grunt快速入门

    2019独角兽企业重金招聘Python工程师标准>>> grunt是什么? grunt是一个基于nodejs的task runner,简单来说,就是类似于.net平台的msbuild ...

  4. webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器

    #webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器 -- 工欲善其事 必先利其器##各工具介绍 `webstorm`是**JetBrains** ...

  5. vscode用鼠标滚轮_前端开发神器 VSCode 使用总结

    前端开发神器 VSCode 使用总结 VSCode 是微软出品的,基于 Electron 和 TypeScript 的,集成了 git 版本管理和命令行终端,而且开源稳定,插件丰富,再搭配一款 Chr ...

  6. Grunt搭建自动化web前端开发环境--完整流程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...

  7. python数学公式编辑工具_1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器...

    原标题:1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器 来源:量子位 关注前沿科技 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧箫 发自 凹非寺 ...

  8. grunt 插件_从Grunt测试Grunt插件

    grunt 插件 编写针对grunt插件的测试结果比预期的要简单. 我需要运行多个任务配置,并想通过在主目录中键入grunt test来调用它们. 在第一个任务失败后,咕声通常会退出. 这使得不可能在 ...

  9. 从Grunt测试Grunt插件

    编写针对grunt插件的测试结果比预期的要简单. 我需要运行多个任务配置,并想通过在主目录中键入grunt test来调用它们. 通常,第一个任务失败后会发出咕声. 这使得不可能在主项目gruntfi ...

最新文章

  1. android开发中用到的px、dp、sp
  2. oschina添加ssh公钥一记
  3. mysql 使用中 修复 blog_Java My-Blog之mysql容器重复初始化严重bug修复过程
  4. OpenCASCADE:Modeling Algorithms模块标准拓扑对象
  5. 样式图片_中式门窗花格图片大全样式全面选择多
  6. 使用Lambda在AWS云上使用Java
  7. js 利用事件委托解决mousedown中的click
  8. 【bzoj】 1412: [ZJOI2009]狼和羊的故事
  9. 虚拟机中的linux系统联网,虚拟机上Linux系统上网设置
  10. 长假终结踏上归途 网络电话延续团圆亲情
  11. IOS中常见UI细节和常识
  12. RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (六)
  13. nginx反向代理获取用户真实Ip地址
  14. 翟菜花:从美团配送新品牌发布,看即时配送行业奇点何时到来
  15. ollvm编译出现的问题纪录
  16. 大专学数控技术是计算机一类的吗,学专科数控技术,出来后找什么工作呢?
  17. 还在熬夜干论文——Python带你一键起飞!【内附演示视频】
  18. [面试] 面试官: 你还有什么想问我的?
  19. 带动画的好看的按钮集合HTML + CSS各种好看按钮组件
  20. 2022-2028全球及中国弹性体行业研究及十四五规划分析报告

热门文章

  1. Head First设计模式(阅读笔记)-04.工厂模式
  2. 高亮word特定关键字(python)
  3. 【工具】PL/SQL develper配置
  4. echarts中的中国地图js源码(china.js)
  5. jar包调用dll lib等外部库文件失败解决办法
  6. 51单片机PCF8951芯片的A/D和D/A
  7. MySQL基础(一位小白)
  8. Java 集合30个连环炮,难不难试试便知!
  9. kindeditor自定义添加网络视频插件。修改批量图片上传方式原flash改为JS和h5上传
  10. 基准点定位-精度测试