通过 create-react-app 几乎专门用 React 工作,我已经非常被宠坏了,它有一个npm的构建实用程序,它使我的项目部署到静态网站托管超级简单(github页面/激增),最后只给我原始的html / css / js。
但最近有一位朋友找我,无论他在哪所学校,他都教过他如何使用 Express 编写应用程序,但没有关于如何部署它们的内容。我暂时在Heroku上获得了他的代码,但他可能只用静态托管更好(因为该网站非常简单,只使用express for routing / features没有服务器端代码或交互)
有什么像create-react-app的快递构建功能吗?这种非常简单的事情绝对不需要整个节点服务器的开销。
答案 0 :(得分:1)
我认为你可能会混淆一些事情,所以让我们从一开始就确保我们使用相同的定义。
节点是一个JavaScript引擎,由V8引擎(专为Chrome构建)提供支持。它基本上是一个JavaScript解释器。
Express 是一个构建于Node之上的软件包,它基于Node的http
库构建。它是(一个)Node与nginx
或apache
的等价物。
Heroku 是一个基于云的Web主机,它具有动态扩展的能力(如AWS,它建立在它之上)。
说“Express不需要一个完整的节点服务器”并没有多大意义。他只需要一台可以运行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
,这真的很奇怪,所以不要这样做)
答案 1 :(得分:1)
我在非常简单的网站上有同样的感觉,所以我已将我的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"
]
}
}
}
}
然后使用wb-compile
CLI命令将动态应用程序转换为静态应用程序。
P.S。之后我刚刚将静态页面部署到AWS.S3