这是APISream(基于java的快速私有服务模块部署软件)的配套的js-SDK开发框架,可以帮助开发者快速部署自己的服务模块。
npm install apistream-sdk --save-dev
npx apistream --help
# 输出:
# -d --deploy 部署
# -u --ui 启动后台监控界面
# -i --init 初始化配置文件
# -h --help 显示帮助信息
# -r --remove <project> 删除云端项目
若需要多次使用,推荐 使用
npm exec apistream -h
,pnpm apistream -h
,或者添加命令到package.json使用, 此文仅用npx用作示例
以下操作会在当前目录下生成一个名为apistream.config.js
的配置文件,请根据实际情况修改其中的配置项。
npx apistream --init
import { defineAPIStreamConfig } from 'apistream-sdk'
export default defineAPIStreamConfig({
projectName: 'myProject', // unique name for your project
url: 'http://localhost:8080', // your apistream server side service url
path: 'apistream/src/', // your apistream clound modules' code path
output: 'src/apistream/', // path for the code that call your apistream clound modules
key: '', /**
key to access your apistream server side service,
it should be the same with the key in your apistream
server side service "java -jar apistream.jar --key <Key_value>"
*/
disableOverwrite: true, // if you turn on the overwrite mode,
// the apistream will not overwrite the
// project that already exists in the server
// path, and will throw an error.
})
在你的配置的path
目录下创建.js
文件或者目录,我们将以每一个文件作为一个上下文隔离的云模块
。
每个云模块
可以包含多个API函数,普通函数,变量。模块内部可以进行有限次的互相调用。
云模块
之间不能相互产生依赖关系。
// 编写云函数,或者云函数使用的工具函数、变量等
export default {
const :{
// 这里存放需要放在云端使用的变量,工具函数等只参与模块内的运算的变量
},
var: {
// 这里填写模块配置变量,例如配置模块的并行数量
}
// 这里存放需要放在云端并部署的函数
}
如果你只需要导出多个个API函数而不需要其他的变量或配置,你也可以这样导出
export const a = () => {
}
export function b (){
}
我们为您提供了灵活简单的SQL系统调用,示例如下
import { DataBase } from 'apistream-sdk';
export const testfn=()=>{
console.log(DataBase.selectList('select * from user where id=1'))
}
返回示例:
{
consoleOutput: '{"sql":"select * from user where id\\u003d1","result":[{"name":"小李","id":1,"age":18,"email":"admin1@baomidou.com"}]}\n' +
'1\n',
result: 'test name'
}
在项目根目录执行以下命令,云函数会自动部署到APIStream软件中,并为您生成对应的调用函数到output
目录。
npx apistream -d
在output
目录下你可以在相同位置找到对应的调用函数,您可以就像调用一个本地函数异步一样调用云模块服务,并传入必要的参数。
相比传统开发模式,我们APIStream自动部署套件可为您节省:
- 需要多次快速部署的时间
- 网络请求编写与管理
- 自动服务日志
- 序列化/反序列化
- 后端脚手架搭建
- 云端接受参数处理
- 云端接受结果处理
编写一个云模块test.js
,并在apistream.config.js
中配置path
为apistream/src/
,output
为src/apistream/
。
// apistream/src/test.js
const configFn = () =>{
return add(3,2)
}
const cloudV = 1
const add = (a,b) => {
return a+b+cloudV+afterValue
}
const afterValue = 4
export default {
configFn, // 云函数,可以导出并在本地项目中调用
const :{
add, // 云端工具函数,只能在云端使用,本地无法调用
cloudV, // 云端变量,只能在云端使用,本地无法调用
afterValue // 云端变量,只能在云端使用,本地无法调用
},
var: {
// 这里填写模块配置变量,例如配置模块的并行数量
MaxConcurrency: 10, // 最大并发数量
}
}
// 如果想要获取智能提示,请导入defineModule函数
export default defineModule({
//
})
执行以下命令部署云模块:
npx apistream -d
生成的调用函数test.js
会自动生成到src/apistream/
目录下。
然后你可以在你的项目中导入并调用test.js
中的configFn
函数。
// src/index.js
import {configFn} from './apistream/test.js'
configFn().then(res => {
console.log(res.data) // 输出 10
})
npx apistream --ui
如果可以的话,请保证package.json
设置type
为module
,以便于使用ES6模块语法和编译检查,尽管它不一定影响运行效果。