Luna
Luna 是我为 Jumpserver 单独开发的前端一站式连接终端,项目地址,项目初期设计是一站解决所有的连接 UI 渲染部分。
前端框架采用 Angular5 ,为保持架构稳定,暂时还未考虑升级。
目录结构说明
src 目录结构如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
├── app
│ ├── app.module.ts
│ ├── app.service.ts
│ ├── elements
│ ├── globals.ts
│ ├── pages
│ ├── pipes
│ ├── plugins
│ ├── router
│ └── test-page
├── assets
│ ├── inspinia
│ ├── js
│ ├── slimscroll
│ └── ztree
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── sass
│ ├── jumpserver.css
│ ├── material.css
│ └── style.scss
├── static
│ └── assets/imgs
├── styles.css
├── test.ts
├── theme
│ └── default
├── tsconfig.app.json
├── tsconfig.spec.json
└── typings.d.ts
app 目录
该目录下主要是应用的组件和模块, ./elements/
是本项目所需要用到的子元素集合,./pages/
是本项目所有页面分页,./pipes/
是本项目的管道功能组件,./plugins/
是本项目的所有插件,./router/
是本项目的路由,./app.module.ts
项目模块,./app.service.ts
后台控制,./globals.ts
全局的环境变量。
./elements/
下面都是所需的模块元素,各模块根据需要去加载子模块,譬如ssh-term
模块,在会话连接时需要使用到,在会话回放时依然需要使用到,该模块就是一个终端模拟器,使用的是 xterm.js。
其余模块类似,原打算 Guacamole 模块按照 Guacamole 的 UI 要求去重写,后期因为时间原因直接 iframe 套用其原生界面能保证快速工作,便没有花太大精力去重写。
./pages/
目录是所有页面的整合,由 router 去路由到各个页面。该模块原先设计上是打算将jumpserver 所有页面都复写到这个下面,后期由于 django 的深度开发,暂时只负责一部分页面的渲染工作。
./pipes/
是管道工,里面包含date.pipe.ts
日期管道工、trans.pipe.ts
翻译管道工、truncatechars.pipe.ts
缩写管道工,以及未来的管道工都会在这里实现。目的是提供各类插件式的工具。
./plugins/
是第三方插件的存放位置,先存放了单独的MaterialModule.component.ts
,其他插件直接可以在plugins.ts
中进行版本管理。
./router/
就不多说了,路由模块。至于为什么一个文件一个文件夹,是因为考虑到后期会增加各个端的路由规则,方便进行多文件管理。
./app.module.ts
和./globals.ts
就不多说了。
./app.service.ts
实现部分原生类的重写以及自定义类的实现。