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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 对于稍微大型的 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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
28天前
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
28天前
|
JavaScript 前端开发 IDE
深入理解TypeScript:提升JavaScript开发的利器
【10月更文挑战第8天】 深入理解TypeScript:提升JavaScript开发的利器
28 0
|
9天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
36 1
|
13天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
33 1
|
13天前
|
运维 监控 Serverless
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
26 1
|
23天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
24天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
56 3
|
25天前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、降低成本、零运维成本、高效资源利用、自动扩展、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效解决方案。
47 1
|
30天前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现出显著优势
【10月更文挑战第6天】Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、成本效益、零运维成本、高效资源利用、自动扩展能力、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效、灵活的解决方案。
46 4
|
30天前
|
监控 Serverless 云计算
探索Serverless架构:开发的未来趋势
【10月更文挑战第5天】Serverless架构,即无服务器架构,正逐渐成为云计算领域的热点。它允许开发者构建和运行应用程序而无需管理底层服务器。本文介绍了Serverless架构的基本概念、核心优势及挑战,并展示了其在事件驱动编程、微服务架构和数据流处理等场景中的应用。通过优化冷启动、使用外部存储等实战技巧,开发者可以更好地利用Serverless架构提升开发效率和应用性能。随着技术的成熟,Serverless将在未来软件开发中扮演重要角色。

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    无影云桌面