首先介绍下在本文出现的几个比较重要的概念:html
函数计算(Function Compute): 函数计算是一个事件驱动的服务,经过函数计算,用户无需管理服务器等运行状况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它经过一个资源配置文件(template.yml),协助您进行开发、构建、部署操做。Fun 的更多文档 参考。
2.0 版本的 Fun,在部署这一块作了不少努力,并提供了比较完善的功能,可以作到将云资源方便、平滑地部署到云端。但该版本,在本地开发上的体验,还有较多的工做要作。因而,咱们决定推出 Fun Init 弥补这一处短板。
Fun Init: Fun Init 做为 Fun 的一个子命令存在,只要 Fun 的版本大于等于 2.7.0,便可以直接经过fun init
命令使用。Fun Init 工具能够根据指定的模板快速的建立函数计算应用,快速体验和开发函数计算相关业务。官方会提供经常使用的模板,用户也能够自定本身的模板。
阿里云函数计算是事件驱动的全托管计算服务。经过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。借助于函数计算,您能够快速构建任何类型的应用和服务,无需管理和运维。并且,您只须要为代码实际运行所消耗的资源付费,代码未运行则不产生费用。node
当咱们写 nodejs 函数时,函数每每会依赖不少第三方依赖,这样致使函数代码少则几十兆,多则上百兆。代码包太大,会有以下问题:webpack
另外,函数计算目前只支持 nodejs8 和 nodejs6 这两个版本,这两版本不支持 es6 语法,可是咱们可能已经写习惯了 es6 语法该怎么办呢?git
熟悉 nodejs 的同窗应该知道,项目工程化管理工具 webpack,咱们彻底能够经过 webpack 将 es6 代码编译成 es5,而且剪切打包压缩成一个 js 文件,而后将该 js 文件上传到函数计算中运行。es6
我这里提供了一个 fun 模板,帮助快速搭建一个函数计算 nodejs 项目骨架,支持 es6 代码编译成 es5,而且剪切打包压缩成一个 js 文件,而后将该 js 文件上传到函数计算中运行。操做做步骤以下:github
1. 安装 nodeweb
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash nvm install 8
2. 安装 fun 工具docker
npm install @alicloud/fun -g
fun 工具的某些子命令可能会用到 docker,因此你须要安装好 docker,具体参考文档:Fun 安装教程。npm
3. 经过 fun 模板生成项目骨架api
fun init -n demo https://github.com/muxiangqiu/fc-skeleton-nodejs8.git
项目生成好后,在根目录下有个 README.md 文件,阅读该文件能够帮你快速了解项目骨架为你作了什么,以及相关的命令。具体详情:README.md。
4. 安装依赖
cd demo # 切换到项目根下面,后面的全部命令,都是在项目根下面执行 npm install
注意:有少数特殊 npm 模块的安装可能会依赖当前系统环境,为了能正确安装函数运行时的系统环境的 npm 模块,能够经过 fun install
命令来实现,好比 puppeteer,具体参考:开发函数计算的正确姿式 —— 安装第三方依赖。
5. 编译
# 生产编译 npm run build # 开发编译(这种编译方式不会进行代码混淆,而且生成 source map 信息,方便开发调试) npm run dev
6. 本地运行函数
fun local invoke demo/demo
7. 运行调试函数
运行调试以前,请先用 npm run dev
命令编译源码,而后以调试的方式运行函数:
fun local invoke -d 3000 demo
程序会提示你输入函数的 event,若是你不须要输入,能够按 ctrl+d
跳过输入,接下来,并不会继续往下执行,只有 vs code 的链接上来后,程序才会继续执行。如何经过 vs code 连上来,并开始调试呢?以下图所示:
8. 部署函数到云端
部署函数的时候须要用到 AK 等下信息,能够经过 fun config
来配置,若是配置过请忽略,部署函数命令以下:
fun deploy
经过函数项目工程化,可让咱们的函数代码体积变得更加小,代码可能由 100 MB 左右降到 KB 级别,不论是冷启动延时,仍是代码的更新上传效率,都有了极大的提高。另外,你也能够根据你本身的业务场景定义你本身的 fun 模板。
本文为云栖社区原创内容,未经容许不得转载。