求问:gulp+browserSync中两种不同写法的区别?

发布于 2022-09-03 12:54:00 字数 971 浏览 16 评论 0

想问一下gulp+browserSync中两种不同写法的区别?

首先引入插件

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    browserSync = require('browser-sync');

sass任务

gulp.task('sass',function(){
  gulp.src('dev/scss/**/*.scss')
  .pipe(sass())
  .pipe(dest('dev/css'))
//此处是————————————————————————————————————写法A(AB二选一)
.pipe(browserSync.stream());
//此处是————————————————————————————————————写法B(AB二选一)
.pipe(browserSync.reload({stream:true});
}

监听调用

gulp.task('serve',['sass'],function(){
//指定服务器启动目录
  browserSync.init({server:'dev'});

//监听SCSS文件改变
gulp.watch('dev/scss/**/*.scss',['sass']);

疑问:

gulp serve执行以后发现
当使用写法A时,SCSS文件改变后,整个浏览器页面都全部刷新了
二使用写法B时,SCSS文件改变后,浏览器页面上只有被改变的地方局部刷新了

疑问一:所以A和B写法有什么不同呢?求解- -

疑问二:gulp.watch('dev/*.html).on('change', browserSync.reload);这里监听的文件改变都是会导致页面完全刷新的,有啥办法也变成局部刷新么?

求懂的回答我一下,拜谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞陪衬 2022-09-10 12:54:00

谢邀,这个我还真没注意过,我一直用的也是方案 B

browserSync.reload({stream:true}

对于你提到的,我也很困惑的,看API文档
https://www.browsersync.io/do...
当 reload 方法,不传参数的时候,是刷新浏览器
传 {stream:true} 相当于调用 stream 方法, 这个源码中写的很清楚,虽然文档上没说

查了一些源码 https://github.com/BrowserSyn...

 if (_.isObject(opts)) {
            if (!Array.isArray(opts) && Object.keys(opts).length) {
                if (opts.stream === true) {
                    return stream(emitter)(opts);
                }
            }
        }

对于stream方法, 文档上给出的例子,也不会刷浏览器。
https://www.browsersync.io/do...

另外,能提供 browsersync 的具体版本给我吗,我需要进一步确认一下?

所以这第一个问题,目前暂时不能回答,按照上面的分析应该是一样的吧!

另外你的第二个问题, 看你的意思是如果html变化了后,只需为html跟新部分变化的dom,这个不会,得花时间调研

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文