资讯专栏INFORMATION COLUMN

实时编辑

wenshi11019 / 1124人阅读

摘要:静态服务器代理你的域名或注入通过流的方式创建任务流程这样您就可以在您的任务完成后调用,所有的浏览器将被告知的变化并实时更新因为只在乎您的在编译完成后注意后调用重载。

方法一

使用Google Chrome DevTools

方法二

工作区Browsersync

安装 Node.js

BrowserSync是基于Node.js的, 是一个Node模块, 如果您想要快速使用它,也许您需要先安装一下Node.js 安装适用于Mac OS,Windows和Linux。

安装 BrowserSync您可以选择从Node.js的包管理(NPM)库中 安装BrowserSync。打开一个终端窗口,运行以下命令:npm install -g browser-sync您告诉包管理器下载BrowserSync文件,并在全局下安装它们,您可以在所有项目(任何目录)中使用。当然您也可以结合gulpjs或gruntjs构建工具来使用,在您需要构建的项目里运行下面的命令:

npm install --save-dev browser-sync

启动 BrowserSync

一个基本用途是,如果您只希望在对某个css文件进行修改后会同步到浏览器里。那么您只需要运行命令行工具,进入到该项目(目录)下,并运行相应的命令:静态网站
如果您想要监听.css文件, 您需要使用服务器模式。 BrowserSync 将启动一个小型服务器,并提供一个URL来查看您的网站。

// --files 路径是相对于运行该命令的项目(目录)

browser-sync start --server --files "css/*.css"

如果您需要监听多个类型的文件,您只需要用逗号隔开。例如我们再加入一个.html文件

// --files 路径是相对于运行该命令的项目(目录)
browser-sync start --server --files "css/.css, .html"// 如果你的文件层级比较深,您可以考虑使用 **(表示任意目录)匹配,任意目录下任意.css 或 .html文件。
browser-sync start --server --files "/.css, /.html"

// 监听css文件
browser-sync start --server --files "css/*.css"// 监听css和html文件
browser-sync start --server --files "css/.css, .html"动态网站
如果您已经有其他本地服务器环境PHP或类似的,您需要使用代理模式。 BrowserSync将通过代理URL(localhost:3000)来查看您的网站。

// 主机名可以是ip或域名
browser-sync start --proxy "主机名" "css/*.css"
在本地创建了一个PHP服务器环境,并通过绑定Browsersync.cn来访问本地服务器,使用以下命令方式,Browsersync将提供一个新的地址localhost:3000来访问Browsersync.cn,并监听其css目录下的所有css文件。
browser-sync start --proxy "Browsersync.cn" "css/*.css"

Browsersync + Gulp.js

Browsersync + Gulp.js
当您在使用gulp构建您的项目时,您只需要 require Browsersync 模块, 利用API 并进行 选项配置。 以下是一些流行项目中常见的用例, 如 谷歌的网络入门套件 和其他项目。安装^ TOP
首先,您需要安装 Browsersync 和 依赖包 Gulp 。如果你是第一次安装,那么你可以通过--save-dev命令,这将会自动在你的package.json里添加依赖,下一次再安装时,你只需要npm install
$ npm install browser-sync gulp --save-dev
然后,在您的 gulpfile.js 文件里使用它们。

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"
});
});SASS + CSS 注入^ TOP
通过流的方式创建任务流程, 这样您就可以在您的任务完成后调用reload,所有的浏览器将被告知的变化并实时更新. 因为Browsersync只在乎您的CSS在编译完成 finished 后 - 注意: gulp.dest 后调用重载。

var gulp = require("gulp");
var browserSync = require("browser-sync").create();
var sass = require("gulp-sass");
var reload = browserSync.reload;

// 静态服务器 + 监听 scss/html 文件
gulp.task("serve", ["sass"], function() {

browserSync.init({
server: "./app"
});

gulp.watch("app/scss/*.scss", ["sass"]);
gulp.watch("app/*.html").on("change", reload);
});

// scss编译后的css将注入到浏览器里实现更新
gulp.task("sass", function() {
return gulp.src("app/scss/*.scss")
.pipe(sass())
.pipe(gulp.dest("app/css"))
.pipe(reload({stream: true}));
});

gulp.task("default", ["serve"]);SASS & Source Maps^ TOP
如果您使用 gulp-ruby-sass 与 sourcemap: true 选项, 将会生成.map 文件. 这些文件最终会被送到下游,在 browserSync.reload() 时接收它们, 它会尝试重新加载页面 (因为它不会在DOM里发现在任何 .map 文件)。
要解决这个问题, 您可以使用 gulp-filter 包, 以确保只有 *.css 文件响应 .reload - 这样一来,您还是会得到CSS注入,而不是整个页面重载。

var gulp = require("gulp");
var sass = require("gulp-ruby-sass");
var filter = require("gulp-filter");
var browserSync = require("browser-sync").create();

// 静态服务器 + 监听 scss/html 文件
gulp.task("serve", ["sass"], function() {

browserSync.init({
server: "./app"
});

gulp.watch("app/scss/*.scss", ["sass"]);
gulp.watch("app/*.html").on("change", reload);
});

gulp.task("sass", function () {
return gulp.src("scss/*/.scss")
.pipe(sass({sourcemap: true}))
.pipe(gulp.dest("css"))// Write the CSS & Source maps
.pipe(filter("*/.css")) // Filtering stream to only css files
.pipe(browserSync.reload({stream:true}));
});浏览器重载^ TOP
有时候,您可能只是想完全重新加载页面 (例如,处理一堆JS文件后), 但您希望在任务发生后重载。这将在 gulp 4.x.x 时变得更容易, 但现在您可以做到以下几点: (确保您 return 从您的工作流 ,以确保 browserSync.reload() 被调用在正确的时间。

// 处理完JS文件后返回流
gulp.task("js", function () {
return gulp.src("js/*js")
.pipe(browserify())
.pipe(uglify())
.pipe(gulp.dest("dist/js"));
});

// 创建一个任务确保JS任务完成之前能够继续响应// 浏览器重载
gulp.task("js-watch", ["js"], browserSync.reload);

// 使用默认任务启动Browsersync,监听JS文件
gulp.task("serve", ["js"], function () {

// 从这个项目的根目录启动服务器
browserSync({
server: {
baseDir: "./"
}
});

// 添加 browserSync.reload 到任务队列里
// 所有的浏览器重载后任务完成。
gulp.watch("js/*.js", ["js-watch"]);
});手动重载^ TOP
如果流支持并不满足您的需求,您可以通过创建一个任务来手动触发重载方法。我们创建了一个sass任务,在我们修改文件后会在浏览器里注入CSS,但是当HTML文件被更改时,浏览器将会被重新加载(手动重载)。

// 使用变量引用 reload 方法var reload = browserSync.reload;

// 编译 SASS & 自动注入到浏览器
gulp.task("sass", function () {
return gulp.src("scss/styles.scss")
.pipe(sass({includePaths: ["scss"]}))
.pipe(gulp.dest("css"))
.pipe(reload({stream:true}));
});

// 监听scss和html文件, 当文件发生变化后做些什么!
gulp.task("serve", ["sass"], function () {

// 从这个项目的根目录启动服务器
browserSync({
server: {
baseDir: "./"
}
});

gulp.watch("scss/*.scss", ["sass"]);
gulp.watch("*.html").on("change", browserSync.reload);
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102245.html

相关文章

  • 12行代码实现一个Web版Markdown编辑器: 实时预览

    摘要:首先,我承认标题党的嫌疑是逃不掉的了但是,诸君请继续看下去,就会发现还是有干货的源码写这个编辑器的难点有两个对文本进行语法的解析实时检测页面文本变化针对,我在上找到了,看就能很快地上手针对,我选择的是,因为我看中了她的双向绑定特性当然数据和 首先,我承认标题党的嫌疑是逃不掉的了...但是,诸君请继续看下去,就会发现还是有干货的 源码:https://github.com/shuiRo...

    Mertens 评论0 收藏0
  • 12行代码实现一个Web版Markdown编辑器: 实时预览

    摘要:首先,我承认标题党的嫌疑是逃不掉的了但是,诸君请继续看下去,就会发现还是有干货的源码写这个编辑器的难点有两个对文本进行语法的解析实时检测页面文本变化针对,我在上找到了,看就能很快地上手针对,我选择的是,因为我看中了她的双向绑定特性当然数据和 首先,我承认标题党的嫌疑是逃不掉的了...但是,诸君请继续看下去,就会发现还是有干货的 源码:https://github.com/shuiRo...

    makeFoxPlay 评论0 收藏0
  • 分享一个用vue2 + node-webkit + koa2 + mongodb开发的,可以实时编辑

    摘要:若用户已登录,数据存储在远程服务器用户未登录时,数据存储在。开发服务端部署服务端已经部署在我自己的服务器上,不需要你进行部署啦。有什么好的建议也可以提哈 记事本 showImg(https://segmentfault.com/img/remote/1460000013228992?w=50&h=50); 该项目分为两部分:桌面客户端(node-webkit) + 服务端(koa2)...

    LeoHsiun 评论0 收藏0
  • 10个免费的HTML在线编辑工具

    摘要:是一个多窗格的在线编辑器。是一个拥有四个窗格的在线编辑器,他们分别用来编写和并进行实时预览。不仅仅是一个免费的在线编辑工具。它实际上是一个用来美化和精简代码的在线工具。总而言之,这是一个非常基础的编辑器。 onlinehtmleditor.net showImg(https://segmentfault.com/img/bVqZNZ);onlinehtmleditor.net是非常简单...

    WelliJhon 评论0 收藏0
  • songEagle开发系列:如何科学有效的让博客文章实时保存

    摘要:一写在前面如何实现文章的实时保存一般写文章的写博客的网站都会有这个功能点,这样保证了用户在不小心退出的情况下数据的保存下来,这样的交互比较符合用户的使用心理学。 一、写在前面 如何实现文章的实时保存?一般写文章的写博客的网站都会有这个功能点,这样保证了用户在不小心退出的情况下数据的保存下来,这样的交互比较符合用户的使用心理学。对于用户来说这是一个非常实用的功能,作为一个博客来说,有这个...

    hatlonely 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<