用 serverless 与 typescript 开发第一个 Koa 应用

本文涉及的产品
简介: 对于稍微大型的 Node 应用,typescript 已经是标配,它为 javascript 提供了强类型的铠甲,有效提高了代码质量。这里是一个结合 ts 及 koa 快速部署到腾讯云函数计算中的模板。仓库如下shfshanyue/serverless-template-zh: 中国云厂商 serverless framework 模板及示例 (更快的访问速度)如果你只想搭建一个博客使用 Netlify 托管静态网站与持续集成使用 AliOSS 部署及加速你的静态网站Github Actions 持续集成简介及实践使用 Serverless Framework 开发第一个云函

对于稍微大型的 Node 应用,typescript 已经是标配,它为 javascript 提供了强类型的铠甲,有效提高了代码质量。

这里是一个结合 ts 及 koa 快速部署到腾讯云函数计算中的模板。仓库如下

shfshanyue/serverless-template-zh: 中国云厂商 serverless framework 模板及示例 (更快的访问速度)
如果你只想搭建一个博客
使用 Netlify 托管静态网站与持续集成
使用 AliOSS 部署及加速你的静态网站
Github Actions 持续集成简介及实践
使用 Serverless Framework 开发第一个云函数
使用 serverless Component 开发第一个 Koa 应用
快速使用
使用本模板快速创建应用

$ serverless install --url github。com/shfshanyue/serverless-template-zh/tree/master/tencent-koa-ts --name koa-server
复制代码
在项目创建早期尽可能对 package 进行升级,这里使用了 npm-check-updates

$ npm run ncu
复制代码
在测试环境中进行开发

$ npm run dev
复制代码
文件结构
.
├── dist/ # 编译文件,及最终需要上传的目录
├── node_modules/
├── app.ts # 入口文件,必须采用 app 的命名
├── package.json
├── package-lock.json
├── Readme.md
├── serverless.yaml # serverless 配置文件
└── tsconfig.json
复制代码
app.ts
app.ts 即是你业务逻辑的入口文件,你可以像其他 Koa Application 一样自由组织路由,业务逻辑,Model 等。

import Koa from 'koa'

const app = new Koa()

app.use(async (ctx, next) => {
ctx.body = hello, path: '${ctx.request.path}'
})

app.listen(3333, () => { console.log('Listening 3333') })

module.exports = app
复制代码
serverless component
serverless component 可以认为是把 faas 及 baas 资源集合的进一步抽象,该项目采用了 @serverless/tencent-koa

koa-app:
component: '@serverless/tencent-koa'
inputs:

region: ap-guangzhou
functionName: koa-function
runtime: Nodejs10.15
code: ./dist
functionConf:
  timeout: 60
  memorySize: 128
apigatewayConf:
  protocols:
    - https
  environment: release

复制代码
部署
部署之前需要准备好生产环境所需的 node_modules 以及编译完成的 js 资源。

装包

$ npm install typescript

编译成 js

$ npm run build

打包生产环境的包,并移至 dist 目录

predeploy: npm ci --production && rsync -avz node_modules dist/

$ npm run predeploy

部署到腾讯云

$ sls
koa-function [████████████████████████████████████████] 100% | ETA: 0s | Speed: 314.98k/

koa-app:

functionName:        koa-function
functionOutputs:
  ap-guangzhou:
    Name:        koa-function
    Runtime:     Nodejs10.15
    Handler:     serverless-handler.handler
    MemorySize:  128
    Timeout:     60
    Region:      ap-guangzhou
    Namespace:   default
    Description: This is a function created by serverless component
region:              ap-guangzhou
apiGatewayServiceId: service-dture22u
url:                 service-dture22u-1257314149.gz.apigw.tencentcs。com/release/
cns:                 (empty array)

11s › koa-app › done
复制代码
从日志可以看出,部署到腾讯云只需 11s,还是很快速

Http 调用
在本地直接使用 npm run dev,在本地端口调试。而在生产环境,使用 sls 部署后买手机游戏日志中提供的 url 进行 http 调用

$ curl service-dture22u-1257314149.gz.apigw.tencentcs。com/release/
hello, path: '/'#
复制代码
缺点
在开始之前,稍微提一下缺点:

部署麻烦,需要先编译 ts 至 js,并且仅上传生产环境需要的 node_modules (全部上传速度过慢)
在本地不支持 log 及 metrics,需要转至腾讯云控制台查看
由于部署过程稍微复杂,可以考虑重写一个关于 ts 的 serverless component

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
26天前
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
23 0
|
26天前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
26天前
|
运维 Serverless 调度
Serverless 应用引擎常见问题之事件中心看不着如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
33 4
|
26天前
|
JSON Serverless API
Serverless 应用引擎常见问题之query参数无法取到上一步传输过来的jjson参数如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
156 3
|
26天前
|
监控 Serverless 对象存储
Serverless 应用引擎常见问题之用ECI部署Traefik时设置如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
231 2
|
26天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
329 3
|
26天前
|
机器学习/深度学习 人工智能 Cloud Native
Serverless 应用引擎常见问题之改配置变慢如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
349 2
|
26天前
|
监控 关系型数据库 Serverless
Serverless 应用引擎常见问题之工作流这执行输出通过jsonpath过滤如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
352 3
|
3天前
|
人工智能 Serverless 数据处理
利用阿里云函数计算实现 Serverless 架构的应用
阿里云函数计算是事件驱动的Serverless服务,免服务器管理,自动扩展资源。它降低了基础设施成本,提高了开发效率,支持Web应用、数据处理、AI和定时任务等多种场景。通过实例展示了如何用Python实现图片压缩应用,通过OSS触发函数自动执行。阿里云函数计算在云计算时代助力企业实现快速迭代和高效运营。
3 0
|
26天前
|
关系型数据库 Serverless 分布式数据库
Serverless 应用引擎常见问题之在抖音快手小程序上使用如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
22 3

相关产品

  • 函数计算