forked from x/ContextOS
opt portal
This commit is contained in:
parent
1fe76aa8ef
commit
f7eff930b8
@ -15,8 +15,11 @@ style flex
|
||||
style column
|
||||
field "" web.code.inner style output width 500px
|
||||
shell `
|
||||
mkdir -p demo/src; cd demo
|
||||
vi src/main.go
|
||||
|
||||
go mod init demo
|
||||
go get shylinux.com/x/ice
|
||||
go run src/main.go
|
||||
|
||||
open http://localhost:9020
|
||||
|
@ -1,12 +1,12 @@
|
||||
title "Contexts"
|
||||
|
||||
spark `contexts 是一个功能完备的工具系统。`
|
||||
spark `Contexts 是一个功能完备的工具系统。`
|
||||
order `
|
||||
contexts 是一个工具箱,内置了很多实用的工具,开箱即用,每个工具即可以在命令行中使用,又可以在网页中使用。
|
||||
contexts 使用 golang 开发,完全跨平台,支持 Linux、macOS、Windows 等,一套工具箱,即可所有平台都可以使用。
|
||||
contexts 是一个工具框架,成千上万种工具,可以自由选择,快速构建自己专属的工具系统。
|
||||
contexts 也是一个开发工具箱,集成了开发常用的工具,如编辑器、编译器,实现自举,可快速开发出新工具模块。
|
||||
contexts 构建完成后只有 20M 大小,方便传输与存储。
|
||||
contexts 支持启动脚本,每个工具都可以灵活配置。
|
||||
contexts 内置数据库,不需要外部数据库,即可以快速开发出一个完整的服务端应用。
|
||||
Contexts 是一个工具箱,内置了很多实用的软件工具,开箱即用,每个工具既可以在命令行中使用,又可以在网页中使用。
|
||||
Contexts 是一个工具框架,成千上万种工具,可以自由选择和组合,可快速构建自己专属的工具系统。
|
||||
Contexts 是一个开发工具箱,集成了开发软件常用的工具,如编辑器、编译器,完全实现自举,可快速开发出新软件工具。
|
||||
Contexts 是一个微服务框架,支持远程调用,支持分布式、支持自动组建集群。
|
||||
Contexts 使用 Golang 开发,完全跨平台,支持 Linux、macOS、Windows 等,一套工具箱,所有平台都可以使用。
|
||||
Contexts 构建完成后只有一个文件,只有 20M 大小,方便传输与存储。
|
||||
Contexts 支持脚本、支持模板、支持内存版文件系统、支持内存版数据库,可以快速开发出一个完整的服务端应用。
|
||||
`
|
||||
|
@ -1,5 +1,5 @@
|
||||
chapter "创建模块"
|
||||
spark `如果框架自带的模块,或是网上找不到需要的功能模块,可以自行开发。contexts 自带了完整的前后端框架与工具,可快速开发出完整的功能模块。`
|
||||
spark `如果框架自带的模块,或是网上找不到需要的功能模块,可以自行开发。Contexts 自带了完整的前后端框架与工具,可快速开发出完整的功能模块。`
|
||||
|
||||
section "添加代码"
|
||||
spark `将 demo 替换成所需的模块名,创建目录并添加如下代码。`
|
||||
|
@ -1,6 +1,6 @@
|
||||
title "创建项目"
|
||||
|
||||
spark `当 contexts 自带的工具,无法满足使用需求时,可以基于 contexts 快速创建出新的项目。
|
||||
spark `当 Contexts 自带的工具,无法满足使用需求时,可以基于 Contexts 快速创建出新的项目。
|
||||
|
||||
`
|
||||
chapter "创建项目"
|
||||
@ -35,7 +35,7 @@ go build -o bin/ice.bin src/main.go
|
||||
`
|
||||
|
||||
chapter "添加模块"
|
||||
spark `contexts 所有功能,都是模块化开发。所以完全独立,可自由的组合与选择。只需要在需要的地方 import 一下即可,自动加载与注册。如下添加英汉词典的模块。`
|
||||
spark `Contexts 所有功能,都是模块化开发。所以完全独立,可自由的组合与选择。只需要在需要的地方 import 一下即可,自动加载与注册。如下添加英汉词典的模块。`
|
||||
|
||||
spark inner src/document/started/development/main.go
|
||||
|
||||
|
@ -13,22 +13,23 @@ navmenu `
|
||||
"网页式" web.shy
|
||||
|
||||
"基础功能" using/
|
||||
"笔记文档" note.shy
|
||||
"任务计划" plan.shy
|
||||
"编辑器" vimer.shy
|
||||
"任务计划" plan.shy
|
||||
"笔记文档" note.shy
|
||||
"应用桌面" desktop.shy
|
||||
"创建空间" space.shy
|
||||
"组建集群" cluster.shy
|
||||
"认证授权" auth.shy
|
||||
|
||||
"应用管理" managing/
|
||||
"目录结构" config.shy
|
||||
"启动配置" config.shy
|
||||
"启动参数" config.shy
|
||||
"环境变量" config.shy
|
||||
"日志文件" config.shy
|
||||
"进程控制" config.shy
|
||||
"应用数据" config.shy
|
||||
"目录结构" dir.shy
|
||||
"启动配置" init.shy
|
||||
"启动参数" boot.shy
|
||||
"环境变量" env.shy
|
||||
"日志文件" log.shy
|
||||
"进程控制" signal.shy
|
||||
"数据目录" var.shy
|
||||
"资源目录" usr.shy
|
||||
|
||||
"功能开发" development/
|
||||
"创建项目" project.shy
|
||||
|
@ -1,8 +1,10 @@
|
||||
title "快速下载"
|
||||
spark `contexts 使用 golang 开发,所以编译后只有一个 bin 文件。直接下载即可使用。`
|
||||
spark `为了方便下载并快速启动,可以使用如下命令。自动识别出操作系统与处理器类型,下载对应的 bin 文件,并自动启动服务。`
|
||||
spark `点击下面命令,即可直接复制命令。`
|
||||
spark `Contexts 使用 Golang 开发,所以编译后只有一个 bin 文件,直接下载即可使用。`
|
||||
spark `为了方便下载并快速启动,可以使用如下命令。
|
||||
自动选择 wget 或 curl 命令,
|
||||
自动识别出操作系统与处理器类型,下载对应的 bin 文件,并自动启动服务。`
|
||||
spark `点击下面命令,即可直接复制命令,打开终端执行即可。`
|
||||
web.code.publish contexts
|
||||
spark warning `contexts 有组建集群的功能,为了快速组建集群,这条命令也带了连接远程服务器的功能。`
|
||||
spark warning `Contexts 有组建集群的功能,为了快速组建集群,这条命令也带了连接远程服务器的功能。`
|
||||
spark warning `如果远程服务器是自己搭建的,或是可信的服务,可直接执行。`
|
||||
spark warning `或通过配置文件,设置远程服务的权限。或直接在上面命令后面加上参数 <code>'dev ""'</code> 直接禁用远程服务。`
|
||||
spark warning `或通过配置文件,设置远程服务的权限。或直接在上面命令后面加上参数 <code>dev ""</code> 直接禁用远程服务。`
|
||||
|
@ -1,16 +1,41 @@
|
||||
title "源码编译"
|
||||
spark `如果想了解 contexts 的源码与原理,可以直接下载源码,自己编译后再启动。`
|
||||
spark `编译 contexts 需要提前安装好以下软件`
|
||||
spark `如果想了解 Contexts 的源码与原理,可以直接下载项目源码,自己编译后再启动。编译 Contexts 需要提前安装好以下几个软件`
|
||||
refer `
|
||||
make https://www.gnu.org/software/make/
|
||||
git https://git-scm.com/download
|
||||
golang https://golang.google.cn/dl/
|
||||
`
|
||||
web.code.publish source
|
||||
|
||||
spark `执行 <code>etc/miss.sh</code> 脚本,会自动下载所需要的依赖,并编译项目。`
|
||||
shell `
|
||||
cd contexts
|
||||
source etc/miss.sh
|
||||
`
|
||||
|
||||
spark `执行 etc/miss.sh 脚本,会自动下载所需要的依赖,并编译项目。`
|
||||
chapter "项目组成"
|
||||
spark `Contexts 前后端框架和核心模块全部自研,只有少部分功能使用到了外部代码,并且随时会干掉,最终不依赖任何外部项目,做到完全自举。`
|
||||
|
||||
section "项目组成"
|
||||
spark `Contexts 主要由以下几个项目组成。`
|
||||
order `
|
||||
前端框架 https://shylinux.com/x/volcanos
|
||||
后端框架 https://shylinux.com/x/icebergs
|
||||
脚本库 https://shylinux.com/x/intshell
|
||||
工具库 https://shylinux.com/x/toolkits
|
||||
图标库 https://shylinux.com/x/icons
|
||||
打包库 https://shylinux.com/x/ice
|
||||
`
|
||||
|
||||
section "外部依赖"
|
||||
spark `Contexts 后端只依赖三个外部库。`
|
||||
order `
|
||||
https://shylinux.com/x/websocket
|
||||
https://shylinux.com/x/go-qrcode
|
||||
https://shylinux.com/x/go-git
|
||||
`
|
||||
spark `Contexts 前端只使用了三个外部库。`
|
||||
order `
|
||||
bootstrap-icons
|
||||
html2canvas
|
||||
xterm
|
||||
`
|
||||
|
@ -1,17 +1,11 @@
|
||||
title "命令交互"
|
||||
spark `contexts 提供了命令接口,所有的功能模块,都可以通过命令行来使用。`
|
||||
spark `Contexts 提供了命令接口,所有的功能模块,都可以通过命令行来使用。`
|
||||
|
||||
spark `tcp.host 查看网卡信息`
|
||||
shell `
|
||||
./bin/ice.bin tcp.host
|
||||
` with echo
|
||||
shell `./bin/ice.bin tcp.host` with echo
|
||||
|
||||
spark `cli.system 执行本机命令`
|
||||
shell `
|
||||
./bin/ice.bin cli.system pwd
|
||||
` with echo
|
||||
shell `./bin/ice.bin cli.system pwd` with echo
|
||||
|
||||
spark `nfs.dir 查看目录列表`
|
||||
shell `
|
||||
./bin/ice.bin nfs.dir
|
||||
` with echo
|
||||
shell `./bin/ice.bin nfs.dir` with echo
|
||||
|
@ -1,33 +1,34 @@
|
||||
title "网页交互"
|
||||
spark `contexts 提供了网页接口,所有的功能模块,都可以通过网页来使用。`
|
||||
spark `Contexts 提供了网页接口,所有的功能模块,都可以通过网页来使用。`
|
||||
|
||||
chapter "启动服务"
|
||||
spark `通过网页使用 contexts 前,需要先启动 web 服务器。`
|
||||
spark `通过网页使用 Contexts 前,需要先启动 web 服务器。Contexts 自带了多种启动方式。`
|
||||
|
||||
section "直接启动"
|
||||
spark `serve 命令直接启动服务。`
|
||||
shell `./bin/ice.bin serve start`
|
||||
spark `默认的服务端口是 9020,打开 <a href="http://localhost:9020">http://localhost:9020</a> 即可通过网页使用所有的功能。`
|
||||
spark `默认的服务端口是 9020,打开 <a>http://localhost:9020</a> 即可通过网页使用所有的功能。`
|
||||
spark `服务启动后,会在终端上,启动一个交互式的 shell,可执行任何命令。因为 contexts 不支持密码登录,所以初始用户的权限,可以在终端上分配。`
|
||||
|
||||
section "守护启动"
|
||||
spark `如果需要进程常驻,可以使用 forever 守护命令。在开发过程中非常有用,每次执行 make 命令进行编译与构建时,都会发送信号自动重启服务进程。`
|
||||
spark `forever 启动守护进程后,会自动启动服务进程,当服务进程意外停止后,会重新拉起服务。`
|
||||
spark `如果需要进程常驻,可以使用 forever 守护命令。在开发过程中非常有用,每次执行 make 命令进行编译与构建时,都会发送信号自动重启服务进程。
|
||||
forever 启动守护进程后,才会自动启动服务进程,当服务进程意外停止后,会重新拉起服务。`
|
||||
shell `./bin/ice.bin forever start`
|
||||
|
||||
section "容器启动"
|
||||
spark `contexts 使用 golang 开发,完全跨平台,支持 Linux、macOS、Windows 等。`
|
||||
spark `并且 contexts 只有一个 bin 文件,运行时生成的所有文件,也只在当前目录。所以只要删除这个目录,就不会在系统上留下任何痕迹。`
|
||||
spark `但有时,也会用到容器部署,在容器中,也只需要下载一个 bin 文件即可,惟一的区别是需要登录认证。`
|
||||
spark `因为 contexts 默认会开启 IP 认证授权,只有通过本机访问的请求,才会免登录。`
|
||||
spark `但通过容器启动或远程服务器启动的 contexts,访问时都需要登录认证。`
|
||||
spark `Contexts 使用 Golang 开发,完全跨平台,支持 Linux、macOS、Windows 等。
|
||||
并且 Contexts 只有一个 bin 文件,运行时生成的所有文件,也只在当前目录。所以只要删除这个目录,就不会在系统上留下任何痕迹。`
|
||||
spark `但有时,也会用到容器部署,在容器中,也只需要下载一个 bin 文件即可,惟一的区别是需要登录认证。
|
||||
因为 Contexts 默认会开启 IP 认证授权,只有通过本机访问的请求,才会免登录。
|
||||
但通过容器启动或远程服务器启动的 Contexts,访问时都需要登录认证。`
|
||||
|
||||
chapter "使用方式"
|
||||
spark `在 contexts 中,所有的工具,即可以添加到导航栏,通过结构化的组织起来,也可以搜索框被快速查找出来,还可以通过 URL 地址,直接在单独的网页中使用。`
|
||||
spark `在 Contexts 中,所有的工具,既可以添加到导航栏,通过结构化的组织起来,也可以搜索框被快速查找出来,还可以通过 URL 地址,直接在单独的网页中使用。`
|
||||
|
||||
section "导航式"
|
||||
spark `contexts 启动后,可直接访问 <a href="http://localhost:9020/chat/portal/">http://localhost:9020/chat/portal/</a>,即可打开后台管理系统。`
|
||||
spark `后台管理系统导航栏的内容,都是在 src/main.js 文件中定义的。如需自定义,直接此文件修改即可。`
|
||||
spark `contexts 也提供了界面添加功能,点击创建后,依次添加群组、添加应用、添加工具,即可动态自动定义导航栏。`
|
||||
spark `Contexts 启动后,可直接访问 <a>http://localhost:9020/chat/portal/</a>,即可打开后台管理系统。
|
||||
后台管理系统导航栏的内容,都是在 src/main.js 文件中定义的。如需自定义,直接此文件修改即可。
|
||||
Contexts 也提供了界面添加功能,点击创建后,依次添加群组、添加应用、添加工具,即可动态自动定义导航栏。`
|
||||
iframe "http://localhost:9020"
|
||||
|
||||
section "搜索式"
|
||||
@ -35,5 +36,8 @@ spark `默认后台管理系统,会提供一个搜索框,所有的工具都
|
||||
iframe "http://localhost:9020?_search=tcp.host"
|
||||
|
||||
section "命令式"
|
||||
spark `所有的工具可以通过 URL 直接访问使用,如工具 web.team.plan 的 URL 是 <a href="http://localhost:9020/chat/cmd/web.team.plan">http://localhost:9020/chat/cmd/web.team.plan</a>,界面如下所示`
|
||||
spark `所有的工具可以通过 URL 直接访问使用,如工具 web.team.plan 的 URL 是 <a>http://localhost:9020/chat/cmd/web.team.plan</a>。`
|
||||
iframe "http://localhost:9020/chat/cmd/web.team.plan"
|
||||
|
||||
chapter "登录认证"
|
||||
spark `如果在其它设备上,访问本机的服务,都是需要认证的。前端网页在检测到没有登录,会展示一个登录页面。复制下面的授权命令,在后台执行,即可授权登录。`
|
||||
|
39
src/document/started/managing/boot.shy
Normal file
39
src/document/started/managing/boot.shy
Normal file
@ -0,0 +1,39 @@
|
||||
title "启动参数"
|
||||
spark `Contexts 在命令行终端中,有三种使用方式,命令式、交互式、守护式。`
|
||||
|
||||
chapter `命令式`
|
||||
spark `命令式用来执行一次性命令`
|
||||
shell `./bin/ice.bin tcp.host` with echo
|
||||
|
||||
chapter `交互式`
|
||||
spark `交互式,会启动一个常驻功能和一个交互shell,可以多次执行命令。`
|
||||
|
||||
section `启动服务`
|
||||
shell `./bin/ice.bin serve start dev "" port 9030 nodename demo`
|
||||
spark `serve 启动服务的参数如下`
|
||||
order `
|
||||
dev 指定上级服务节点。
|
||||
proto 指定服务启动的协议 http 或 https
|
||||
host 指定服务启动时绑定的本机 IP 地址
|
||||
port 指定服务启动的端口号,默认 9020
|
||||
nodename 指定本机节点名
|
||||
username 指定根用户名
|
||||
usernick 指定根用户的昵称
|
||||
`
|
||||
|
||||
section `启动空间`
|
||||
shell `./bin/ice.bin space dial dev "http://localhost:9020" name demo`
|
||||
order `
|
||||
dev 指定服务节点。
|
||||
name 指定空间名。
|
||||
`
|
||||
|
||||
chapter `守护式`
|
||||
spark `将进程意外结束,或是编译时接收到信号,交互进程会直接结束。
|
||||
为了自动重启,开发了 forever 命令。forever 可以用来启动任何进程,当进程停止时的返回 0,forever 也会退出,但返回其它值时,会重新拉起进程。`
|
||||
|
||||
section `启动服务`
|
||||
shell `./bin/ice.bin forever start serve`
|
||||
|
||||
section `启动空间`
|
||||
shell `./bin/ice.bin forever start space dev "http://localhost:9020"`
|
138
src/document/started/managing/dir.shy
Normal file
138
src/document/started/managing/dir.shy
Normal file
@ -0,0 +1,138 @@
|
||||
title "目录结构"
|
||||
spark `Contexts 运行时常用的目录与文件如下。`
|
||||
chain `
|
||||
contexts
|
||||
src
|
||||
main.go
|
||||
main.js
|
||||
main.shy
|
||||
version.go
|
||||
binpack.go
|
||||
template/
|
||||
document/
|
||||
etc
|
||||
init.shy
|
||||
local.shy
|
||||
exit.shy
|
||||
bin
|
||||
ice.bin
|
||||
var
|
||||
conf
|
||||
data
|
||||
file
|
||||
log
|
||||
tmp
|
||||
proxy
|
||||
usr
|
||||
publish
|
||||
install
|
||||
local
|
||||
export
|
||||
daemon
|
||||
image
|
||||
repos
|
||||
work
|
||||
node_modules
|
||||
`
|
||||
|
||||
chapter "源码目录 src/"
|
||||
spark `所有的代码与文档,都保存这个目录里。`
|
||||
|
||||
section "main.go"
|
||||
spark `main.go 是主程序的入口文件,在 Contexts 的项目中,所有功能都是模块化的,通过 init 函数隐式注册,所以只需要在 main.go 文件中添加一行 import 即可引入模块。
|
||||
所以 main.go 只剩下一行代码<code>ice.Run()</code>。`
|
||||
spark inner src/main.go
|
||||
|
||||
section "main.js"
|
||||
spark `main.js 是前端的入口文件,前端的代码也是全部模块化,并且是后端驱动。所以 main.js 只需要定义导航栏的功能列表即可。现在只支持两级目录。支持图标,可自行引入图标库。`
|
||||
spark inner src/main.js
|
||||
|
||||
section "main.shy"
|
||||
spark `main.shy 是文档入口,文档工具默认打开的文件。Contexts 对笔记文档提供了非常多的支持,因为笔记文档是用户使用最频率也是最方便的工具。`
|
||||
spark inner src/main.shy
|
||||
|
||||
section "version.go"
|
||||
spark `version.go 是项目源码及编译相关的信息。`
|
||||
spark inner src/version.go
|
||||
|
||||
section "binpack.go"
|
||||
spark `binpack.go 是打包文件,在编译构建时,Contexts 会把 js、css、shy 等文件,直接打包进执行程序中。
|
||||
进程运行时,直接在内存里构建了一个文件系统。`
|
||||
|
||||
section "template/"
|
||||
spark `template/ 是模板目录,比如生成网页、生成笔记时,会用到很多格式化的文本,用户可以随时修改这些模板文件,满足定制化的需要。`
|
||||
|
||||
section "document/"
|
||||
spark `document/ 是文档目录,官网展示的页面与文档,都保存在这里,可以随时修改。`
|
||||
spark `其中 src/document/index.shy 定义标题栏。src/document/xxx/index.shy 定义导航栏,其它文件都是普通的文档文件。`
|
||||
|
||||
chapter "配置目录 etc/"
|
||||
spark `Contexts 在运行中用到的配置文件都保存在这个目录。`
|
||||
|
||||
section "init.shy"
|
||||
spark `init.shy 是 Contexts 的启动脚本。一些定制化的配置可以直接添加到这个文件中。如权限管理、事件触发、桌面定制、编译配置等`
|
||||
|
||||
section "local.shy"
|
||||
spark `etc/ 目录中的其它配置文件,都会打包进程序文件中向外发布。只有 local.shy 会被忽略,所以如果配置中有密码之类的敏感信息,可以保存在这个文件中。`
|
||||
|
||||
section "exit.shy"
|
||||
spark `exit.shy 是 Contexts 在服务停止前,执行的脚本,如一些运行数据的需要保存。`
|
||||
|
||||
chapter "程序目录 bin/"
|
||||
spark `bin/ice.bin 就是 Contexts 的程序文件,ice 是 icebergs 的缩写,因为后端框架叫冰山架,寓意是后端功能非常丰富庞大,但平时只能看到冰山一角。`
|
||||
|
||||
chapter "数据目录 var/"
|
||||
section "conf/"
|
||||
spark `Contexts 实现了一种内存版的数据库,每个工具,都会自动创建配置管理与数据存储,数据的读写、保存、维护全部托管给框架,不需要开发者专门去注意。`
|
||||
spark `在服务进程退出时,会将内存版的数据库中的所有数据,都会保存到这个目录。在服务重新启动时,会再加载到内存。`
|
||||
|
||||
section "data/"
|
||||
spark `Contexts 数据库的数据默认是在内存中,但数据量超过一定大小时,将一部分不常用的数据保存磁盘中的 ./var/data/ 目录里,当这些数据被访问时,会直接读写磁盘。`
|
||||
|
||||
section "file/"
|
||||
spark `有些文件类的数据,大小超过512B,会直接保存到这个目录里,在内存里只保存一个文件名。`
|
||||
|
||||
section "log/"
|
||||
spark `log/ 日志文件的目录`
|
||||
order `
|
||||
bench.log 运行日志
|
||||
error.log 错误日志
|
||||
debug.log 调试日志
|
||||
watch.log 监控日志
|
||||
boot.log 启动日志
|
||||
ice.pid 进程ID
|
||||
`
|
||||
|
||||
section "tmp/"
|
||||
spark `tmp/ 临时目录`
|
||||
|
||||
section "proxy/"
|
||||
spark `proxy/ 代理目录,当通过网页访问子空间或是子设备时,会用到一些文件,它们都会被缓存到这个目录里。`
|
||||
|
||||
chapter "资源目录 usr/"
|
||||
section "publish/"
|
||||
spark `发布资源,这个目录下的所有文件,都是对外公开的文件,如发布的程序文件和配置文件,用户可以自由的下载。`
|
||||
|
||||
section "install/"
|
||||
spark `安装一些软件与工具的目录。`
|
||||
|
||||
section "local/"
|
||||
spark `local 就是私有的一些数据,在数据读写时会有更多的权限检查,以保证用户的数据安全。`
|
||||
|
||||
section "local/export/"
|
||||
spark `local/export/ 就是配置和数据导出的目录,因为运行时的数据量比较大,当有一些重要的数据需要备份或是和代码一起提交,可导出到这个目录。`
|
||||
|
||||
section "local/daemon/"
|
||||
spark `启动的后台进程,以端口号作为目录名。`
|
||||
|
||||
section "local/image/"
|
||||
spark `图片视频等多媒体文件。`
|
||||
|
||||
section "local/repos/"
|
||||
spark `Contexts 自带了 Git-Server 的功能,可以直接提供代码仓库的服务,所有的仓库代码都保存到这个目录。`
|
||||
|
||||
section "local/work/"
|
||||
spark `子空间的目录,Contexts 创建的所有空间都在这个目录。`
|
||||
|
||||
section "node_modules/"
|
||||
spark `Contexts 的前端代码,用到的外部依赖库,会自动下载到这个目录。`
|
11
src/document/started/managing/env.shy
Normal file
11
src/document/started/managing/env.shy
Normal file
@ -0,0 +1,11 @@
|
||||
title "环境变量"
|
||||
spark `Contexts 也定义了一些环境变量。`
|
||||
order `
|
||||
ctx_shy
|
||||
ctx_com
|
||||
ctx_dev
|
||||
ctx_pod
|
||||
ctx_ops
|
||||
ctx_pid
|
||||
ctx_log
|
||||
`
|
26
src/document/started/managing/init.shy
Normal file
26
src/document/started/managing/init.shy
Normal file
@ -0,0 +1,26 @@
|
||||
title "启动配置"
|
||||
spark `Contexts 的启动配置都存保存在 etc/ 目录中,etc/init.shy 是启动配置,
|
||||
etc/local.shy 是启动配置拆分出来的一个文件,只存放一些关于密码类或本地的一些私有化配置,代码提交时会忽略这个文件。`
|
||||
|
||||
chapter "配置语法"
|
||||
spark `和文档文件格式完全一样,也是命令式语法,都是命令加参数。`
|
||||
spark `为了减少重复的命令前缀,可以用波浪线 ~ 加上模块名,切换模块,此后的命令,只用输入命令名即可。`
|
||||
|
||||
section "source"
|
||||
spark `source 命令可以用来引入其它的配置文件,当配置文件比较大时,可以拆分成多个文件,用 source 引入即可。`
|
||||
|
||||
section "config"
|
||||
spark `config 命令是通用的配置操作命令,可以用来读写所有工具的配置。`
|
||||
|
||||
chapter "常用配置"
|
||||
section "event"
|
||||
spark `event 是事件类的命令,监听某个事件然后执行指定的命令。如服务启动时、空间创建时、用户注册时等事件。`
|
||||
|
||||
section "role"
|
||||
spark `role 是角色管理,什么角色拥有什么权限,都可以在启动时配置。`
|
||||
|
||||
section "binpack insert"
|
||||
spark `binpack insert 是后端构建时,需要将哪些文件打包进 bin 文件中。`
|
||||
|
||||
section "webpack insert"
|
||||
spark `webpack insert 是前端打包构建时,需要将哪些文件打包进 html 文件中。`
|
3
src/document/started/managing/log.shy
Normal file
3
src/document/started/managing/log.shy
Normal file
@ -0,0 +1,3 @@
|
||||
title "日志文件"
|
||||
|
||||
spark `Contexts 日志都保存在 ./log/ 目录下。`
|
5
src/document/started/managing/signal.shy
Normal file
5
src/document/started/managing/signal.shy
Normal file
@ -0,0 +1,5 @@
|
||||
title "进程控制"
|
||||
spark `Contexts 可以通过信号控制进程。`
|
||||
spark `在终端启动 Contexts 后,<code>Ctrl + C</code> 重启服务进程。<code>Ctrl + \\</code> 退出服务进程。`
|
||||
spark `执行 make 命令时,会发送 INT 信号,重启进程。`
|
||||
|
3
src/document/started/managing/usr.shy
Normal file
3
src/document/started/managing/usr.shy
Normal file
@ -0,0 +1,3 @@
|
||||
title "资源目录"
|
||||
spark `usr`
|
||||
|
2
src/document/started/managing/var.shy
Normal file
2
src/document/started/managing/var.shy
Normal file
@ -0,0 +1,2 @@
|
||||
title "数据目录"
|
||||
spark `var`
|
@ -1,5 +1,5 @@
|
||||
title "认证授权"
|
||||
spark `contexts 有多种认证方式,但就是坚决不支持密码。`
|
||||
spark `Contexts 有多种认证方式,但就是坚决不支持密码。`
|
||||
|
||||
chapter "自动认证"
|
||||
spark `服务启动时,会自动获取本机的用户名,来作为根用户,从本机发出的所有请求都会默认使用此用户,拥有所有操作的权限。
|
||||
@ -13,7 +13,7 @@ spark inner `
|
||||
` args "etc/local.shy"
|
||||
|
||||
chapter "授权认证"
|
||||
spark `contexts 并没有提供密码登录,因为密码是非常不安全,且会给用户添加很多负担。
|
||||
spark `Contexts 并没有提供密码登录,因为密码是非常不安全,且会给用户添加很多负担。
|
||||
所以在其它设备上,访问本机的服务,或是其他用户访问,就需要已经登录的用户来授权认证。`
|
||||
|
||||
section `授权登录`
|
||||
|
@ -1,27 +1,27 @@
|
||||
title "组建集群"
|
||||
spark `contexts 既可以在一台机器上,启动任意多个工作空间。也可以把多台机器组网到一起。在 contexts 看来,本机的工作空间,与其它设备上的工作空间是没有区别的,使用方式完全一样。`
|
||||
spark `Contexts 既可以在一台机器上,启动任意多个工作空间。也可以把多台机器组网到一起。在 Contexts 看来,本机的工作空间,与其它设备上的工作空间是没有区别的,使用方式完全一样。`
|
||||
spark `因为现在每个人都可能会有很多台电脑,比如笔记本、台式机、开发机、服务器、开发板等,每台设备上的软件都需要下载、安装、配置,还要不断的同步数据,这是一个非常复杂且浪费时间的事情。`
|
||||
spark `使用 contexts 就可以很方便的,管理起这么多种设备和软件。只需要构建一个 contexts 项目,选择自己的工具集合,就可以通过交叉编译,生成各种操作系统上可运行的软件。`
|
||||
spark `contexts 还会自动组网,将所有设备连接到一起。通过任意一台设备,都可以使用其它设备上的所有工具与数据。即使这些设备不在一起,比如公司的电脑和家里的电脑。`
|
||||
spark `使用 Contexts 就可以很方便的,管理起这么多种设备和软件。只需要构建一个 Contexts 项目,选择自己的工具集合,就可以通过交叉编译,生成各种操作系统上可运行的软件。`
|
||||
spark `Contexts 还会自动组网,将所有设备连接到一起。通过任意一台设备,都可以使用其它设备上的所有工具与数据。即使这些设备不在一起,比如公司的电脑和家里的电脑。`
|
||||
|
||||
chapter "启动服务"
|
||||
spark `contexts 服务启动时,默认的会启动集群的功能,本机的工作空间与其它机器的连接此服务的方式都是一样,惟一不同中的是,为了安全,子设备的名称是用 IP+Port,如需自定义需要认证授权后才行。`
|
||||
spark `Contexts 服务启动时,默认的会启动集群的功能,本机的工作空间与其它机器的连接此服务的方式都是一样,惟一不同中的是,为了安全,子设备的名称是用 IP+Port,如需自定义需要认证授权后才行。`
|
||||
shell `./bin/ice.bin forever start`
|
||||
|
||||
chapter "连接服务"
|
||||
spark `在另一台设备上,同样下载好 contexts,并启动服务,在启动命令后加上参数"dev xxx",指定需要连接的服务节点即可。`
|
||||
spark `在另一台设备上,同样下载好 Contexts,并启动服务,在启动命令后加上参数"dev xxx",指定需要连接的服务节点即可。`
|
||||
shell `./bin/ice.bin forever start dev "http://192.168.10.12:9020"`
|
||||
|
||||
chapter "访问子设备"
|
||||
spark `当子设备的服务起动成功,并连接上父设备后,就可以把子设备当成父设备的工作空间来使用。`
|
||||
section "打开子设备"
|
||||
spark `如果导航栏未定制,在左边导航栏中打开运维群 -> 应用,然后在右边工作区中,找到 space,即空间管理的工具。`
|
||||
spark `<a href="http://localhost:9020/chat/portal/?river=operate&storm=web&index=space"></a>`
|
||||
spark `<a>http://localhost:9020/chat/portal/?river=operate&storm=web&index=space</a>`
|
||||
iframe "http://localhost:9020/chat/portal/?river=operate&storm=web&index=space"
|
||||
spark `或在搜索框中,直接搜索 space 即可打开空间管理的工具。搜索结果如果有多个,需要手动选择,点击"ctx command web space"一行,才会打开 space 工具。`
|
||||
spark `<a href="http://localhost:9020?_search=space"></a>`
|
||||
spark `<a>http://localhost:9020?_search=space</a>`
|
||||
iframe "http://localhost:9020?_search=space"
|
||||
spark `或是直接打开命令网页,<a href="http://localhost:9020/chat/cmd/web.space"></a>`
|
||||
spark `或是直接打开命令网页,<a>http://localhost:9020/chat/cmd/web.space</a>`
|
||||
iframe "http://localhost:9020/chat/cmd/web.space"
|
||||
spark `在空间列表中,找到新启动的子设备,点击打开,即可进入子空间的管理界面。`
|
||||
|
||||
|
14
src/document/started/using/demo/chain.shy
Normal file
14
src/document/started/using/demo/chain.shy
Normal file
@ -0,0 +1,14 @@
|
||||
chain `
|
||||
contexts
|
||||
icebergs
|
||||
base
|
||||
core
|
||||
misc
|
||||
toolkits
|
||||
volcanos
|
||||
lib
|
||||
page
|
||||
panel
|
||||
plugin
|
||||
`
|
||||
|
4
src/document/started/using/demo/label.shy
Normal file
4
src/document/started/using/demo/label.shy
Normal file
@ -0,0 +1,4 @@
|
||||
label `
|
||||
linux nginx docker redis mysql
|
||||
bash git golang vim tmux
|
||||
`
|
5
src/document/started/using/demo/order.shy
Normal file
5
src/document/started/using/demo/order.shy
Normal file
@ -0,0 +1,5 @@
|
||||
order `
|
||||
icebergs
|
||||
volcanos
|
||||
intshell
|
||||
`
|
6
src/document/started/using/demo/table.shy
Normal file
6
src/document/started/using/demo/table.shy
Normal file
@ -0,0 +1,6 @@
|
||||
table `
|
||||
命令 作用
|
||||
order 普通列表
|
||||
refer 引用列表
|
||||
table 普通表格
|
||||
`
|
@ -1,13 +1,12 @@
|
||||
title "电脑桌面"
|
||||
spark `contexts 是一个工具系统,内置了很多软件工具。这些工具可以像本机电脑桌面一样,用图标与窗口来使用所有的应用。`
|
||||
spark `web.chat.macos.desktop 工具就是 contexts 的电脑桌面。`
|
||||
spark `<a href="http://localhost:9020/chat/cmd/desktop"></a>`
|
||||
field "" web.chat.macos.desktop style output
|
||||
spark `Contexts 是一个工具系统,内置了很多软件工具。这些工具可以像本机电脑桌面一样,用图标与窗口来使用所有的软件工具。
|
||||
web.chat.macos.desktop 工具就是 Contexts 的电脑桌面。`
|
||||
spark `<a>http://localhost:9020/chat/cmd/desktop</a>`
|
||||
field "电脑桌面" web.chat.macos.desktop style output
|
||||
|
||||
spark `在桌面的左上角,可以桌面 + 号,创建新的桌面。每个桌面上可以打开不同的应用工具。`
|
||||
spark `打开 dock 工具栏中的 finder,即可查看所有应用列表。`
|
||||
spark `在 contexts 中,每个工作空间,都有自己的电脑桌面与应用列表,通过配置文件,可以将任意工具添加到应用列表中。
|
||||
spark `在桌面的左上角,可以桌面 + 号,创建很多个新的桌面,每个桌面上可以打开不同的软件工具。打开 dock 工具栏中的 finder 工具,即可查看所有应用列表。`
|
||||
spark `在 Contexts 中,每个工作空间,都有自己的电脑桌面与应用列表,通过配置文件,可以将任意的工具添加到应用列表中。
|
||||
应用列表中的所有应用,可以随时添加到桌面与工具栏中。`
|
||||
|
||||
spark `同样的,电脑桌面 web.chat.macos.desktop,只是 contexts 的一个工具,可以添加到导航栏中,也可以在搜索框中使用,甚于可以内嵌在任何其它工具中使用。`
|
||||
spark `同样的,电脑桌面 web.chat.macos.desktop,只是 Contexts 的一个工具,可以添加到导航栏中,也可以在搜索框中使用,甚于可以内嵌在任何其它工具中使用。`
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
title "笔记文档"
|
||||
brief `web.wiki.word 是 contexts 用来管理笔记与文档的工具,contexts 的文档以 .shy 作为文件格式的后缀。
|
||||
语法也非常简单,就是命令加参数,像命令行一样使用。其中命令就是 contexts 中的所有的工具名。
|
||||
所以 contexts 中的所有工具都可以在文档中直接使用。`
|
||||
spark `包括 contexts 的官网,web.wiki.portal,也只是在 web.wiki.word 上包装了一个布局和路由而已。
|
||||
brief `web.wiki.word 是 Contexts 用来管理笔记与文档的工具,Contexts 的文档以 .shy 作为文件格式的后缀。
|
||||
语法也非常简单,就是命令加参数,像命令行一样使用。其中命令就是 Contexts 中的所有的工具名。
|
||||
所以 Contexts 中的所有工具都可以在文档中直接使用。`
|
||||
spark `包括 Contexts 的官网,web.wiki.portal,也只是在 web.wiki.word 上包装了一个布局和路由而已。
|
||||
官网的所有内容也是用 .shy 文档来保存的,其中所有的内容在 web.wiki.word 中也一样显示。
|
||||
`
|
||||
spark `contexts 的文档不需要单独存放,直接和代码在一起,都在 src 目录下,contexts 在构建时,会根据代码结构,将对应的文档打包进 bin 文件中。`
|
||||
spark `Contexts 的文档不需要单独存放,直接和代码保存在一起,都在 <code>./src/</code> 目录下,Contexts 在构建时,会根据代码结构,将关联的文档打包进 bin 文件中,以便在运行时随时查看。`
|
||||
|
||||
chapter "使用方式"
|
||||
spark `同样的,web.wiki.word 工具,也是可以在导航栏中、在搜索栏中、在单独的网页中都能使用,甚至可以被任何其它的工具嵌套使用。如被 web.wiki.portal 嵌套。`
|
||||
spark `其中 web.wiki.word 的参数栏中,第一个输入框,是文档的文件名,输入需要查看的文档的文件名即可查看此文档。
|
||||
spark `同样的,web.wiki.word 工具,也是可以在导航栏中、在搜索栏中、在单独的网页中都能使用,甚至可以被任何其它的工具嵌套使用。如被 web.wiki.portal 嵌套。
|
||||
其中 web.wiki.word 的参数栏中,第一个输入框,是文档的文件名,输入需要查看的文档的文件名即可查看此文档。
|
||||
在命令网页中,如下添加参数 path 即可指定文档的文件名。`
|
||||
spark `<a href="http://localhost:9020/chat/cmd/word?path=src/document/started/using/note.shy"></a>`
|
||||
spark `其中参数有空格或其它特殊字符,需要加引号,单引号、双引号、反引号,其中反引号中的文字可以跨行。`
|
||||
spark `<a>http://localhost:9020/chat/cmd/word?path=src/document/started/using/note.shy</a>`
|
||||
|
||||
chapter "常用命令"
|
||||
spark `其中参数有空格或其它特殊字符,可以加引号,单引号、双引号、反引号,其中反引号中的文字可以跨行。`
|
||||
section "文字类"
|
||||
spark `文字类的命令很简单,常用的就 title、chapter、section、spark。`
|
||||
spark `文字类的命令很简单,常用的就 title、chapter、section、brief、spark。`
|
||||
spark inner `
|
||||
title "文章标题"
|
||||
chapter "章节标题"
|
||||
@ -26,7 +26,7 @@ spark "段落文字"
|
||||
` args "src/ main.shy"
|
||||
|
||||
spark `spark 命令还支持子命令,如 title、inner、shell、button 等,
|
||||
如需其它文字格式,可自行添加 spark 的子命令,只需要在 src/template/web.wiki.spark/ 目录下添加同名的模板文件即可。`
|
||||
如需其它文字格式,可自行添加 spark 的子命令,只需要在 <code>./src/template/web.wiki.spark/</code> 目录下添加同名的模板文件即可。`
|
||||
|
||||
spark inner `
|
||||
spark inner "代码文字"
|
||||
@ -38,16 +38,29 @@ spark `其中 shell 命令并不一个单独的命令,只是 spark shell 的
|
||||
还有 chapter 也是 title chapter 的别名,section 也是 title section 别名。`
|
||||
|
||||
section "数据类"
|
||||
spark inner src/document/started/using/demo.shy
|
||||
spark `refer 命令,引用列表,样式如下`
|
||||
refer `
|
||||
首页 http://localhost:9020
|
||||
官网 http://localhost:9020/wiki/portal/
|
||||
后台 http://localhost:9020/chat/portal/
|
||||
`
|
||||
spark `refer 命令,引用列表`
|
||||
spark inner src/document/started/using/demo/refer.shy
|
||||
source src/document/started/using/demo/refer.shy
|
||||
|
||||
spark `order 命令,普通列表`
|
||||
spark inner src/document/started/using/demo/order.shy
|
||||
source src/document/started/using/demo/order.shy
|
||||
|
||||
spark `table 命令,普通表格`
|
||||
spark inner src/document/started/using/demo/table.shy
|
||||
source src/document/started/using/demo/table.shy
|
||||
|
||||
section "绘图类"
|
||||
spark `label 命令,绘制标签。`
|
||||
spark inner src/document/started/using/demo/label.shy
|
||||
source src/document/started/using/demo/label.shy
|
||||
|
||||
spark `chain 命令,绘制结构图,每一行是一个节点,用缩进代表层级。`
|
||||
spark inner src/document/started/using/demo/chain.shy
|
||||
source src/document/started/using/demo/chain.shy
|
||||
|
||||
section "影音类"
|
||||
spark `影音类的文件,存放在 ./usr/local/image/ 目录下。当然参数也可以是一个完整的 URL 地址,直接引用外部的资源文件。`
|
||||
spark `影音类的文件,存放在 <code>./usr/local/image/</code> 目录下。当然参数也可以是一个完整的 URL 地址,直接引用外部的资源文件。`
|
||||
spark inner `
|
||||
image background.jpg
|
||||
video some.mov
|
||||
|
@ -1,11 +1,11 @@
|
||||
title "任务计划"
|
||||
spark `web.team.plan 是 contexts 用来管理任务与计划的工具,此外在状态栏中附加了另外三个工具 web.team.todo、web.team.task、web.team.epic `
|
||||
spark `<a href="http://localhost:9020/chat/cmd/plan"></a>`
|
||||
spark `web.team.plan 是 Contexts 用来管理任务与计划的工具,此外在状态栏中附加了另外三个工具 web.team.todo、web.team.task、web.team.epic `
|
||||
spark `<a>http://localhost:9020/chat/cmd/plan</a>`
|
||||
field "" web.team.plan
|
||||
spark `web.team.plan 提供了日视图、周视图、月视图、年视图、长视图等,不同的时间维度来展示任务列表。
|
||||
双击时间的单元格,即可打开创建任务的对话框。其中 zone 与 name 是必选参数,指定分类与名称。
|
||||
单击任务,在任务表的右侧,即可显示出任务详情。`
|
||||
spark `web.team.plan 工具,看上去功能很简单,但却不简单,因为在 contexts 中,所有的工具,都可以嵌套任何其它工具,甚至子空间、子设备中的所有工具。
|
||||
spark `web.team.plan 工具,看上去功能很简单,但却不简单,因为在 Contexts 中,所有的工具,都可以嵌套任何其它工具,甚至子空间、子设备中的所有工具。
|
||||
给任何一个任务,都可以绑定一个工具。在详情中,点击插件,输入工具名与参数,即可在任务选中时,在时间表下面显示工具,可以直接使用。
|
||||
所以对于 web.team.plan 来说,它就是一个时间的框架,用时间的维度,将所有的工具显示在时间表中。`
|
||||
spark `同样适用于 contexts 系统中其它所有工具,每一个工具都以自己的数据逻辑,将其它所有的工具、空间、设备,组织在一起。所以每个工具,都是一个操作系统。`
|
||||
spark `同样适用于 Contexts 系统中其它所有工具,每一个工具都以自己的数据逻辑,将其它所有的工具、空间、设备,组织在一起。所以每个工具,都是一个操作系统。`
|
||||
|
@ -1,12 +1,12 @@
|
||||
title "工作空间"
|
||||
spark `contexts 下载并启动后,会以当前运行目录为工作空间,加载启动脚本和保存数据与文件。`
|
||||
spark `contexts 不推荐使用全局的资源或家目录的文件,为了减少全局依赖与资源冲突。从而可以在一台机器上启动任意多个空间。`
|
||||
spark `contexts 推荐使用空间来管理项目与任务。contexts 每个空间都是一个独立的目录,与独立的守护进程。
|
||||
每个空间即可以使用相同的 contexts,也可以使用不同的 contexts,即不同的工具集合。因为每个项目内容可能是不一样的,使用的工具也可能是不一样的。`
|
||||
spark `Contexts 下载并启动后,会以当前运行目录为工作空间,加载启动脚本和保存数据与文件。`
|
||||
spark `Contexts 不推荐使用全局的资源或家目录的文件,为了减少全局依赖与资源冲突。从而可以在一台机器上启动任意多个空间。`
|
||||
spark `Contexts 推荐使用空间来管理项目与任务。Contexts 每个空间都是一个独立的目录,与独立的守护进程。
|
||||
每个空间即可以使用相同的 Contexts,也可以使用不同的 Contexts,即不同的工具集合。因为每个项目内容可能是不一样的,使用的工具也可能是不一样的。`
|
||||
|
||||
chapter "创建空间"
|
||||
section "启动服务"
|
||||
spark `首先,启动 contexts 服务。并打开后台管理系统。<a href="http://localhost:9020/chat/portal/"></a>`
|
||||
spark `首先,启动 Contexts 服务。并打开后台管理系统。<a>http://localhost:9020/chat/portal/</a>`
|
||||
shell `
|
||||
./bin/ice.bin forever start
|
||||
open http://localhost:9020
|
||||
@ -14,20 +14,20 @@ open http://localhost:9020
|
||||
|
||||
section "打开工具"
|
||||
spark `如果导航栏未定制,在左边导航栏中打开运维群 -> 应用,然后在右边工作区中,找到 dream,即空间管理的工具。`
|
||||
spark `<a href="http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream"></a>`
|
||||
spark `<a>http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream</a>`
|
||||
iframe "http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream"
|
||||
spark `或在搜索框中,直接搜索 dream 即可打开空间管理的工具。`
|
||||
spark `<a href="http://localhost:9020?_search=dream"></a>`
|
||||
spark `<a>http://localhost:9020?_search=dream</a>`
|
||||
iframe "http://localhost:9020?_search=dream"
|
||||
spark `或是直接打开命令网页,<a href="http://localhost:9020/chat/cmd/web.dream"></a>`
|
||||
spark `或是直接打开命令网页,<a>http://localhost:9020/chat/cmd/web.dream</a>`
|
||||
iframe "http://localhost:9020/chat/cmd/web.dream"
|
||||
|
||||
section "创建空间"
|
||||
spark `点击工具栏中的创建按钮,即可打开创建对话框。`
|
||||
spark `空间创建有 name、repos、binary、template 四个参数,其中 name 是必选参数,指定项目名,创建空间时,contexts 会默认给项目名加一个时间前缀。`
|
||||
spark `空间创建有 name、repos、binary、template 四个参数,其中 name 是必选参数,指定项目名,创建空间时,Contexts 会默认给项目名加一个时间前缀。`
|
||||
order `
|
||||
repos 指定 git 仓库地址,contexts 将此仓库下载到本地,然后把此目录当成工作空间。
|
||||
binary 指定 bin 文件,contexts 会自动下载并使用这个 bin 文件,来启动守护进程。
|
||||
repos 指定 git 仓库地址,Contexts 将此仓库下载到本地,然后把此目录当成工作空间。
|
||||
binary 指定 bin 文件,Contexts 会自动下载并使用这个 bin 文件,来启动守护进程。
|
||||
template 指定模板目录,空间创建时,会从模板目录中复制所需要的文件。
|
||||
`
|
||||
spark `空间创建成功后,会在 ./usr/local/work 目录下创建一个空间的目录。并启动一个守护进程。
|
||||
|
@ -1,5 +1,7 @@
|
||||
title "编辑器"
|
||||
|
||||
spark `web.code.vimer 是 contexts 自带的编辑器。`
|
||||
|
||||
spark `作为一个功能完备的工具系统,编辑器是必不少的工具。web.code.vimer 就是 Contexts 自带的编辑器,具有语法高亮、语法模板、语法补全、语法跳转等功能。
|
||||
web.code.vimer 也是一个编辑器框架,默认已经支持 Contexts 用到的语言 Golang、Javascript、HTML、CSS、sh、shy 等,
|
||||
如需其它语言,直接添加语法模块即可。`
|
||||
spark `Contexts 中所有的工具,都可以被当成插件,在编辑器中使用。`
|
||||
spark `<a>http://localhost:9020/chat/cmd/web.code.vimer</a>`
|
||||
field web.code.vimer
|
||||
|
Loading…
x
Reference in New Issue
Block a user