本程序功能是上傳excel表格,而後編輯郵件模板,根據excel每條內容,給每一個人發送定製郵件。典型應用場景工資條,模板是相同的,可是每一個人都有個性化的內容。css
開發這個的原由是公司的hr小姐姐說之後工資條不經過郵件發送,而是紙質工資條,而後調戲下說是否是由於沒有自動發郵件的工具。網上一搜好像沒什麼好的工具,而後就嘗試着實現這個功能。前端
貼上github地址https://github.com/win5do/node-excel2emailvue
github上一搜,找到node-xlsx和nodemailer兩個庫,前者能夠幫我解析excel表格,後者則能夠經過smtp服務器發送郵件。下面咱們要作的就是實現一個簡單的郵箱模板,編寫一個易用的前端頁面給用戶,那上面那個流程串聯起來,最後把發送郵件後的狀態反饋給用戶。node
這個程序功能都放在一個頁面裏,也就沒用vue、react等框架,直接pug + jquery + materialize-css搞定,主要是平時工做都是vue前端端分離,想體驗一下傳統的玩法。materialize-css是一個和bootstrap相似的css框架,風格是meterial-design風格,很是漂亮。react
沒有用的數據庫,經過session區分用戶,數據直接放到內存裏,用後即焚。由於須要把每一個郵件的發送結果即時反饋給前端,這裏用到socket.io,經過tcp鏈接讓服務器給客戶端發送消息。查了一些資料,使用ajax輪詢或Server-Sent Events也能夠實現,不過仍是websocket更優雅,對多用戶支持更好。jquery
前端資源這塊,js模塊 scss式樣仍是經過webpack處理,原本像復古用用gulp,但一想到要寫一大堆task,仍是webpack的loader方便,配置的也比較熟了,經過watch就能即時編譯。webpack
富文本編輯器挑了半天,github上星最多的quill,可是對中文支持不是很好,還有不少一大堆bug或者配置起來超複雜,仍是選用了百度的umeditor,功能比較全,沒有明顯bug,可是不支持umd,囧。git
nodejs生態的各類輪子齊全,使用簡單,把幾個輪子組裝起來功能知足需求,全後端無縫切換,開發效率槓槓的,這就是nodejs的優點所在。僅以此文記錄項目實現的過程。把一個想法實現,仍是頗有成就感的。github
編寫一個簡單的JavaScript模板引擎
用node.js實現HTML5原生的comet(長鏈接)
學習 NodeJS 第八天:Socket 通信web