lykrsl / hetu

低代码平台, 可视化编辑器,单手打代码,解放你的双手

Home Page:http://beike.plus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

河图

河图, 是一个 低代码 平台, 通过可视化界面, 快速生成各种后台页面, 极大减少开发成本。

河图是贝壳找房内部孵化项目, 目前已在公司大多数业务线落地, 完成200+项目, 1500+页面。

相关链接

解决了什么问题

  • 对重复模块(增、删、改、查页面)进行抽象、封装,大幅降低前端开发工作量
  • 通过可视化编辑界面,非前端人员(后端、测试), 也能进行页面开发

目标用户

FE、QA、RD 等。

适用场景

  • PC 端 后台管理系统
  • 数据增、删、改、查页面
  • 图表展示

开发流程

河图的开发、调试、测试、上线都是在浏览器中进行的

支持环境

  • 现代浏览器和 IE9 及以上。

开发前准备

1. 一台云开发机

用于代码部署

2. 一个邮箱账号

需要开启SMTP服务, 用于发送验证码

3. MySQL数据库

可选择以下两种方式,部署MySQL服务

server/open_hetu.sql文件, 导入到数据库

快速搭建开发服务

第一步

/server/src目录下创建system_config.ini文件, 内容如下

  • [ssh]
    • ssh_ip 云服务器ip
    • ssh_user 云服务器登录账号
  • [client]
    • cdn_host 静态资源CDN, 例如cdn.beike.plus
  • [server]
    • port node服务启动端口
  • [mysql] mysql配置
  • [email]
    • host SMTP服务域名
    • port 连接端口
    • user 公共邮箱账号
    • pass 授权密码

配置格式为

[ssh]
ssh_ip = ******
ssh_user = ******

[client]
cdn_host = ******

[server]
port = 9536

[mysql]
host = ****
port = ****
user = ****
password = ****
database = ****

[email]
host = smtp.163.com
port = 364
user = ****
pass = ****

第二步 部署组件库和文档服务

  • /plugin 目录下的内容为组件库
  • /plugin/site 目录下的内容为组件库文档

1. 打包部署

在云服务器上创建文件夹, 用于存在静态资源

cd /data/www/

# 创建文件夹, 用于存放静态资源
mkdir hetu-client hetu-doc hetu-plugin hetu-server

# 创建配置文件, 内容见上一步
touch system_config.ini

2. 配置 nginx

如果没有安装nginx, 需要先 安装nginx

# 进入nginx配置目录
cd /etc/nginx/conf.d/

# 创建配置文件
touch hetu-cdn.conf hetu-doc.conf hetu-server.conf

申请3个域名, 例如 河图node服务xxx.com、cdn静态资源服务cdn.xxx.com、文档服务doc.xxx.com, 将这3个域名分别指向前面申请的云开发机ip, 配置如下:

hetu-cdn.conf 配置

server {
    listen      80;
    server_name cdn.xxx.com;
    root  /data/www/;

    gzip                    on;
    gzip_http_version       1.1;
    gzip_buffers            256 64k;
    gzip_comp_level         5;
    gzip_min_length         1000;
    gzip_proxied            expired no-cache no-store private auth;
    gzip_types              text/plain application/javascript application/x-javascript t
ext/css application/xml text/javascript application/vnd.ms-fontobject font/ttf font/open
type font/x-woff;

    gzip_disable "MSIE 6";

    if ( $request_method !~ GET|POST|HEAD ) {
        return 403;
    }

    location ^~ /hetu-plugin/ {
        add_header 'Access-Control-Allow-Origin'  '*';
        alias /data/www/hetu-plugin/;
    }

    location ^~ /hetu-client/ {
        add_header 'Access-Control-Allow-Origin'  '*';
        alias /data/www/hetu-client/;
    }
}

hetu-doc.conf 配置

server {
    listen      80;
    server_name doc.xxx.com;
    root  /data/www/hetu-doc;

    gzip                    on;
    gzip_http_version       1.1;
    gzip_buffers            256 64k;
    gzip_comp_level         5;
    gzip_min_length         1000;
    gzip_proxied            expired no-cache no-store private auth;
    gzip_types              text/plain application/javascript application/x-javascript t
ext/css application/xml text/javascript application/vnd.ms-fontobject font/ttf font/open
type font/x-woff;

    gzip_disable "MSIE 6";

    if ( $request_method !~ GET|POST|HEAD ) {
        return 403;
    }

    location / {
        index index.html index.htm;
        if (!-f $request_filename) {
            rewrite ^/(.*)$ /index.html?/$1 last;
            break;
        }
    }
}

hetu-server.conf

server {
    listen      80;
    server_name xxx.com;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:9536;
    }
}

重启nginx

# 检测配置文件是否正确
nginx -t

# 重启nginx
nginx -s reload
  • 打开 http://doc.xxx.com 预览文档服务
  • 打开 http://cdn.xxx.com/hetu-plugin/manifest.json 预览静态资源服务

第三步 安装项目依赖

# server
cd ./server && npm install

# client
cd ../client && npm install

第四步 开始开发

# client
cd ./client && npm start
# server
cd server && npm run dev

打开127.0.0.1:1234预览

第五步 打包部署

# 打包 && 部署client 
sh online_client.sh

# 打包 && 部署server
sh online_server.sh

第六步 在云服务器上启动node服务

在centos上安装node.js

EPEL(Extra Packages for Enterprise Linux)企业版Linux的额外软件包,是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。

# 先确认系统是否已安装epel-release包
yum info epel-release 

# 若已安装, 则跳过
sudo yum install epel-release

# 安装nodejs
sudo yum install nodejs

# 查看node版本
node -v

使用pm2启动node服务

pm2是node进程管理工具, 利用它可以简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。

# 全局安装
sudo npm i -g pm2

# 启动一个名为hetu的node服务, --watch意味着文件变化, 就会重新启动服务
pm2 start dist/app.js --watch --name 'hetu'

# 设置开机启动
pm2 start up

# 保存当前进程状态
pm2 save

# 查看当前node服务进程
pm2 list

版本记录

CHANGELOG

主要贡献者

Name Avatar Name Avatar Name Avatar Name Avatar Name Avatar
好爸爸 嘻老师 姚泽源 liaoqixin 般若超

License

MIT

Copyright(c) 2020 Lianjia, Inc. All Rights Reserved

About

低代码平台, 可视化编辑器,单手打代码,解放你的双手

http://beike.plus

License:MIT License


Languages

Language:TypeScript 76.7%Language:Less 12.4%Language:JavaScript 10.5%Language:HTML 0.2%Language:Shell 0.2%