nodejs外掛程式有:「node-xlsx」、nodemailer、「node-readbility」、connect、「express-session」、「basic-auth」、bcryptjs、puppeteer、nightmare等。
本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
1、node-xlsx對Excel的讀取與寫入
excel的導入匯出是很多系統當中都會出現的問題,在NodeJS當中,也不例外,現在,我們就透過NodeJS來實作Excel檔案的讀寫
NodeJS裡面,實作檔案的讀與寫,我們使用的是第三方的工具node-xlsx這個模組,這個模組同時支援2003的Excel(.xls)格式與支援2007的Excel的格式(.xlsx)
現在,我們就看一下這個模組的具體操作
對Excel的讀取操作
首先,我們需要安裝這個模組
cnpm install node-xlsx --save
第二步,匯入模組,讀取Excel檔案
const xlsx=require('node-xlsx');const DBUtil=require('./utils/DBUtil.js');const fs=require('fs');const path=require('path');function readExcel(path){ var excel=xlsx.parse(path); return excel;}var obj=readExcel(path.join(__dirname,"./files/studentinfo.xls"));console.log(obj[0].data);
上面的程式碼就已經完成了對Excel檔案的讀取操作,這個時候我們讀出來的是一個對象,可以在控制台看到其中的資訊
對Excel的寫入操作
現在,我們就示範將資料庫的一個表的資訊讀取出來,然後儲存到本機當中,程式碼如下
const excel=require('node-xlsx');const fs=require('fs');const path=require('path');const DBUtil=require('./utils/DBUtil.js');function writeExcel(){ var conn=DBUtil.getConn(); conn.query("select * from studentinfo",[],(err,result)=>{ if(err){ } else{ var excelArr=[]; var headerRow=[]; for(var i in result[0]){ headerRow.push(i); } excelArr.push(headerRow); for(var i=0;i<result.length;i++){ var temp=[]; for(var j=0;j<headerRow.length;j++){ temp.push(result[i][headerRow[j]]); } excelArr.push(temp); } try { var buff=excel.build([{name:'学生信息',data:excelArr}]); fs.writeFileSync(path.join(__dirname,"./files/01.xlsx"),buff); console.log("ok"); } catch (error) { console.log(err); } } }); conn.end();}writeExcel();
在這裡,我們發現,寫入excel稍微麻煩一點,因為在這裡,我們需要將資料庫中得到的結果進行重新的組合,再生成Excel
##思考:如果在Express框架當中,生成好的Excel檔案如下讓使用者去下載,儲存到本機?
2、nodemailer對郵件的發送
#nodejs對發送郵件給用戶,使用的場景也非常多,例如,我們經常會看到一個用戶註冊以後,就會發送一封註冊資訊到用戶所註冊的郵箱當中去, 這時候,如果我們要完成這一個功能,就需要使用一個nodemailer的第三方模組,具體使用步驟如下:安裝對應模組$ cnpm install nodemailer --asve $ yarn add nodemailer導入模組,完成代碼
const nodemailer=require('nodemailer');var transport = nodemailer.createTransport({ service:"qq", auth:{ user:"365055754@qq.com", pass:"peshapwpokgvcahe" }});var options={ from:"365055754@qq.com", to:"lovesnsfi@live.com", subject:"这是一封来自nodemailer发送的邮件信息", text:"这是一封来自nodemailer发送的邮件信息"+(new Date()).toLocaleString(), html:"<h2>这是一封来自<u>nodemail</u>的测试邮件···</h2>"};transport.sendMail(options,(err,info)=>{ if(err){ console.log(err); } else{ console.log(info); }});發送成功以後的信息
{ accepted: [ 'lovesnsfi@live.com' ], rejected: [], envelopeTime: 221, messageTime: 830, messageSize: 801, response: '250 Ok: queued as ', envelope: { from: '365055754@qq.com', to: [ 'lovesnsfi@live.com' ] }, messageId: '<2fbef9f1-1041-fd59-1111-0b987e8d81da@qq.com>' }這個時候,只要程式能夠在這u個地方完成我們的發送請求,就會返回上面的信息,如果沒有看到上面的信息,我們就需要在這個地方去查看一下error返回的信息
說明:在此要配置發送伺服器的時候,我們可以使用第三方的伺服器,也可以使用內建的伺服器
思考:如果將發送的內容用模板去完成替換
const fs=require('fs');const path=require('path');class MailTemplateModel{ constructor(userName,u_id,registerTime,mail){ this.userName=userName; this.u_id=u_id; this.registerTime=registerTime; this.mail=mail; } toString(){ var str=`尊敬的${this.userName}你好! 欢迎注册成为我们的会员,你的账号为${this.u_id},你的注册时间为:${this.registerTime}。 请注意保管好您的账号与密码,如有问题欢迎发送邮件至${this.mail}! 谢谢!祝您生活愉快!`; return str; }}module.exports=MailTemplateModel;上面的程式碼就是將要傳送的郵件內容封裝成了一個對象,然後使用模板語法進行了拼接字符串
#思考:上在的郵件發送內容,我們寫在外部單獨的txt檔案當中,然後透過String物件的replace來實現,這個功能怎麼實現?
3、child_process
可以建立子進程,執行shell腳本。4、node-readbility
#一個可以將網站內容化為簡單內容的外掛程式。5、connect
其實express也使用這個插件,使用connect也可以寫web程式。6、express-session
這是一個使用會話的插件,預設是永遠,和tomcat30分鐘不同,所以需要自己設置超時時間。7、basic-auth外掛程式
#用於最簡單的認證方式,一般用在api請求上。8、bcryptjs外掛程式(bcrypt安裝過程中總報錯)
用來使用加鹽的方式進行hash處理。9、爬蟲類集錦:
#(1)靜態頁面和api資料的爬取:request cheerio/jsdom,request是一個請求庫,可以請求post、get信息,獲取html數據後,使用第三方的解析庫解析,cheerio就可以,對於js動態渲染頁面可以考慮使用jsdom,但是很可惜,這個是同步的,而且畢竟不是瀏覽器。 (2)動態渲染的頁面的爬取puppeteer:使用chromiun瀏覽器,非同步請求,效率很高,而且開放了很多操作瀏覽器的api,很方便。
nightmare:api使用非常方便的,使用electron中的瀏覽器,雖然沒有使用過,但是感覺這個沒有puppeteer靈活。
jsdom:同步已經讓我放棄它的使用了。和selenium一樣。
10、moment.js
這是一個輕量級格式解析函式庫,如果自己寫格式解析函數,需要幾個十幾行的函數程式碼,用這個很方便。
更多node相關知識,請造訪:nodejs 教學! !
以上是nodejs插件有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!