functions 使用指南
说明
在一个 vuepress 项目中
在默认配置下,如果你 packages.json
{
"scripts": {
"serve": "vuepress dev src",
"build": "vuepress build src"
}
}
即, 你的 sourceDir
为 src
目录, 那么,你的functions目录则为 src/.vuepress/functions
。
在这个目录下,直属的 ts/js
文件,均为一个个独立的 function
, 不包括这个目录下的子目录。
src/.vuepress/functions
├─my_function.ts # 这是一个function 通过 /api/my_function 调用
├─verify_phone.ts # 这是一个 function, 通过 /api/verify_phone 调用
└─utils # 子目录中的不会被识别为function
└─index.ts
在一个 vuepress plugin 项目中
以官方仓库插件的基本组织结构为例
src/node
├─functions
│ ├─my_function.ts # 这是一个function 通过 /api/my_function 调用
│ ├─verify_phone.ts # 这是一个 function, 通过 /api/verify_phone 调用
│ └─utils # 子目录中的不会被识别为function
│ └─index.ts
├─index.ts
└─plugin.ts # 在这个文件中配置了 directory 为 path.resolve(__dirname, 'functions')
依赖
如果你是使用 typescript 作为开发语言,那么可以引入 @netlify/functions
模块提供类型检查支持。
如果你的 function 依赖其他的第三方模块,请在配置在项目package.json
的 dependencies
字段中作为生产依赖。
如果你是通过插件提供 function,请在 插件的使用指南中 说明,你的插件function依赖了哪些第三方模块, 提醒使用者安装这些依赖。
function
functions
通过 导出一个 handler
函数 提供给 云函数服务调用。
一个 function 的内容一般如下:
异步函数
在异步函数中,支持直接返回一个对象作为 响应体报文
import { Handler } from '@netlify/functions' export const handler: Handler = async function (event, context) { // do something return { statusCode: 200, body: JSON.stringify({}) } }
非异步函数
在非异步函数中,通过
callback
函数参数返回响应体报文import { Handler } from '@netlify/functions' export const handler: Handler = function (event, context, callback) { // do something callback({ statusCode: 200, body: JSON.stringify({}) }) }
示例
plugin-page-collection 页面访问次数插件