【问题标题】:Live reload/refresh solution for HTML/CSS in 2017 [closed]2017 年 HTML/CSS 的实时重新加载/刷新解决方案 [关闭]
【发布时间】:2017-10-04 01:25:17
【问题描述】:

现在是 2017 年,在编写网站代码时,我们仍然需要编辑、保存、切换窗口,然后点击刷新。做一个小的改变,然后重新做一遍。然后再次。再等等等等。

我是否遗漏了什么,因为现在肯定有一个解决方案,浏览器可以在我们键入时自动更新,或者至少在我们点击保存时立即更新?

jsbin.com 是我在本地 Apache (Windows 10) 设置中寻找的完美工作示例。我尝试了各种方法,包括LiveReloadLiveJS,但它们太啰嗦了,而且通常会有大约 2-4 秒的延迟,这在构建网站时还不够快。他们还需要一个浏览器扩展或一个插入到每个需要监控的页面中的代码 sn-p。这一切看起来都非常“老套”,非常 1990 年代。

我很好奇其他开发人员如何处理这个问题?现在有没有我没有遇到过的 NodeJS 解决方案,或者其他人只是在做编辑、保存、切换、刷新方法?确定不是吗?作为参考,我使用 Atom 编辑我的 html/css/js 文件等,然后在 Chrome 中保存并查看更改。任何想法或想法将不胜感激。实际上非常感谢。

【问题讨论】:

  • 大多数 webpack 模板都这样做(所以从技术上讲,这是一个节点解决方案)。 JS 的热替换是偶然的,但实时更新 CSS 是即时且可靠的。喜欢thisthis
  • 如果你只是在做 html、css 和 js,我会推荐brackets.io。它具有实时预览功能,每次发生变化时都会更新,而且它也是开源的。
  • @BenClarke ,这更像是 2012 年。你可能还不明白,但你需要的是一个任务运行器。有关更多信息,请参阅我的答案。
  • @BenClarke 阅读它的最佳位置是here - 它的目的是获取多个文件,其中一些可能与浏览器不兼容(例如 SASS、ES6),并将其捆绑到一个文件浏览器可以加载。通常这包括缩小等等。人们已经扩展了这个工具(以及它的dev server)来做一些事情,比如在不刷新页面的情况下热加载样式。

标签: javascript html css node.js browser-sync


【解决方案1】:

注意:live-server 自 2018 年 11 月 26 日起未更新。


live-serverjson-server

Live-server 能够让您即时将应用程序封装在 Web 服务器 (nodejs) 下,并将所有源代码实时重新加载到您的浏览器(通过 webSocket)。

只需在您的项目文件夹中输入$> live-server 即可!

您可以将它与 json-server 结合使用,它为您提供了一种非常简单的方法来从 JSON 文件创建带有 json 键和值的 CRUD REST API。

提供一个带有 DB Schemas 的 .json 文件,采用 json 格式,只需输入 $> json-server --watch mydb.json,它也可以正常工作!

2 分钟的时间为您提供了一个具有实时重新加载功能和自定义去中心化 API 的网络服务器。

希望对你有所帮助!

【讨论】:

  • Live-server 看起来很适合 html/css,但它不会打开我的 php 索引文件?通过阅读 GitHub 页面,我认为它只是 html/css/js。真可惜,因为设置起来非常简单,并且与 html/css 配合得很好。如此接近完美! :) 还是谢谢你。
【解决方案2】:

使用 task-runner 绝对是每个有自尊的开发者的基础。

在我看来,最好的办法是为您的项目设置一个 Gulp,并与 Browser-Sync 配对。它可以设置为侦听您正在使用的每种类型的文件中的更改,从而最大限度地减少猜测哪些已更改和哪些未更改的麻烦。

您可以找到有关如何执行此操作的简洁教程here on CSS Tricks.

[2019 年 12 月 17 日更新]

更好的方法是使用 live-reload,即使用名为 live-server 的 npm 插件。

您只需打开项目的父目录,例如parent-dir/ 您的项目所在的位置,例如parent-dir/project。然后,您打开一个终端并输入:


live-server project

按 Enter,您的项目将在您的默认浏览器窗口中打开。

注意:如果您打算使用 npm,则需要 nodejs

【讨论】:

  • 这不一定是一个糟糕的答案,但已经有点过时了。
  • @DaveKanter ,请注意。
  • “对于每个有自尊的开发者来说绝对是基础。”任务运行器是一种工具,并不适合所有工作流程。自尊并非来自于挑选和使用时髦的工具。
【解决方案3】:

我放弃了 gulp,现在只使用 npm 脚本https://www.npmjs.com/

package.json 文件中,您可以使用 SCSS、自动添加前缀、丑化和缩小它以及您的脚本,并控制它将输出到哪些文件夹,例如生产文件夹。

这是package.json 中的示例设置

{
    "name": "Sample build",
    "version": "1.0.0",
    "description": "New build",
    "author": "Stefan Bobrowski",
    "license": "MIT",
    "main": "index.html",
    "scripts": {
        "autoprefixer": "postcss -u autoprefixer -r production/css/*.css",
        "scss": "node-sass --output-style expanded --indent-width 4 -o production/css development/scss",
        "uglify": "uglifyjs development/js/*.js -m -o production/js/scripts.js",
        "serve": "browser-sync start --server --files \"production/css/*.css, production/js/*.js\"",
        "build:css": "npm run scss && npm run autoprefixer",
        "build:js": "npm run uglify",
        "build:all": "npm run build:css && npm run build:js",
        "watch:css": "onchange \"development/scss\" -- npm run build:css",
        "watch:js": "onchange \"development/js\" -- npm run build:js",
        "watch:all": "npm-run-all -p serve watch:css watch:js",
        "start": "npm run build:all && npm run watch:all"
    },
    "devDependencies": {
        "node-sass": "^4.5.0",
        "postcss-cli": "^3.0.0-beta",
        "autoprefixer": "^6.7.6",
        "browser-sync": "^2.18.8",
        "npm-run-all": "^4.0.2",
        "onchange": "^3.2.1",
        "uglify-js": "^2.8.3"
    }
}

以及对应的文件结构设置:

Project
|__ development
|       |____ js
|       |____ scss
|
|__ production
|        |___ js
|        |___ css
|        |___ images
|
|_ index.html
|_ package.json

开发者只需运行npm install,然后运行npm start

【讨论】:

  • 这太棒了。刚刚实现了一个稍微现代化的版本,但核心就在那里。很好的答案
  • @tpinto 谢谢它在过去为我创造了奇迹。你说得对,我可能应该用更现代的包等来更新它。
  • 现在在 2019 年,我会推荐 Parcel bundler。在没有配置的情况下,它可以处理捆绑您的不同文件类型,如 SCSS、开发服务器、热重载等。查看这个 repo 进行简单设置:github.com/stefanbobrowski/ReactHooksParcel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多