站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        nodejs插件有哪些

        nodejs插件有:“node-xlsx”、nodemailer、“node-readbility”、connect、“express-session”、“basic-auth”、bcryptjs、puppeteer、nightmare等。

        nodejs插件有哪些

        本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。

        nodejs插件

        1、node-xlsx對Excel的讀與寫

        excel的導(dǎo)入導(dǎo)出是很多系統(tǒng)當(dāng)中都會出現(xiàn)的問題,在NodeJS當(dāng)中,也不例外,現(xiàn)在,我們就通過NodeJS來實現(xiàn)Excel文件的讀寫

        NodeJS里面,實現(xiàn)文件的讀與寫,我們使用的是第三方的工具node-xlsx這個模塊,這個模塊同時支持2003的Excel(.xls)格式與支持2007的Excel的格式(.xlsx)

        現(xiàn)在,我們就看一下這個模塊的具體操作

        對Excel的讀取操作

        首先,我們需要安裝這個模塊

        cnpm install node-xlsx --save

        第二步,導(dǎo)入該模塊,讀取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);

        上面的代碼就已經(jīng)完成了對Excel文件的讀取操作,這個時候我們讀出來的是一個對象,可以在控制臺看到其中的信息

        對Excel的寫入操作

        現(xiàn)在,我們就演示將數(shù)據(jù)庫的一個張表的信息讀取出來,然后保存到本地電腦當(dāng)中,代碼如下

        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:'學(xué)生信息',data:excelArr}]);         fs.writeFileSync(path.join(__dirname,"./files/01.xlsx"),buff);         console.log("ok");       } catch (error) {         console.log(err);       }     }   });   conn.end();}writeExcel();

        在這里,我們發(fā)現(xiàn),寫入excel稍微麻煩一點,因為在這里,我們需要將數(shù)據(jù)庫中得到的結(jié)果進(jìn)行重新的組合,再生成Excel

        思考:如果在Express框架當(dāng)中,生成好的Excel文件如下讓用戶去下載,保存到本地?

        2、nodemailer對郵件的發(fā)送

        nodejs對發(fā)送郵件給用戶,使用的場景也非常多,例如,我們經(jīng)常會看到一個用戶注冊以后,就會發(fā)送一封注冊信息到用戶所注冊的郵箱當(dāng)中去, 這時候,如果我們要完成這一個功能,就需要使用一個nodemailer的第三方模塊,具體使用步驟如下:

        安裝相應(yīng)模塊

        $ cnpm install nodemailer --asve $ yarn add nodemailer

        導(dǎo)入模塊,完成代碼

        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發(fā)送的郵件信息",   text:"這是一封來自nodemailer發(fā)送的郵件信息"+(new Date()).toLocaleString(),   html:"<h2>這是一封來自<u>nodemail</u>的測試郵件···</h2>"};transport.sendMail(options,(err,info)=>{   if(err){     console.log(err);   }   else{     console.log(info);   }});

        發(fā)送成功以后的信息

        { 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個地方完成我們的發(fā)送請求,就會返回上面的信息,如果沒有看到上面的信息,我們就需要在這個地方去查看一下error返回的信息

        說明:在此得配置發(fā)送服務(wù)器的時候,我們可以使用第三方的服務(wù)器,也可以使用內(nèi)置的服務(wù)器

        思考:如果將發(fā)送的內(nèi)容用模板去完成替換

        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}。     請注意保管好您的賬號與密碼,如有問題歡迎發(fā)送郵件至${this.mail}!     謝謝!祝您生活愉快!`;     return str;   }}module.exports=MailTemplateModel;

        上面的代碼就是將要發(fā)送的郵件內(nèi)容封裝成了一個對象,然后使用模板語法進(jìn)行了拼接字符串

        思考:上在的郵件發(fā)送內(nèi)容,我們寫在外部單獨的txt文件當(dāng)中,然后通過String對象的replace來進(jìn)行實現(xiàn),這個功能怎么實現(xiàn)?

        3、child_process

        可以創(chuàng)建子進(jìn)程,執(zhí)行shell腳本。

        4、node-readbility

        一個可以將網(wǎng)站內(nèi)容化為簡單內(nèi)容的插件。

        5、connect

        其實express也使用這個插件,使用connect也可以寫web程序。

        6、express-session

        這是一個使用會話的插件,默認(rèn)是永遠(yuǎn),和tomcat30分鐘不同,所以需要自己設(shè)置超時時間。

        7、basic-auth插件

        用于最簡單的認(rèn)證方式,一般用在api請求上。

        8、bcryptjs插件(bcrypt安裝過程中總報錯)

        用來使用加鹽的方式進(jìn)行hash處理。

        9、爬蟲類集錦:

        (1)靜態(tài)頁面和api數(shù)據(jù)的爬取:request+cheerio/jsdom,request是一個請求庫,可以請求post、get信息,獲取html數(shù)據(jù)后,使用第三方的解析庫解析,cheerio就可以,對于js動態(tài)渲染頁面可以考慮使用jsdom,但是很可惜,這個是同步的,而且畢竟不是瀏覽器。

        (2)動態(tài)渲染的頁面的爬取

        puppeteer:使用chromiun瀏覽器,異步請求,效率很高,而且開放了很多操作瀏覽器的api,很方便。

        nightmare:api使用非常方便的,使用electron中的瀏覽器,雖然沒有使用過,但是感覺這個沒有puppeteer靈活。

        jsdom:同步已經(jīng)讓我放棄了它的使用。和selenium一樣。

        10、moment.js

        這是一個輕量級格式解析庫,如果自己寫格式解析函數(shù),需要幾個十幾行的函數(shù)代碼,用這個很方便。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品人妻少妇一区二区三区在线 | 亚洲日韩精品无码专区网站| 999精品在线| 精品国产三级a乌鸦在线观看| 国产高清国产精品国产专区| 奇米精品视频一区二区三区| 欧美精品区一级片免费播放| 91精品国产人成网站| 91麻豆精品视频| 午夜精品久久久久久中宇| 精品无码国产污污污免费网站国产 | 国产精品九九久久免费视频| 国产欧美日韩综合精品一区二区| 亚洲欧美日韩国产成人精品影院| 国产精品青草久久久久福利99| 精品视频在线免费观看| 国产精品久久午夜夜伦鲁鲁| 亚洲高清国产AV拍精品青青草原| 免费国产在线精品一区| 国产麻豆精品入口在线观看| 999国产精品色在线播放| 精品一区二区三区免费| 99久久成人国产精品免费| 国产人妖乱国产精品人妖| 久久国产欧美日韩精品| 久久夜色精品国产噜噜噜亚洲AV| 亚洲精品乱码久久久久66| 中文字幕亚洲精品无码| 伊人精品视频在线| 亚洲欧洲成人精品香蕉网| 亚洲精品岛国片在线观看| 在线精品亚洲| 亚洲av成人无码久久精品| 亚洲国产精品无码久久久蜜芽| 中文精品久久久久人妻不卡| 亚洲中文字幕无码久久精品1| 正在播放国产精品每日更新| 一本色道久久综合亚洲精品| 亚洲国产精品无码专区在线观看| 日韩精品国产另类专区| 久久棈精品久久久久久噜噜|