使用Express在5分钟内创建和部署Node.js应用程序

使用Express在5分钟内创建和部署Node.js应用程序

Express 是世界上使用最多的 Node.js 框架,它使开发人员能够使用 JavaScript 创建后端网络服务器。该框架提供了后端开发人员所需的大部分功能,简化了路由和响应 Web 请求的过程。

我们已经为你准备了一份关于 Express.js 的指南,所以这篇实践文章将向你展示如何使用它。本教程介绍如何使用 Express.js 创建和部署一个 Node.js 应用程序示例。

如何使用 Express.js 快速创建应用程序

本教程演示了如何创建一个网络应用程序,该程序可以接收对端点的请求,使用请求中的参数调用数据库,并以 JSON 格式从数据库返回信息。

前提条件

要学习本教程,请确保您的计算机上安装了以下工具:

Express 应用程序生成器

您可以使用我们的 Express.js 指南中概述的流程将 Express 添加到现有的 Node 应用程序中,但如果您要从头开始,还有一个更快捷的选择:Express 生成器

来自 Express.js 的官方 Express 生成器是一个 Node 包,它允许你生成一个新的应用程序骨架。首先为您的应用程序创建一个文件夹,然后运行 npx 命令(Node.js 8.2.0 中提供)即可完成生成:

mkdir express-application
npx express-generator

成功生成后,终端会显示创建的文件夹/文件列表,以及安装依赖项和运行应用程序的命令。运行以下命令安装依赖项:

npm install

接下来,启动网络服务器:

DEBUG=myapp:* npm start

骨架应用程序有一个预建的索引路由,可渲染一个基本主页。你可以访问 localhost:3000 在浏览器中查看。

探索骨架 Express 应用程序

在首选代码编辑器中打开 Express 应用程序后,你会发现一个基本结构构成了网络应用程序的骨架。

/
|-- /node_modules
|-- /public
|-- /routes
|-- index.js
|-- users.js
|-- /views
|-- error.jade
|-- index.jade
|-- layout.jade
|-- app.js
|-- package.json
  • node_modules:此目录存储项目的所有已安装依赖项和库。
  • public:包含 CSS、JavaScript、图片等静态资产。这些文件将直接提供给客户端浏览器。
  • routes:包含负责定义各种路由和处理来自不同 URL 的请求的文件。
  • views:包含服务器渲染以创建用户界面的模板或视图。这里的 error.jadeindex.jadelayout.jade 是用 Jade 模板语言编写的模板。它们有助于结构化并向用户呈现动态内容。
  • app.js:该文件通常作为 Express 应用程序的入口点。在这里配置服务器、设置中间件、定义路由以及处理请求和响应。
  • package.json:该文件包含应用程序的元数据。它有助于管理依赖关系和项目配置。

了解路由处理

在 Express 应用程序中,routes 目录是将路由定义为独立文件的地方。主要路由通常称为索引路由,位于 routes/index.js 文件中。

该索引路由处理 GET 请求,并以框架生成的 HTML 网页作为响应。下面的代码片段说明了如何处理 GET 请求,以呈现一个基本的欢迎页面:

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;

如果将 res.render() 函数修改为 res.send() ,响应类型就会从 HTML 变为 JSON:

var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.send({ key: 'value' });
});
module.exports = router;

为了扩展功能,在同一文件中添加了另一个路由,引入了一个接受参数的新端点。该代码片段演示了应用程序如何处理不同端点上的流量、提取参数并以 JSON 格式响应其值:

/* GET a new resource */
router.get('/newEndpoint', function(req, res, next) {
res.send({ yourParam: req.query.someParam });
});

localhost:3000/newEndpoint?someParam=whatever 发送 GET 请求,将产生包含字符串 “whatever” 的 JSON 输出。

在 Postman 中向本地运行的应用程序发出 GET 请求

在 Postman 中向本地运行的应用程序发出 GET 请求。

注:必须重新启动网络服务器才能有效执行新的更改。

Express 和 Kinsta 应用程序托管

从你的电脑向你的电脑发出网络请求固然不错,但只有离开本地主机,网络开发才算完成。幸运的是,即使需要数据库,Kinsta 也能让应用程序轻松部署到网络上。

现在,让我们通过集成数据库功能,并将应用程序和数据库部署到网络上,实现从任何计算机访问,来深入探讨如何扩展应用程序的功能。

在将 Express 应用程序部署到 Kinsta 的应用程序托管服务之前,将应用程序的代码和文件推送到您选择的 Git 提供商(BitbucketGitHubGitLab)至关重要。确保在应用程序根目录创建 .gitignore 文件并包含 node_modules ,以防止将这些文件推送到 Git 提供商。

设置好仓库后,请按照以下步骤将 Express 应用程序部署到 Kinsta:

  1. 登录或创建账户,查看 MyKinsta 面板。
  2. 通过 Git 提供商授权 Kinsta。
  3. 单击左侧边栏上的 Applications ,然后单击 Add application
  4. 选择要部署的版本库和分支。
  5. 为应用程序指定一个唯一的名称,并选择 Data center location
  6. 接下来配置构建环境。选择标 Standard build machine,并为该演示选择推荐的 Nixpacks 选项。
  7. 使用所有默认配置,然后单击 “Create application“。

Kinsta 可与 Express 应用程序生成器配合使用!完成这些步骤后,应用程序将自动开始构建和部署过程。

部署界面将提供 Kinsta 部署应用程序的 URL。您可以添加 /newEndpoint?someParam=whatever 来测试本文前一部分中构建的端点。

如何在 Express 应用程序中添加数据库

对于大多数生产级应用程序来说,拥有一个数据库是必不可少的。

下面介绍如何在 Kinsta 上创建数据库:

1. 导航到 MyKinsta 面板侧边栏上的 Databases 部分。

2. 单击 Create a database。输入名称并选择数据库类型,配置数据库详细信息。

3. 选择 PostgreSQL 选项。Database usernamepassword 将自动生成:

 

添加新数据库的 MyKinsta 数据库配置步骤

添加新数据库的 MyKinsta 数据库配置步骤。

4. 选择与托管 Express 应用程序相同的 Data center location,并配置所需的大小。

5. 确认付款信息并单击 Create database

成功创建数据库后:

  1. 点击访问数据库详细信息。在 “Overview” 页面中,导航至 “Internal connections” 部分。
  2. 选择适当的应用程序。
  3. 选中 Add environment variables to the application 选项。
  4. 单击 Add connection,连接新创建的数据库和应用程序。

接下来,复制新创建数据库的连接字符串,用数据库工具连接数据库。任何 SQL 连接工具都可以,但本演示使用的是 Beekeeper。打开应用程序,点击从 URL 导入,粘贴连接字符串,然后点击导入。这样就可以在刚刚创建的 Kinsta 托管数据库上执行 SQL。

接下来,使用数据库工具对托管数据库执行一些 SQL 语句,创建一个只有一个条目的基本表:

CREATE TABLE "States"
( id integer CONSTRAINT states_pk PRIMARY KEY,
state_name varchar(100),
capital varchar(100),
state_bird varchar(100),
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
"updatedAt" TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
INSERT INTO "States"
VALUES(1, 'ohio', 'columbus', 'cardinal');

将以下数据库软件包添加到项目中:

npm install sequelize pg

sequelize 依赖项是 Node.js 的 ORM,而 pg 则作为 PostgreSQL 客户端,实现 Node.js 应用程序与 PostgreSQL 数据库之间的交互。

接下来,编写应用代码,接受带有 id 参数的 GET 请求,并返回与该 id 相关联的数据库信息。为此,请相应修改  index.js 文件:

var express = require('express');
var router = express.Router();
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize(process.env.CONNECTION_URI, {
dialect: 'postgres',
protocol: 'postgres',
});
const State = sequelize.define('State', {
// Model attributes are defined here
state_name: {
type: DataTypes.STRING,
allowNull: true,
unique: false
},
capital: {
type: DataTypes.STRING,
allowNull: true,
unique: false
},
state_bird: {
type: DataTypes.STRING,
allowNull: true,
unique: false
},
}, {
// Other model options go here
});
async function connectToDB() {
try {
sequelize.authenticate().then(async () => {
// await State.sync({ alter: true });
})
console.log('Connection has been established successfully.');
} catch (error) {
console.error('Unable to connect to the database:', error);
}
}
connectToDB();
/* GET a new resource */
router.get('/state', async function(req, res, next) {
const state = await State.findByPk(req.query.id);
if (state) {
res.send(state)
} else {
res.status(404).send("state not found");
}
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
/* GET a new resource */
router.get('/newEndpoint', function(req, res, next) {
res.send({ yourParam: req.query.someParam });
});
module.exports = router;

提交代码更改并将其推送到 Git 仓库。然后,在 Kinsta 上手动重新部署或等待自动部署。

现在,当你以 id=1 查询 /states 端点时,你将从数据库中收到一个状态。

向 MyKinsta 托管的全功能应用程序发出 GET 请求

向 MyKinsta 托管的全功能应用程序发出 GET 请求。

这就是全部内容!您可以在 GitHub 上查看完整的项目代码

小结

本文演示了 Express 框架如何让创建和部署 Node.js 应用程序变得快速而简单。只需几个简单的步骤,您就可以使用 Express 生成器创建一个新的应用程序。

在 Node.js 应用程序开发中使用 Express 框架的强大功能和简便性是显而易见的。使用 Kinsta 或者大部分云服务器提供商,您可以将 Express 和 Node.js 带来的动力带入项目的部署阶段,而无需浪费时间进行配置。

评论留言