首頁 >web前端 >前端問答 >nodejs插件有哪些

nodejs插件有哪些

青灯夜游
青灯夜游原創
2021-11-23 17:27:002200瀏覽

nodejs外掛程式有:「node-xlsx」、nodemailer、「node-readbility」、connect、「express-session」、「basic-auth」、bcryptjs、puppeteer、nightmare等。

nodejs插件有哪些

本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

nodejs外掛程式

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:&#39;学生信息&#39;,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(&#39;nodemailer&#39;);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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn