前端工具-浏览器同步测试(自动刷新、热刷新、热加载)

Browsersync

官网:https://www.browsersync.io/

中文:http://www.browsersync.cn/

Gulp中使用

http://www.browsersync.cn/docs/gulp/

注意1:我测试哪个tesk在下面哪个好使(要么能使用静态服务器,要么用代理?)貌似不能部分请求用代理。。

var gulp        = require(‘gulp‘);
var browserSync = require(‘browser-sync‘).create();

// 静态服务器
gulp.task(‘browser-sync‘, function() {
    browserSync.init({
        server: {
            baseDir: "./"
        }
    });
});

// 代理
gulp.task(‘browser-sync‘, function() {
    browserSync.init({
        proxy: "你的域名或IP"
    });
});

注意2:proxy后定义了路径startPath就不起作用了

gulp.task(‘browser-sync‘, function() {
    browserSync.init({
        // path为首次启动路径,host为个请求转发的地方
        proxy: "localhost:3448/data-entry/index.aspx",
        /*
          proxy后定义了路径startPath就不起作用了

          proxy: "localhost:3448/data-entry/index.aspx",
          和
          proxy: "localhost:3448",
          startPath: "/data-entry/index.aspx"
          一样
        */
    });
});

Grunt中使用

gruntfile.js

module.exports = function(grunt) {

    require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks);

    grunt.initConfig({
        pkg: grunt.file.readJSON(‘package.json‘),

        htmlhint: {
            build: {
                options: {
                    ‘tag-pair‘: true,
                    ‘tagname-lowercase‘: true,
                    ‘attr-lowercase‘: true,
                    ‘attr-value-double-quotes‘: true,
                    ‘doctype-first‘: true,
                    ‘spec-char-escape‘: true,
                    ‘id-unique‘: true
                },
                src: [‘index.html‘]
            }
        },

        uglify: {
            options: {
                sourceMap: true
            },
            build: {
                files: {
                    ‘build/js/script.min.js‘: [/*your files*/]
                }
            }
        },

        cssmin: {
          combine: {
            files: {
              ‘build/css/style.min.css‘: [/*your files*/]
            }
          }
        },

        watch: {
            html: {
                files: [/*your files*/],
                tasks: [‘htmlhint‘]
            },
            js: {
                files: [/*your files*/],
                options: {
                    sourceMap: true
                },
                tasks: [‘uglify‘]
            },
            css: {
                files: [/*your files*/],
                tasks: [‘cssmin‘]
            }
        },

        browserSync: {
            dev: {
                bsFiles: {
                    src : [
                        ‘build/css/*.css‘,
                        ‘build/js/*.js‘,
                        ‘index.html‘,
                    ]
                },
                options: {
                    watchTask: true,
                    proxy: "localhost:3448/index.html",
                }
            }
        },
    });

    // Browsersync是不能替代常规watch任务(如编译SASS,LESS等等),它们被设计为一起使用。如果你打算这样做,你就需要设置watchTask:true ,一定要在 Browsersync 之后执行监听任务。
    grunt.registerTask(‘default‘, [‘browserSync‘, ‘watch‘]);

};

依赖:

"devDependencies": {
    "grunt": "0.4.x",
    "grunt-browser-sync": "^2.2.0",
    "grunt-contrib-cssmin": "0.7.x",
    "grunt-contrib-uglify": "^3.3.0",
    "grunt-contrib-watch": "0.5.x",
    "grunt-cssc": "0.2.x",
    "grunt-htmlhint": "0.4.x",
    "grunt-shell": "0.5.x",
    "matchdep": "0.3.x",
    "topojson": "1.4.x"
}

webpack-dev-server

https://webpack.js.org/configuration/dev-server/

使用浏览器同步测试(自动刷新、热刷新、热加载)打开的页面访问服务端接口违反同源策略

使用 代理(proxy) 解决

原文地址:https://www.cnblogs.com/jffun-blog/p/10212009.html

时间: 2024-12-14 21:30:57

前端工具-浏览器同步测试(自动刷新、热刷新、热加载)的相关文章

省时的浏览器同步测试工具 browsersync NodeJS

http://www.browsersync.cn/ 省时的浏览器同步测试工具 Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项调试.您可以想象一下:“假设您的桌子上有pc.ipad.iphone.android等设备,同时打开了您需要调试的页面,当您使用browsersync后,您的任何一次代码保存,以上的设备都会同时显示您的改动”.无论您是前端还是

BrowserSync - 浏览器同步测试工具

背景: 之前在学gulp的时候,使用gulp-livereload来实时自动刷新页面省时开发,但一直比较难用,现在找到新的替代神器. 安装: // 使用淘宝镜像会快些 npm install -g browser-sync --registry=https://registry.npm.taobao.org 启动: (1)静态网页(服务器模式) 先进入项目目录,然后: // --files 路径是相对于运行该命令的项目(目录) browser-sync start --server --file

配置browser-sync 浏览器同步测试工具

配置browser-sync 浏览器同步测试工具 安装依赖 npm i -g browser--sync // 全局安装 ? npm install --save-dev browser-sync 卸载 npm uninstall --globall browser--sync 注意: 我们在实际开发中通常是将browser-sync配置在项目中,因为clone到本地后会缺失全局包. 在项目中安装第三方包的时候,是不需要这个自动刷新也页面的包,所以我们将第三方依赖配置在devDependenci

浏览器渲染阻塞与优化-详解推迟加载、异步加载。

我认为一个前端工程师是否优秀,很大程度上取决于对前端性能上优化的功力.所以性能优化对前端真的很重要!!! 本文介绍了什么是阻塞.为什么会阻塞?阻塞优化常用的5种方式以及他们的注意事项. 浏览器渲染阻塞与优化      什么是阻塞?在页面中我们通常会引用外部文件,而浏览器在解析HTML页面是从上到下依次解析.渲染,如果<head>中引用了一个a.js文件,而这个文件很大或者有问题,需要2秒加载,那么浏览器会停止渲染页面(此时是白屏显示,就是页面啥都没有),2秒后加载完成才会继续渲染,这个就是阻塞

“不同浏览器对于同一域名的并发获取(加载)资源数是有限的”

转自:http://www.nowamagic.net/librarys/veda/detail/1077 这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发.于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图: 浏览器对同一个域只能并发2个HTTP请求 - 网上盛传已久. javascript文件的加载会阻塞浏览器其他资源的加载 -

【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 话说RecyclerView已经面市很久,也在很多应用中得到广泛的使用,在整个开发者圈子里面也拥有很不错的口碑,那说明RecyclerView拥有比ListView,GridVi

下拉刷新,上拉加载 的基础款(基本实现)

前言 现在网上 下拉刷新,上拉加载 插件一搜一大堆,如果你想用在生产环境,那你可以直接网上搜一个靠谱的,我所做的就是不依赖任何插件,一步一步把这个插件的过程写一下,各位同学可以在此基础上定制,没有写过插件的,可以了解下插件怎么写的,整个过程定位入门级,看不懂?那么百度插件直接用就好了,修炼一段时间在考虑怎么写插件吧.废话不多说,上效果图 原理 下拉刷新的原理就是,添加一个 div,这个 div 里面标识加载的过程,根据拉下的距离改变div的高度,从而显示 下拉加载 的文字,松手后根据下拉的距离,

vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)

先发原文作者.地址等信息.我把内容全部搬过来了,也可以去看原文.内容绝对是满满的干货,给原作者点赞!(我添加的内容在转载过来的后面,内容不多) 作者: ustbhuangyi 链接:http://www.imooc.com/article/18232 来源:慕课网 在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示: 可以打开"微信 -> 钱包->滴滴出行"体验效果. 我们在实

android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

转自:http://blog.csdn.net/jj120522/article/details/8229423 这次就不上图了,例子太多太多了,想必大家都见过.这个功能的实现,简直是开发者必备的. 我也不过多介绍了,网上详细介绍的博客太多太多了,若想深入了解,请参考网上其他博文. 在这里,我只是按照自己的理解,模拟实现了一个,顺便代码贡献出来. 我对之详细标明的注释,想必如果不懂的同学们,看注释也应该明白,前提是,你要耐心看,因为代码有点多,但是我整理过了,还算清晰. 详细代码: [java]