当前位置: 首页 > 后端技术 > Node.js

【nodejs实战】实现一个网页小工具

时间:2023-04-03 20:48:49 Node.js

通过导入excel表格发送自定义邮件。本程序的功能是上传excel表格,然后编辑邮件模板,根据excel中的各个内容,给大家发送定制化的邮件。一个典型的应用场景,工资单,模板都是一样的,但是每个人都有个性化的内容。之所以会这样发展,是因为公司hr小姐姐说以后发工资单不会发邮件,而是发纸质工资单,然后调侃是不是因为没有自动发邮件的工具。在网上搜索了一下,好像没有什么好的工具,然后就尝试着实现了这个功能。贴上github地址https://github.com/win5do/node-excel2email主要目的是上传文件读取excel数据根据邮件模板创建不同的邮件发送邮件在github上搜索,找到两个库,node-xlsx和nodemailer,前者可以帮我解析excel表格,后者可以通过smtp服务器发送邮件。接下来我们需要做的是实现一个简单的邮件模板,编写一个方便用户使用的前端页面,将以上流程串联起来,最后将发送邮件后的状态反馈给用户。技术选择后端:nodeexpresssessionpug前端:jquerymaterialize-css(css框架)webpack通信:ajaxsocket.io工具:node-xlsxnodemailerumeditor(富文本编辑器)multer(文件上传)本程序所有功能在一个页面中,没有使用vue,react等框架,pug+jquery+materialize-css搞定,主要是平时的工作脱离了vue的前端,想体验一下传统的玩法。materialize-css是一个类似于bootstrap的css框架,风格是material-design风格,非常漂亮。对于无用的数据库,通过session区分用户,数据直接存入内存,用完即刻销毁。因为每封邮件的发送结果都需要实时反馈给前端,所以这里使用socket.io让服务端通过tcp连接向客户端发送消息。查了一些资料,使用ajax轮询或者Server-SentEvents也可以实现,但是websocket更优雅,对多用户的支持更好。对于前端资源,js模块的scss样式还是由webpack处理的。好像是用gulp来retro用的,但是一想到要写很多任务,webpack的loader更方便,配置也比较熟悉。可以通过watch实时编译。富文本编辑器选了很久。Quill在github上star最多,但是对中文的支持不是很好。仍然有很多错误或配置超级复杂。我还是选择百度的umeditor,功能比较齐全,没有明显的bug,但是不支持umd,囧。效果预览最后,nodejs生态各种轮子齐全,简单易用,几个轮子拼装功能满足需求,全后端无缝切换,开发效率高。这就是nodejs的优势。本文仅记录项目实现过程。把一个想法付诸实践是非常有益的。参考资料写一个简单的JavaScript模板引擎使用node.js实现HTML5原生彗星(长连接)学习NodeJS第8天:Socket通信