当前位置: 首页 > Web前端 > CSS

Serverless实战——函数计算+Typescript实践

时间:2023-03-31 00:51:16 CSS

前言首先介绍一下本文中出现的几个重要概念:函数计算(FunctionCompute):函数计算是一个事件驱动的服务。通过函数计算,用户无需管理Server等运行状况,只需编写代码上传即可。函数计算以弹性伸缩的方式准备计算资源和运行用户代码,用户只需为实际代码运行消耗的资源付费。有关更多信息,请参阅函数计算。AliyunServerlessVSCodeExtension:是AliyunServerless产品FunctionCompute的VSCode插件,结合了FunctionComputeFuncraft:Funcraft工具和FunctionComputeSDK。是一款VSCode图形化开发、调试、运行函数计算资源的工具。.Funcraft:Funcraft是一款支持Serverless应用部署的工具,可以帮助您轻松管理函数计算、API网关、日志服务等资源。它通过一个资源配置文件(template.yml)协助您开发、构建和部署。Fun的更多文档参考。目标本文打算以一个简单的Serverless函数计算项目为例,尝试使用typescript+nodejs进行开发,搭建一个简单的工程项目,实现以下小目标:使用typescript编写业务代码,可以使用ServerlessVSCode插件通过插件在本地调试typescript代码将项目代码部署到云端项目示例图实践一、前期准备(可选)在VSCode插件市场搜索AliyunServerless插件并安装.按照aliyun/fun中的教程安装配置Docker。前期准备的目的是为了方便开发调试。目前,阿里云函数计算提供了命令行工具Funcraft和图形化的VSCode插件。安装Docker的目的是在本地模拟线上环境进行调试。如果想快速浏览nodejs+typescript项目的构建,可以跳过。2.环境搭建配置tsconfig.json执行tsc--init,会在项目根目录下生成tsconfig.json配置tsconfig.json内容:{"compilerOptions":{"target":"es5","module":"commonjs","noImplicitAny":true,"outDir":"./dist/","sourceMap":true},"include":["./src"]}![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAIRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICAEAOw=="点击拖动移动")配置package.json执行npminit,会在项目根目录目录生成package.json配置package.json内容为:{"name":"fc-ts","version":"1.0.0","description":"FunctionCompute+Typescript","main":"index.js","scripts":{"compile":"tsc-p./"}}![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAAEAAAICRAEAOw=="点击并拖动tomove")编写业务代码,新建src/index.ts文件,内容如下:exportconsthandler=(event:any,context:any,回调:(err:any,data:any)=>void,)=>{console.log(newString(event));回调(空,'你好世界');}![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAAEAAAICRAEAOw=="点击并拖动移动")ts代码作为js代码在Terminal中输入npmruncompile完成后,在项目根目录下会有一个dist文件夹和dist/index.js、dist/index.js.map文件至此,我们就搭建好了一个普通的typescript项目带有tsconfig.json、package.json、src源代码目录和dist结果目录。其中,src/index.ts文件中定义了一个handler方法,符合函数计算中函数入口方法的定义。3.结合函数计算,在项目根目录下新建index.js文件。文件内容如下:const{handler}=require('./dist/index');module.exports.handler=(event,context,callback)=>{handler(event,context,callback);这里又定义了一个handler方法,调用编译后的js文件中的handler方法。在项目根目录新建一个template.yml文件。文件内容如下:ROSTemplateFormatVersion:'2015-09-01'Transform:'Aliyun::Serverless-2018-04-03'Resources:demo:#servicenameType:'Aliyun::Serverless::Service'Properties:Description:ThisisFCservicefunc01:#functionnameType:'Aliyun::Serverless::Function'Properties:Handler:index.handlerRuntime:nodejs8CodeUri:./MemorySize:1024Timeout:15我们的资源(也就是,函数计算中的服务和功能)在文件中定义。详情请参考:趣味规范文档。如果你安装了ServerlessVSCode插件,可以试试插件的智能提示,如图:至此,我们已经成功将typescript项目集成到函数计算中了。我们的方法是:将typescript源代码文件放在src目录下,将编译后的js文件放在dist目录下,最后在项目根目录下写入index.js文件,文件中的handler处理函数调用编译后的索引文件入口函数。4.本地调试部署本地调试在index.js和src/index.ts文件中插入一些断点。点击VSCode左侧栏的FunctionCompute图标,展开本地资源树,点击函数名右侧的debug按钮即可调试ts源码。部署一个函数,点击VSCode左侧栏中的函数计算图标,在本地资源树中右击函数名,点击部署按钮,即可远程调用该函数。点击远程资源树中函数名右侧的调用按钮。Typescript,但是通过本文的方法,你可以在本地开发调试的时候使用Typescript。接下来总结一下这种实践方式的优缺点:优点使用Typescript进行开发,支持本地调试Typescript代码项目部署到云端后,可以在云端查看Typescript源码。本地调试不足需要在项目根目录下的index.js文件中插入断点。更新代码后,需要手动将Typescript代码编译成js代码,然后再调试部署。本文介绍的实用方法只是一种思路,欢迎大家提供其他思路。原文链接本文为阿里云内容,未经许可不得转载。