nodemon和live-server有什么区别?

时间:2019-01-27 13:49:24

标签: node.js npm development-environment

有人可以帮我了解npm软件包nodemon和live-server之间的区别,因为它们都重新加载服务器并监听更改吗?

1 个答案:

答案 0 :(得分:2)

它们有两个不同的用途。

当检测到目录中的文件更改时,

Nodemon将重新启动 Node应用程序

另一方面,

实时服务器会在检测到任何受支持的文件类型(例如HTML,JS,CSS)更改时刷新您的浏览器。当您在本地工作时,它还会启用Ajax请求-这些请求通常不适用于file://协议。


Nodemon

要了解这一点,让我们创建一个简单的节点服务器。

首先,创建一个my-app目录,将其更改为目录,创建一个package.json文件和一个名为server.js的文件。在'nix系统上,像这样:

mkdir my-app
cd my-app
npm init -y
touch server.js

然后在server.js中添加:

const http = require('http');

const server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello, World!\n");
});

server.listen(8000);
console.log("Server running at http://127.0.0.1:8000/");

现在,如果您运行node server.js,并在浏览器中访问http://127.0.0.1:8000/,您将看到“世界,您好!”消息。

如果您编辑server.js(例如,将消息更改为“ Goodbye,World!”),然后刷新浏览器,您仍然会看到原始的“ Hello,World!”。信息。

要查看更改,您必须停止应用程序(使用 Ctrl + C ),然后重新启动(使用node server.js),然后刷新浏览器。

nodemon的作用是包装Node应用程序,以使手动停止和重新启动应用程序的步骤自动化。

将其安装为开发依赖项:

npm i -D nodemon

然后像这样启动您的应用程序:

./node_modules/.bin/nodemon server.js

现在,当您对server.js进行更改时,nodemon将自动检测到此情况,这意味着您只需刷新浏览器即可查看它们-避免了应用程序的停止/启动。


实时服务器

另一方面,实时服务器的功能则大不相同。您应该在全球范围内安装它:

npm install -g live-server

然后,当您在目录中启动它时,它将尝试提供index.html文件(如果存在)(否则它将显示目录的内容)。

停留在my-app目录中,创建一个index.html文件:

touch index.html

然后添加以下内容:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Test</title>
    <style></style>
  </head>
  <body>
    <p>Hello, World!</p>
    <script></script>
  </body>
</html>

通过在终端窗口中输入live-server来启动实时服务器,并且http://127.0.0.1:8080应该在浏览器中打开。

现在尝试更改HTML文件中的消息,或添加一些样式或一些JavaScript。进行任何更改并保存后,浏览器将刷新,您将在页面中看到这些更改。

这本身是非常实用的,但是您无法通过手动刷新浏览器来完成任何操作。当您发出Ajax请求,不使用协议就包含文件,或者如果直接打开HTML文件而做会被浏览器的安全策略阻止的其他任何事情时,此类包就变得必不可少。