清理仓库,最近将自己Github上2/3的项目都删了,我们来看看其中一个仓库。
曾经写了一个web app,后端没有用数据库,而是文件系统,体验还不错,文件系统的索引也很快,有时候一个网站不需要什么SQL。
CSV with ag-grid & chart.js
功能概述
基于web的表格处理/图形渲染系统, 支持csv文件的导入导出, ag-grid的本地scrud, 以及chart.js框架的图表统计
CSV规范格式
能够读取的CSV格式必须符合通用标准,比如首行必须是表头,第二行开始是数据,可以有跨行单元格(系统会向上寻找到存在的元素并拷贝),系统自动识别数值类型并转化,但并不识别数值列.
网盘系统
本系统没有数据库, 没有数据库, 数据库! 通过在/public/file/目录下存储所有用户需要的csv文件,不支持目录.不得不说很多情况,尤其是web app的系统中文件系统要比DB好的多, 也方便的多,所以本应用是弱后端的.
前后端模块一览
- ag-grid(enterprise): 不用说了, 所见过最强大, 最良心, 文档最完善的网格框架
- chart.js: 一种轻量级的统计图框架, 支持八种图表
- CryptoJS: js加密库, 主要用于用户pwd的sha1加密, 客户端调用, 不知道怎么在node端共用
- fontawesome_pro: 从官网扒下来的pro版本(5.3?),不得不说他们防扣码的手段挺强
- PapaParse: CSV2JSON的一个小工具
- browser-detect: 浏览器/OS嗅探工具,用于全面封杀IE
- body-parser: 非常经典的http body解析中间件,别没事用各种node模块,多研究研究标准库和http!!
- ejs: html模板引擎
- express: 经典web框架
- express-session: 经典的express session框架(支持三种存储(内存, 文件, 数据库(各种数据库)))
- session-file-store: 用于express-session的文件存储(千万别存在内存中)
- path: 有时候路径拼接任务多了,斜杠就不知道怎么摆放了,干脆上框架..
绘图逻辑
每个一级group node制作一张线形图(贝塞尔曲线),如果它有二级group node(children),则作为图中的的多个曲线; 如果没有,则将自身作为唯一的曲线
主菜单一览
- import: 将本地csv文件导入到浏览器中进行计算和渲染
- upload: 上传本地csv文件备份到服务器的文件系统
- server: 打开服务器文件系统
- export: 将浏览器中编辑后的新表格导出为csv文件
- charts: toggle图表界面
- logout: 登出
登录
访问192.168.0.1:81 用户名和密码都是'root' 然后进入主界面, 表格功能和Excel类似, 请自行探索:)
这个项目曾经用到的图片素材: