一次 node 项目部署后的随想
关于部署
服务器部署按道理来说,应该要一步一步来。一个 node 项目的部署需要下面这些。
- node.js 环境用来运行代码
- npm & yarn 包管理工具用来安装各种包
- git 用来同步代码
- nginx 服务器用来做代理
- pm2 用来管理 node 任务
不过这次用的腾讯的宝塔面板,倒是省去了不少功夫。
前端部署
直接通过宝塔面板的【文件】上传功能,把静态 HTML 文件上传到了 /www/server/nginx/html
路径下,这里是宝塔面板的 Nginx 默认放网页的地方。直接替换后就可以通过公网 IP 进行访问了。
后端部署
后端的部署并没有用 shell 命令启动 pm2 或者 egg.js 的服务,而是通过宝塔面板的【网站 - Node 项目】来创建。
- 首先,通过 git 将项目 clone 到服务器上
- 宝塔面板上,添加 Node 项目。
- 选中项目目录,并选择 node 项目启动命令,命令是 package.json 中的 script 中定义的。
- 选择 node 版本,然后创建项目就好了。
node 项目的运行、启动和停止
在一次次运行 node 启动命令的过程中,不禁引起了我对于这方面的思考。
- node 最基本的用法是通过
node index.js
命令执行一个 JavaScript 文件,执行完成后立即退出。 - node 也可以通过 http 模块创建一个简单地接口请求服务,通过 listen 方法监听指定端口。这种情况下服务会持续监听,不会断开。
- node 代码每次变化后都需要重新执行启动命令,比较麻烦。于是就有了 nodemon 模块,每当代码发生变化后,都会自动执行启动命令。
- 无论是 node 还是 nodemon 命令,在 shell 窗口关闭后都会终止服务。于是有了 pm2 这样的工具让 node 服务可以在后台持续运行。
- 而到了我使用的 egg.js,他也拥有 pm2 一样管理 node 服务的能力。详见文档
关于后端的 MVC
之前我一直不知道后端项目到底长啥样。在学习了一些后端课程,又加以实践后,我隐约对后端开发有了些自己的理解。
- 后端本质工作是接收请求 - 处理逻辑 - 产出视图的过程。这里的逻辑包括处理业务和数据,而视图包括模板生成的页面、JSON、XML等可视化的产物(大多数时候接口返回的都是 JSON)。
- 后端项目很多都是基于 MVC 模式来的,在 egg.js 的 目录结构 中就可以看出一些端倪。
- router 管理请求的目的地
- middleware 为中间件
- public 用来放静态资源
- view 用来放视图模板文件
- model 放置领域模型
- controller 用来处理接口请求
- service 用来处理业务逻辑
- structure 用来放置定时任务 嗯!我所知道的常用后端功能齐全了。而显而易见的 model、view、controller 就是大名鼎鼎的 MVC 了。
关于我的项目
目前在基于 puppeteer 做一个爬虫工具,用来帮助老婆爬取公司系统数据,然后帮她自动分析、核对数据,产出分析报告网页以及导出 excel 文件。目前实现了爬虫部分的逻辑,并起了定时任务每天爬取一次。(希望她们公司别发现我,ORZ)后续计划:
- 在 view 目录下用模板引擎渲染视图
- 试着写一些中间件
- 目前爬取的数据直接存在一个 JSON 文件里面,通过 fs 模块存取,后续考虑用 MySQL,并玩一玩 model 的设计。
- 由于功能简单,报告页面直接在一个 HTML 文件里面写的,后续可以改成 vue3+vite 来写,并通过命令部署都服务器。
最后
以上观点仅为一个后端菜鸟的思考,如有任何问题欢迎大佬批评指正~
转载自:https://juejin.cn/post/7195890214211993655