毕业设计项目,web 平台的色谱数据分析软件。
滤波(移动平均滤波)
->
峰识别(一阶导数法,宽松条件判断色谱波形和导数波形的单增单减)
->
重叠峰分解(垂线法)
->
定性定量分析(峰面积、各组分含量)
首先确保机器安装了 node.js
git clone 本仓库到本地后:
开启服务,分为前端网页服务和后端文件数据处理服务:
开启本地网页服务,在项目根目录执行
npm start
,然后打开localhost:3000
,可以看到前度网页,色谱文件的上传,谱图绘制,分析结果都会通过这个页面展示。
开启后端服务, 执行npm run server
,server 可以提供后端文件数据序列化、下载 xlsx 文件的功能
进入文件夹 原始数据
, 里面有色谱原始 txt 格式文件,在网页中打开,后端即可序列化这个 txt 文件,将其转化为 json 文件,再传回给前端,前端会将色谱绘制出来,依次点击 滤波
、峰检测即可
,前端会开启线程分析色谱,点击保存分析结果,可以下载 xlsx 格式的色谱分析结果。
提供了色谱绘制和分析结果整理成表单,可以下载表单供分析。
使用 supertest 和 Mocha 进行接口测试
执行 npm run test
,获得测试报告
使用 node 流(自动模式)和 JS 的 worker 功能(手动模式),无阻塞高效执行色谱算法。
没有使用数据库服务,纯靠文件的读写,避免服务端数据库I/O,而是在读取流的同时就进行数据运算,减少中间不必要的数据I/O。
使用服务器提供 txt 文件数据序列化和分析结果以 xlsx 文件下载功能。这样的前后端模式可以非常方便的移植到 Electron 桌面端(node 进程和 chroimium 渲染进程)。
ssh root@XXXX.XXX.XXX.XX
wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz
/usr/local/nodejs
:
tar -xvf node-v12.16.3-linux-x64.tar.xz
ln -s /usr/local/nodejs/node-v12.16.3-linux-x64/bin/npm /usr/bin/npm
验证:
```shell
node -v
v12.16.3
npm -v
6.14.4
安装成功!
scp server -r root@xxx.xxx.xx.xx:server
pm2
,用 pm2
启动服务:全局注册 pm2 的命令,否则将找不到 pm2 的命令
npm install -g pm2
ln -s /usr/local/nodejs/node-v12.16.3-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin
下载服务服务端脚本中的所有依赖,比如 express、multer、cors等, npm i --save express cors body-parser ....
添加云服务器安全组规则,如下:
server/app.js
的一些修改:(1)在
server/app.js
中修改监听的 host 为0.0.0.0
, port 为80
,在域名注册的地方(我是在腾讯注册的域名)绑定阿里云服务器的主机,我绑定的是sepu.chegiblog.xyz
这个域名,所以访问http://sepu.chegiblog.xyz
才能正常访问到阿里云服务。(2)将 react 前端页面打包在 build 目录,然后移动到
server/dist
目录,然后在server/app.js
中对外提供静态服务,这样就能访问到server/dist/build
里面的静态页面了,注意前端页面访问服务 API 就要从http://localhost:80
改为http://sepu.chegiblog.xyz:80
app.use(express.static('server/dist/build'))
最后使用 pm2 启动服务: pm2 start server/app.js
, 访问http://sepu.chegiblog.xyz
即可正常访问到阿里云服务了
后面还涉及网站备案,只要在阿里云控制台备案即可。如果不想备案,就直接使用ip地址,不用域名也可。