将现有 Express 节点应用发布到静态站点的最简单方法是什么?



我几乎完全通过create-react-appReact合作,它有一个用于npm的构建实用程序,这使得将我的项目部署到静态Web托管超级容易(github页面/surge),最后只是给了我原始HTML/CSS/js。

但最近一个朋友找到我,无论他在哪所学校,他们都教过他很多关于如何只用Express编写应用程序的知识,但没有关于如何部署它们的知识。我暂时在 Heroku 上设置了他的代码,但他可能最好只使用静态托管(因为该网站非常简单,并且仅使用快速路由/功能没有服务器端代码或交互)

有没有像 create-react-app 的构建功能这样的表达功能?这个令人难以置信的简单的东西绝对不需要全节点服务器的开销。

我在非常简单的网站上工作也有同样的感觉,所以我将我的express应用程序转移到了在引擎盖下使用相同的表达式的web-boost方法。

您唯一需要做的就是创建web-boost.json配置文件,如下所示

{
"routes": {
"/": {
"view": "index.twig",
"vars": {
"title": "Home page",
"greeting": "Hello world!"
},
"assets": {
"js/index.min.js": [
"js/index.js"
]
}
},
"/user": {
"view": "user.twig",
"vars": {
"title": "User's page",
"greeting": "Hi John Doe!"
},
"assets": {
"css/user.min.css": [
"styles/bootstrap.min.css",
"styles/user.scss"
]
}
}
}
}

然后使用 CLI 命令wb-compile将动态应用程序转换为静态应用程序。

附言之后,我刚刚将静态页面部署到 AWS。S3

我认为您可能混淆了一些事情,所以让我们从头开始,以确保我们使用相同的定义。

Node是一个JavaScript引擎,由V8引擎(为Chrome构建)提供支持。它基本上是一个JavaScript解释器。

Express是一个构建在 Node 之上的包,它建立在 Node 的http库之上。它是 Node 的nginxapache的等价物之一。

Heroku是一个基于云的Web主机,具有动态扩展的能力(如AWS,它是建立在

AWS之上的)。说"Express不需要成熟的Node服务器"并没有多大意义。他只需要一个可以运行Node应用程序的服务器。Node服务器的大小可能会有所不同,实际上他可能不需要一个很大的服务器。

Heroku可能是一个非常合适的主人。他不必使用扩展或任何东西,并且在那里部署Node应用程序相当容易。

许多其他流行的主机也可以支持Node。如果他们为您提供终端访问权限和安装应用程序的能力,他们几乎可以肯定。

据我所知,没有任何像create-react-app这样的程序可以启动express应用程序的新实例。这可能是因为它们的设置非常简单。对于一个基本的快速应用程序来说,只需两个文件就足够了:package.json和您的快速文件(我将其命名为index.js.

package.json:

{
"name": "my-app",
"dependencies": {
"express": "latest"
}
}

index.json:

const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('<h1>Hello World</h1>').end());
app.listen(8888, () => console.log('Listening on port 8888'));

将其部署到可以运行 Node 的任何服务器并运行命令npm install; node index.js将启动它运行。

很多时候,你实际上会创建一个express服务器来提供你的 Web 应用程序,通常是用 React 编写的(这是我每天工作的场景)。create-react-app只是设置一个结构相当固执己见的项目的快速方法,但并不是使用 React 的唯一方法。

(从技术上讲,你可以在没有package.json的情况下逃脱,但你必须在服务器上手动运行npm install express,这真的很奇怪,所以不要这样做)。

最新更新