前言
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考。
Aliyun Serverless VSCode Extension: 是阿里云 Serverless 产品
函数计算 Function Compute 的 VSCode 插件,该插件结合了
函数计算 Funcraft:Funcraft 工具以及
函数计算 SDK ,是一款 VSCode 图形化开发调试函数计算以及操作函数计算资源的工具。
Funcraft:Funcraft 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档参考。
目标
本文打算以一个简单的 Serverless 函数计算项目为例,尝试使用 typescript + nodejs 进行开发,搭建一个简单的工程项目,实现如下小目标:
-
使用 typescript 编写业务代码
-
可以通过 Serverless VSCode 插件本地调试 typescript 代码
-
通过插件将项目代码部署到云端
项目示例图
实践
1. 前期准备 (可选)
-
在 VSCode 插件市场中搜索
Aliyun Serverless 插件并安装。
-
根据
aliyun/fun 中的教程安装并配置 Docker。
前期准备的目的是为了方便开发和调试,目前阿里云 Function Compute 提供了命令行工具 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" ] }
-
配置 package.json
-
执行
npm init,将会在项目根目录生成
package.json
-
配置
package.json 内容为:
{ "name": "fc-ts", "version": "1.0.0", "description": "Function Compute + Typescript", "main": "index.js", "scripts": { "compile": "tsc -p ./" } }
-
编写业务代码
-
新建 src/index.ts 文件,编写内容如下:
export const handler = ( event: any, context: any, callback: (err: any, data: any) => void, ) => { console.log(new String(event)); callback(null, 'hello world'); }
-
将 ts 代码编译为 js 代码
-
在 Terminal 中输入
npm run compile
-
完成后在项目根目录会有
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: # service name Type: 'Aliyun::Serverless::Service' Properties: Description: This is FC service func01: # function name Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8 CodeUri: ./ MemorySize: 1024 Timeout: 15
该文件中对我们的资源(即函数计算中的服务以及函数)进行了定义,具体内容可以参考:
Fun 规范文档。
如果安装了 Serverless VSCode 插件,那么可以尝试下插件的智能提示,效果如图:
至此,我们就成功的将 typescript 项目结合到了函数计算中。我们的做法是:将 typescript 源码文件放置在 src 目录,将编译后的 js 文件放置在 dist 目录,最后在项目根目录中编写了 index.js 文件,文件中的 handler 处理函数调用了编译后 index 文件的入口函数。
4. 本地调试与部署
-
本地调试
-
在
index.js 以及
src/index.ts 文件中插入一些断点。
-
点击 VSCode 左侧栏目中的函数计算图标,展开本地资源树
-
点击函数名右侧的调试按钮,即可调试 ts 源代码。
-
部署函数
-
点击 VSCode 左侧栏目中的函数计算图标
-
右键本地资源树中的函数名,点击部署按钮
-
远端调用函数
-
点击远端资源树中函数名右侧的调用按钮
总结
目前阿里云 Function Compute 没有原生支持 Typescript,但是通过本文的方式可以做到在本地开发调试时使用 Typescript。接下来总结下这种实践方法的优点和不足:
优点
-
使用 Typescript 进行开发
-
支持本地调试 Typescript 代码
-
项目部署到云端后,可以在云端查看 Typescript 源码
不足
-
本地调试时需要在项目根目录的 index.js 文件中插入一个断点。
-
更新代码后,在调试以及部署前需要手工进行一次 Typescript 代码到 js 代码的编译。
本文中介绍的实践方式只是一种思路,欢迎大家提供其他的思路。
原文链接
本文为阿里云内容,未经允许不得转载。
编辑推荐:
下一篇:
相关推荐
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Serverless 实战 —— 函数计算 + Typescript 实践
- 分布式事务 GTS 的价值和原理浅析
分布式事务 GTS 的价值和原理浅析
26-03-03
- 从零开始入门 | Kubernetes 中的服务发现与负载均衡
从零开始入门 | Kubernetes 中的服务发现与负载均衡
26-03-03
- 原来华为手机不亮屏也能看时间,点击这个按钮,30秒即可开启
原来华为手机不亮屏也能看时间,点击这个按钮,30秒即可开启
26-03-03
- 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
26-03-03
- 等保2.0正式实施,阿里云发布全国首个《阿里公共云用户等保2.0合规能力白皮书》
- 阿里云小程序营收3步曲:一年发展3家加盟+2家直营
阿里云小程序营收3步曲:一年发展3家加盟+2家直营
26-03-03
- 小米手机用户要知道的手机技巧,能大大提高使用体验,米粉都知道
小米手机用户要知道的手机技巧,能大大提高使用体验,米粉都知道
26-03-03
- 周末修裤子-生产遭遇ORA-00600 [kokasgi1]的恢复过程
周末修裤子-生产遭遇ORA-00600 [kokasgi1]的恢复过程
26-03-03
- 接入支付宝小程序能力,人人租机实现从 0-100 增长
接入支付宝小程序能力,人人租机实现从 0-100 增长
26-03-03
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考。 Aliyun Serverless VSCode Extension: 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了 函数计算 Funcraft:Funcraft 工具以及 函数计算 SDK ,是一款 VSCode 图形化开发调试函数计算以及操作函数计算资源的工具。 Funcraft:Funcraft 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档参考。
目标本文打算以一个简单的 Serverless 函数计算项目为例,尝试使用 typescript + nodejs 进行开发,搭建一个简单的工程项目,实现如下小目标:
使用 typescript 编写业务代码 可以通过 Serverless VSCode 插件本地调试 typescript 代码 通过插件将项目代码部署到云端
项目示例图![]()
实践
1. 前期准备 (可选) 在 VSCode 插件市场中搜索 Aliyun Serverless 插件并安装。![]()
根据 aliyun/fun 中的教程安装并配置 Docker。前期准备的目的是为了方便开发和调试,目前阿里云 Function Compute 提供了命令行工具 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" ] } 配置 package.json 执行 npm init,将会在项目根目录生成 package.json 配置 package.json 内容为:{ "name": "fc-ts", "version": "1.0.0", "description": "Function Compute + Typescript", "main": "index.js", "scripts": { "compile": "tsc -p ./" } } 编写业务代码 新建 src/index.ts 文件,编写内容如下:export const handler = ( event: any, context: any, callback: (err: any, data: any) => void, ) => { console.log(new String(event)); callback(null, 'hello world'); } 将 ts 代码编译为 js 代码 在 Terminal 中输入 npm run compile 完成后在项目根目录会有 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: # service name Type: 'Aliyun::Serverless::Service' Properties: Description: This is FC service func01: # function name Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8 CodeUri: ./ MemorySize: 1024 Timeout: 15 该文件中对我们的资源(即函数计算中的服务以及函数)进行了定义,具体内容可以参考: Fun 规范文档。 如果安装了 Serverless VSCode 插件,那么可以尝试下插件的智能提示,效果如图:
至此,我们就成功的将 typescript 项目结合到了函数计算中。我们的做法是:将 typescript 源码文件放置在 src 目录,将编译后的 js 文件放置在 dist 目录,最后在项目根目录中编写了 index.js 文件,文件中的 handler 处理函数调用了编译后 index 文件的入口函数。
4. 本地调试与部署 本地调试 在 index.js 以及 src/index.ts 文件中插入一些断点。 点击 VSCode 左侧栏目中的函数计算图标,展开本地资源树 点击函数名右侧的调试按钮,即可调试 ts 源代码。![]()
部署函数 点击 VSCode 左侧栏目中的函数计算图标 右键本地资源树中的函数名,点击部署按钮![]()
远端调用函数 点击远端资源树中函数名右侧的调用按钮![]()
总结目前阿里云 Function Compute 没有原生支持 Typescript,但是通过本文的方式可以做到在本地开发调试时使用 Typescript。接下来总结下这种实践方法的优点和不足:优点
使用 Typescript 进行开发 支持本地调试 Typescript 代码 项目部署到云端后,可以在云端查看 Typescript 源码不足
本地调试时需要在项目根目录的 index.js 文件中插入一个断点。 更新代码后,在调试以及部署前需要手工进行一次 Typescript 代码到 js 代码的编译。本文中介绍的实践方式只是一种思路,欢迎大家提供其他的思路。原文链接本文为阿里云内容,未经允许不得转载。
编辑推荐:
下一篇:相关推荐
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Serverless 实战 —— 函数计算 + Typescript 实践
- 分布式事务 GTS 的价值和原理浅析
分布式事务 GTS 的价值和原理浅析
26-03-03- 从零开始入门 | Kubernetes 中的服务发现与负载均衡
从零开始入门 | Kubernetes 中的服务发现与负载均衡
26-03-03- 原来华为手机不亮屏也能看时间,点击这个按钮,30秒即可开启
原来华为手机不亮屏也能看时间,点击这个按钮,30秒即可开启
26-03-03- 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
26-03-03- 等保2.0正式实施,阿里云发布全国首个《阿里公共云用户等保2.0合规能力白皮书》
- 阿里云小程序营收3步曲:一年发展3家加盟+2家直营
阿里云小程序营收3步曲:一年发展3家加盟+2家直营
26-03-03- 小米手机用户要知道的手机技巧,能大大提高使用体验,米粉都知道
小米手机用户要知道的手机技巧,能大大提高使用体验,米粉都知道
26-03-03- 周末修裤子-生产遭遇ORA-00600 [kokasgi1]的恢复过程
周末修裤子-生产遭遇ORA-00600 [kokasgi1]的恢复过程
26-03-03- 接入支付宝小程序能力,人人租机实现从 0-100 增长
接入支付宝小程序能力,人人租机实现从 0-100 增长
26-03-03
