GitBook
This commit is contained in:
parent
79cbbef738
commit
7312a54eae
|
@ -0,0 +1,2 @@
|
||||||
|
* User Guide: https://www.gitbook.io/book/88250/wide-user-guide
|
||||||
|
* Developer Guide: https://www.gitbook.io/book/88250/wide-dev-guide
|
|
@ -1,32 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 配置</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>配置</h1>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
{
|
|
||||||
"Server": "{IP}:7070", 运行的 IP,端口
|
|
||||||
"StaticServer": "http://{IP}:7070", 静态资源服务 IP,端口
|
|
||||||
"EditorChannel": "ws://{IP}:7070", 编辑器消息通道
|
|
||||||
"OutputChannel": "ws://{IP}:7070", 输出窗口消息通道
|
|
||||||
"ShellChannel": "ws://{IP}:7070", Shell 消息通道
|
|
||||||
"StaticResourceVersion": "201409032040", 静态资源版本
|
|
||||||
"MaxProcs": 4, Go 协程并行处理数量,可等于 Go CPU 核数
|
|
||||||
"RuntimeMode": "dev", 运行模式,dev 为开发模式,prod 为生产模式
|
|
||||||
"Pwd": "{pwd}", 工作目录,设置为 "{pwd}" 将自动获取
|
|
||||||
"Users": [
|
|
||||||
{
|
|
||||||
"Name": "admin", 用户名
|
|
||||||
"Password": "admin", 用户密码
|
|
||||||
"Workspace": "{pwd}/data/user_workspaces/admin" 用户工作空间(GOPATH)
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,79 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 开发指南</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>开发指南</h1>
|
|
||||||
<p>
|
|
||||||
该文档介绍了 Wide 的核心设计原理与实现。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
如果您要读 Wide 的源码或者要进行修改、二次开发等,请先仔细阅读该文档。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>关键设计</h2>
|
|
||||||
<h3>工作空间</h3>
|
|
||||||
<p>
|
|
||||||
Wide 是一个多用户的集成开发环境,每个用户的工作空间是完全隔离的:
|
|
||||||
<ul>
|
|
||||||
<li>文件路径</li>
|
|
||||||
<li>环境变量</li>
|
|
||||||
<li>运行进程</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
例如在执行“构建 & 运行”时,Wide 会设置命令 go build 执行的环境变量 $GOPATH 为用户的工作空间,这样编译过程就是在该用户的工作空间中进行,保证其隔离性。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>会话</h3>
|
|
||||||
<p>
|
|
||||||
在 UI 上存在两种 tab:浏览器 tab;编辑器 tab。
|
|
||||||
用户可以在一个浏览器 tab 中打开多个编辑器 tabs,但输出窗口只有一个。这意味着一个浏览器 tab 只能有一个正在运行的用户代码的程序进程。
|
|
||||||
需要同时运行多个程序进程的场景可以通过打开多个浏览器 tabs 达成。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>一个浏览器 tab 对应一个 Wide 会话:只要打开/刷新一个 tab,就会新建一个 Wide 会话</li>
|
|
||||||
<li>Wide 会话的 id 在源码中统一命名为 <code>sid</code>,在需要使用 HTTP 会话的地方也统一明确表明</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>WebSocket</h3>
|
|
||||||
<p>
|
|
||||||
WebSocket 用于后端推送数据给前端:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>输出通道</li>
|
|
||||||
<li>通知通道</li>
|
|
||||||
<li>Shell 通道</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
通道和会话一对一关联,也就是说如果用户新开浏览器 tab,则新建通道和其关联。
|
|
||||||
|
|
||||||
<h3>事件与通知</h3>
|
|
||||||
<p>
|
|
||||||
每个会话都有一个对应的事件队列,当接收到事件时取出该事件并转为通知,再通过通知窗口通道推送给前端。
|
|
||||||
还存在一个全局事件队列,入队的事件将分发到每个用户的事件队列中,以便进行通知广播。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
通知中的消息需要国际化处理。在语言配置文件中以 notification_ 为前缀,事件代码(event code)为后缀的项即通知消息。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>代码辅助</h3>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>自动完成,通过 gocode 工具实现</li>
|
|
||||||
<li>跳转到声明,通过 ide_stub 工具实现</li>
|
|
||||||
<li>查找使用,通过 ide_stub 工具实现</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
代码辅助功能满足工作空间隔离。
|
|
||||||
|
|
||||||
|
|
||||||
<h2>编码规范</h2>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,35 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide -编辑器</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>编辑器</h1>
|
|
||||||
|
|
||||||
<h2>Tabs</h2>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
新打开一个文件会新开一个编辑器,最多可以打开 64 个编辑器
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
焦点切换到编辑器(Ctrl+0)时,左边的文件树也会选中相关的文件
|
|
||||||
<li>
|
|
||||||
在多个 tabs 之间切换快捷键:Ctrl+Tab
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
关闭当前编辑器快捷键:Ctrl+W
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>文件保存</h2>
|
|
||||||
在下面几种情况发生时会保存编辑器内容:
|
|
||||||
<ul>
|
|
||||||
<li>保存/格式化:将保存当前编辑器的内容</li>
|
|
||||||
<li>构建 & 运行/go install:将保存所有打开的编辑器的内容</li>
|
|
||||||
<li><strong>自动完成/跳转到声明/查找使用:将保存当前编辑器的内容</strong></li>
|
|
||||||
</ul>
|
|
||||||
我们基本可以认为在写代码时文件是实时自动保存的。
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,67 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 常见问题与解答</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>常见问题与解答</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>默认用户是?</b></li>
|
|
||||||
<p>
|
|
||||||
默认用户是 admin 用户。用户名:admin,密码:admin。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>什么是工作空间?</b></li>
|
|
||||||
<p>
|
|
||||||
工作空间是当前用户的 $GOPATH 路径指定的目录,一个用户只能有一个工作空间。
|
|
||||||
例如 admin 用户的工作空间默认路径是 {wide}/data/user_workspaces/admin/,可以在 wide.json 中配置。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>wide.json 是什么?</b></li>
|
|
||||||
<p>
|
|
||||||
wide.json 是 Wide 的配置文件,路径是 {wide}/conf/wide.json。Wide 的所有配置(例如端口、工作空间、用户帐号、用户选项等)都是保存在这个文件中的。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
如果 Wide 是个人使用,那么默认的配置应该可以很好的工作,不需要修改任何地方。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>如何才能使用已有 $GOPATH?比如我的 $GOPATH 是 D:\\GoGoGo,我要如何才能使用这个目录作为 admin 用户的工作空间?</b></li>
|
|
||||||
<p>
|
|
||||||
修改 wide.json 中 admin 用户的 Workspace,将其从默认的 "{pwd}/data/user_workspaces/admin" 改为 "D:\\GoGoGo"。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
$GOPATH 是可以通过路径分隔符(Linux 下是 :,Windows 下是 ;)配置多个路径的,但我们不建议您这样配置,因为多个多个目录会造成构建/代码补全等功能的性能下降。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>文件树里的 Go API 目录是什么?</b></li>
|
|
||||||
<p>
|
|
||||||
该目录是读取 $GOROOT/src/pkg 生成的,方便用户查看 Go API 源代码。
|
|
||||||
在该目录下是不允许新建、编辑、删除文件的。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>如何配置多用户?</b></li>
|
|
||||||
<p>
|
|
||||||
修改 wide.json 中的 Users 数组,按照默认用户的格式(用户名、密码等)添加。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<li><b>为什么代码辅助功能(自动完成/跳转到声明等)失效了?</b></li>
|
|
||||||
<p>
|
|
||||||
请确认正确安装了 gocode 和 ide_stub 工具。安装命令:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>go get -u github.com/88250/ide_stub</li>
|
|
||||||
<li>go get -u github.com/nsf/gocode</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
如果安装不对,Wide 会自动检查并通过通知窗口告知用户。另外,通知窗口还会告知用户一些其他重要信息,例如 IDE 版本更新提醒等。
|
|
||||||
</p>
|
|
||||||
</ul>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide -特性列表</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>特性列表</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>代码高亮、折叠:Go/HTML/JavaScript/Markdown 等</li>
|
|
||||||
<li>自动完成:Go/HTML 等</li>
|
|
||||||
<li>编译检查:编辑器提示编译错误</li>
|
|
||||||
<li>格式化:Go/HTML/JSON 等</li>
|
|
||||||
<li>运行:支持同时运行多个程序,方便联调</li>
|
|
||||||
<li>调试:基于 gdb 的调试系统</li>
|
|
||||||
<li>多用户:团队开发,方便协作</li>
|
|
||||||
<li>代码导航:跳转到声明,查找使用,文件搜索等</li>
|
|
||||||
<li>Shell:连接到服务器执行命令</li>
|
|
||||||
<li>Web 开发:前端(HTML/JS/CSS)开发支持</li>
|
|
||||||
<li>go tool:go get/install/fmt 等</li>
|
|
||||||
<li>Git 整合:常用 git 命令可视化操作</li>
|
|
||||||
</ul>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 文档首页</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Wide</h1>
|
|
||||||
<p>
|
|
||||||
Wide 是一个基于 <b>W</b>eb 的团队 Golang <b>IDE</b>。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><a href="motivation.html">动机</a></h2>
|
|
||||||
|
|
||||||
<h2>特性</h2>
|
|
||||||
<ul>
|
|
||||||
<li>语法高亮</li>
|
|
||||||
<li>自动完成提示</li>
|
|
||||||
<li>代码格式化</li>
|
|
||||||
<li>运行 & 调试</li>
|
|
||||||
<li>多用户</li>
|
|
||||||
<li>文件导航与跳转</li>
|
|
||||||
<li>Shell</li>
|
|
||||||
<li>Git 集成</li>
|
|
||||||
<li>Web 开发支持</li>
|
|
||||||
</ul>
|
|
||||||
完整<a href="features.html">特性列表</a>。
|
|
||||||
|
|
||||||
<h2>使用指南</h2>
|
|
||||||
<ul>
|
|
||||||
<li><a href="setup.html">安装</a></li>
|
|
||||||
<li><a href="multiplayer.html">多用户</a></li>
|
|
||||||
<li><a href="editor.html">编辑器</a></li>
|
|
||||||
<li><a href="keyboard_shortcuts.html">键盘快捷键</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2><a href="dev/index.html">开发指南</a></h2>
|
|
||||||
<h2><a href="faq.html">FAQ</a></h2>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 键盘快捷键</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>键盘快捷键</h1>
|
|
||||||
|
|
||||||
<h2>编辑器</h2>
|
|
||||||
<ul>
|
|
||||||
<li>Ctrl+\: 自动补全</li>
|
|
||||||
<li>Ctrl+B:跳转到声明</li>
|
|
||||||
<li>Alt+Shift+F:格式化</li>
|
|
||||||
<li>Ctrl+G: 跳转到行</li>
|
|
||||||
<li>Ctrl+E: 删除当前行</li>
|
|
||||||
<li>Ctrl+S:保存当前编辑器文件</li>
|
|
||||||
<li>F11: 编辑器全屏</li>
|
|
||||||
|
|
||||||
<li>Shift+Tab: 自动缩进</li>
|
|
||||||
<li>Ctrl+]: 缩进</li>
|
|
||||||
<li>Ctrl+[: 反缩进</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>焦点</h2>
|
|
||||||
<ul>
|
|
||||||
<li>Ctrl+0:焦点切换到编辑器</li>
|
|
||||||
<li>Ctrl+1:焦点切换到文件树</li>
|
|
||||||
<li>Ctrl+4:焦点切换到输出窗口</li>
|
|
||||||
<li>Ctrl+5:焦点切换到搜索窗口</li>
|
|
||||||
<li>Ctrl+6:焦点切换到通知窗口</li>
|
|
||||||
<li>Ctrl+Tab:编辑器 Tabs 切换</li>
|
|
||||||
<li>Ctrl+W:关闭当前编辑器</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>运行</h2>
|
|
||||||
<ul>
|
|
||||||
<li>F6:构建 & 运行</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
TBD:
|
|
||||||
<ul>
|
|
||||||
<li>Alt+F7:查找使用</li>
|
|
||||||
</ul>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 动机</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Wide 的由来</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>团队的</b> IDE:
|
|
||||||
<ul>
|
|
||||||
<li>安全可靠:项目源代码实时保存在服务器上,开发者的机器崩溃不会丢失任何源代码</li>
|
|
||||||
<li>统一环境:服务器统一配置开发环境,开发者本机无需任何额外配置</li>
|
|
||||||
<li>开箱即用:5 分钟搭建服务器;开发者打开浏览器即可开发、调试</li>
|
|
||||||
<li>版本控制:每个开发者拥有自己的源代码仓库,随时可和主干保持同步</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><b>基于 Web 的</b> IDE:
|
|
||||||
<ul>
|
|
||||||
<li>客户端只需要浏览器</li>
|
|
||||||
<li>跨平台,甚至在移动设备上</li>
|
|
||||||
<li>For the geeks</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>商业-开源的一次尝试:会推出专门为企业定制的 Wide,贴近开发流程</li>
|
|
||||||
<li>目前较为流行的 Go IDE 都有一些缺陷或遗憾:
|
|
||||||
<ul>
|
|
||||||
<li>文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂</li>
|
|
||||||
<li>插件类(goclipse 等):需要原 IDE 支持,不够专业</li>
|
|
||||||
<li>LiteIDE:界面不够 modern :p</li>
|
|
||||||
<li>没有团队开发体验</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>Go IDE 很少,用 Go 本身开发的 IDE 更是没有,这是一个很好的尝试</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,25 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 多用户</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>多用户</h1>
|
|
||||||
<p>
|
|
||||||
支持多个用户同时使用一个 Wide 服务器,每个用户有自己独立的源代码仓库,编码/运行/调式都是在自己的工作空间中进行,不会影响其他用户。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>工作空间</h2>
|
|
||||||
<p>
|
|
||||||
Wide 的工作空间就是 Go 中的 <a href="https://golang.org/doc/code.html#Workspaces" target="_blank">workspaces</a>,每个用户的工作空间路径可在 wide.json 中进行配置。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>运行时</h2>
|
|
||||||
<p>
|
|
||||||
用户在运行程序时进程是跑在服务器上的,所以多用户同时运行程序时最常见的问题就是资源冲突(比如网络端口),目前这个问题只能靠用户自行规避。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Wide - 安装</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>安装</h1>
|
|
||||||
|
|
||||||
<h2>基础安装</h2>
|
|
||||||
<ol>
|
|
||||||
<li>下载 Wide 安装包</li>
|
|
||||||
<li>解压到安装路径 {wide},例如 /root/wide</li>
|
|
||||||
<li>配置 {wide}/conf/<a href="conf.html">wide.json</a>(可选,默认配置应该可以工作)</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h2>多用户配置</h2>
|
|
||||||
前提:需要安装 git。
|
|
||||||
<ol>
|
|
||||||
<li>初始化主库:在 {wide}/data/workspace/src 下执行 git init</li>
|
|
||||||
<li>添加用户:修改 {wide}/conf/wide.json 中的 Users</li>
|
|
||||||
<li>添加用户库:在 {wide}/data/user_workspaces/{user}/ 中 git clone 主库</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h2>从源码安装</h2>
|
|
||||||
前提:
|
|
||||||
<ol>
|
|
||||||
<li>搭建好 Go 开发环境</li>
|
|
||||||
<li>安装好 git</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
步骤:
|
|
||||||
<ol>
|
|
||||||
<li>通过 <code>git clone</code> 或下载 zip 包方式获取 Wide 源码(项目地址:<a href="https://github.com/b3log/wide">https://github.com/b3log/wide</a>)</li>
|
|
||||||
<li>获取依赖,在 Wide 源码目录下执行:
|
|
||||||
<ul>
|
|
||||||
<li><code>go get -u</code></li>
|
|
||||||
<li><code>go get -u github.com/88250/ide_stub</code></li>
|
|
||||||
<li><code>go get -u github.com/nsf/gocode</code></li>
|
|
||||||
</ul>
|
|
||||||
<li>编译:在 Wide 源码目录下执行 <code>go build</code></li>
|
|
||||||
<li>配置 {wide}/conf/<a href="conf.html">wide.json</a>(可选,默认配置应该可以工作)</li>
|
|
||||||
<li>运行可执行文件 wide 或 wide.exe</li>
|
|
||||||
</ol>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Loading…
Reference in New Issue