# FoxGIS Server Lite

> 一款简单易用的矢量瓦片地图服务软件。

## 使用文档

请查看[帮助文档](https://jingsam.github.io/foxgis-server-lite/#/)

## 快速开始

将系统代码克隆下来后，相关命令如下：

```
yarn        // 安装依赖
yarn start  // 启动服务，默认服务地址是localhost:1234/api
```

此外，还有以下可用命令：

```
yarn test   // 测试
yarn dist   // 打包为二进制文件
yarn docs   // 打开文档
```

## Docker 构建

> 注意把项目中的 [data](./data/) 目录拷贝的运行环境，用于挂载模板文件 (同时还可以在特殊情况下挂载 bin 和 app 目录，方式同 data 挂载)

```bash
# 安装并启动 docker ...

# 构建
docker build -t foxgis-server-lite .
# 查询构建的 image id
docker images
# 挂载当前目录的 data 作为模板文件夹，并启动容器
docker run -d -p 1234:1234 -v $PWD/data:/usr/src/app/data foxgis-server-lite
# 停止容器
docker stop <container id>

# 导出镜像
docker save -o foxgis-server-lite.tar foxgis-server-lite
# 导入镜像
docker load -i foxgis-server-lite.tar
# 查询刚刚导入的镜像
docker images
# 添加 tag
docker tag <image id> foxgis-server-lite:latest
```

## 项目结构

本项目基于 Express 搭建，并对 Express 默认的目录结构做了更改。Express 默认的目录结构是按照 Model、View、Controller 组织代码，本项目则是按照服务组织代码。每个服务分配一个目录，每个服务目录下再按照 MVC 划分文件，各服务间尽量进行代码隔离、数据隔离，便于以后改造为微服务。

本项目的主要代码结构如下，主要的代码逻辑在`app`目录：

```
|-- app/
|   |-- services/                 // API服务目录
|   |   |-- styles/               // 地图样式服务
|   |   |   |-- index.js          // 地图样式服务入口，同时也定义了服务API的子路由
|   |   |   |-- controller.js     // 地图样式服务的Controller层，负责具体的业务过程
|   |   |-- tilesets/             // 地图瓦片服务
|   |   |-- sprites/              // 符号库服务
|   |   |-- fonts/                // 字体服务
|   |   |-- assets/               // 静态文件服务
|   |   |-- index.js              // 服务总路由
|   |-- index.js                  // 系统入口
|   |-- routes.js                 // 总路由
|-- bin/                          // 执行文件目录
|   |-- www                       // 系统启动脚本
|-- data/                         // 系统数据目录
|-- docs/                         // 文档目录
|-- test/                         // 测试文件
```
