将酒吧/子添加到Express应用程序中。
#javascript #网络开发人员 #教程 #cloudcomputing

在这篇博客文章中,我们将更深入地研究如何脚打新的云应用程序,并利用

的主题,队列和存储桶等资源

基本工具和服务

要遵循并成功完成本指南,您需要安装和设置以下工具和服务:

设置您的项目

我们的第一步将是初始化一个新的一硝化项目,然后将Express.js添加到它。打开终端并执行以下命令:

nitric new
? What is the name of the project? express-example
? Choose a template: official/JavaScript - Starter

# Navigate into your newly created project directory and install dependencies
cd express-example
yarn install

# Add express to your project
yarn add express

现在,在您首选的代码编辑器中打开项目。您的项目结构应类似于以下内容:

├── functions
│   ├── hello.js
├── node_modules
│   ├── ...
├── .gitignore
├── index.js
├── nitric.yaml
├── package.json
├── README.md
└── yarn.lock

您可能会注意到项目结构中的functions文件夹。默认情况下,Nitric预计您的应用程序将居住在此处的入口点代码。但是,该惯例是灵活的。您可以根据应用程序的要求对其进行修改。

对于本指南,让我们用一个名为app.js的单个入口点文件替换functions文件夹。执行以下命令以实现这一目标:

rm ./functions/hello.js
touch ./functions/app.js

接下来,我们将添加一些明确的代码来启动我们的应用程序:

import express from 'express'
import { http } from '@nitric/sdk'

const app = express()

app.get('/', (req, res) => {
  res.send('Hello World!')
})

http(app)

在上面的代码段中,如果您熟悉Express.js,您会注意到我们没有使用app.listen。相反,我们采用了Nitric http函数。此功能处理将应用程序绑定到每个环境的适当端口的责任,从而消除了对app.listen的需求。

使用此设置,您的Express.js应用程序可以进行本地测试。默认情况下,该项目带有一个dev脚本,您可以运行该脚本以启动本地开发服务器:

yarn dev

如果您的设置正确,则输出的一部分应该类似:

SUCCESS  Started Local Services! (1s)
Local running, use ctrl-C to stop

Proxy | Endpoint
8000  | http://localhost:4001

Dev Dashboard | http://localhost:49152

现在,您的Express应用程序正在本地运行,一氮用作代理。该应用程序可在port 4001上找到,您可以使用另一个终端或Web浏览器对其进行测试。在另一个终端中运行以下命令:

curl localhost:4001
Hello World!

使用一氮用云资源来增强您的express.js应用程序

使用Basic Express.js应用程序启动和运行,让我们探索如何用一氮扩展其功能。例如,我们将添加一个pub/sub主题,该主题将使我们能够在后台执行任务,同时仍保持快速的HTTP API响应时间。

使用以下代码更新您的app.js文件:

import express from 'express'
import { http, topic } from '@nitric/sdk'

const app = express()
const workRequests = topic('work-requests').for('publishing')

app.get('/', async (req, res) => {
  await workRequests.publish()
  res.send('Hello World!')
})

http(app)

在上面的更新代码中,我们介绍了我们的应用程序发布的workRequests主题。我们还创建了一个新功能来处理背景工作:

touch functions/worker.js

worker.js文件将包含以下代码:

import { topic } from '@nitric/sdk'

const sleep = (ms) => new Promise((res) => setTimeout(res, ms))

topic('work-requests').subscribe(async (ctx) => {
  console.log('Starting new request')
  // Wait for 2 seconds to simulate a long-running task
  await sleep(2000)
  console.log('Request processed')
})

当您在浏览器中导航到localhost:4001时,您应该注意到控制台输出两行,它们之间的延迟两秒钟,这表明了模拟的工作请求:

Starting new request
Request processed

您应该注意,即使背景工作者需要两秒钟才能完成,HTTP请求GET: /仍然立即返回。

部署到云

硝酸盐简化了将应用程序部署到云的过程。它否定了对手动云部署过程的需求或使用Terraform之类的外部解决方案。

为了促进部署,我们将创建一个stack。一个堆栈提供一氮,其中包括项目的特定云实例所需的配置,例如提供商和区域。

让我们为AWS创建一个新的堆栈:

nitric stack new
? What do you want to call your new stack? dev
? Which Cloud do you wish to deploy to? aws
? select the region us-east-1

nitric stack new命令将创建一个名为nitric-dev.yaml的文件,包含:

name: dev
provider: nitric/aws@0.30.0
region: us-east-1

现在,您可以使用以下命令将应用程序部署到云:

nitric up

成功部署后,您可以使用up命令输出中提供的API网关URL访问云中的express.js + nitric应用程序。

完成云部署后,可以使用nitric down命令退役。

进一步探索

现在,您了解了基础知识,请考虑探索其他可用的一量子资源来增强您的应用程序。这些资源包括:

只能使用几行代码添加到您的应用程序中。

快乐编码!