Luna

02 June 2019

Luna 是我为 Jumpserver 单独开发的前端一站式连接终端,项目地址,项目初期设计是一站解决所有的连接 UI 渲染部分。

前端框架采用 Angular5 ,为保持架构稳定,暂时还未考虑升级。

Project Luna

目录结构说明

src 目录结构如下

├── 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
│   └── 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实现部分原生类的重写以及自定义类的实现。