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:'学生信息',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

这是一个轻量级格式解析库,如果自己写格式解析函数,需要几个十几行的函数代码,用这个很方便。

到此这篇关于nodejs插件及用法整理的文章就介绍到这了,更多相关nodejs插件有哪些内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 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) 现在,我们就看一下这

  • 微信小程序图表插件wx-charts用法实例详解

    本文实例讲述了微信小程序图表插件wx-charts用法.分享给大家供大家参考,具体如下: 微信小程序图表插件(wx-charts)基于canvas绘制,体积小巧,支持图表类型饼图.线图.柱状图 .区域图等图表图形绘制,目前wx-charts是微信小程序图表插件中比较强大好使的一个 支持图标类型 饼图 pie 圆环图 ring 线图 line 柱状图 column 区域图 area 雷达图 radar 如何使用? 1. 直接引用编译好的文件 dist/charts.js(js下载地址) .wxml

  • jquery动态导航插件dynamicNav用法实例分析

    本文实例讲述了jquery动态导航插件dynamicNav用法.分享给大家供大家参考.具体如下: 这是一款自己写的jquery动态导航插件-dynamicNav,具体思路是: 第一.给所有的li里插入一个span标签,且包含li里面的a标签 第二.复制一份a标签,插入到span里,现在span里有两个a标签 第三.根据传入的参数判断是垂直切换还是水平的,如果是垂直的,将span的宽度改为一个a标签的宽度,这时两个a标签就垂直排列了,这里一定要将li的overflow:hidden;否则会看到2个

  • jQuery自适应轮播图插件Swiper用法示例

    本文实例讲述了jQuery自适应轮播图插件Swiper用法.分享给大家供大家参考,具体如下: 运行效果截图如下: 示例代码如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-sca

  • JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】

    本文实例讲述了JS条形码插件JsBarcode用法.分享给大家供大家参考,具体如下: 这里介绍一下在GitHub生成条形码的js插件→JsBarcode 条码支持的有: CODE128   CODE128 (自动模式切换)   CODE128 A/B/C (强制模式) EAN   EAN-13   EAN-8   EAN-5   EAN-2   UPC (A) CODE39 ITF-14 MSI   MSI10   MSI11   MSI1010   MSI1110 Pharmacode Cod

  • Maven 常用插件的详细整理

    Maven 常用插件的详细整理 1.源码分析 <artifactId>maven-pmd-plugin</artifactId> 2.代码格式检查 <artifactId>maven-checkstyle-plugin</artifactId> 3.代码相似度检查 <groupId>org.codehaus.mojo</groupId> <artifactId>simian-maven-plugin</artifac

  • jQuery网页选项卡插件rTabs用法实例分析

    本文实例讲述了jQuery网页选项卡插件rTabs用法.分享给大家供大家参考.具体如下: 这里介绍jQuery网页选项卡插件rTabs用法,一共演示了4种TAB选项卡样式,第一种:默认样式:自动运行.无动画效果.Hover事件:第二种:自动运行.向上滚动.支持Hover事件的TAB选项卡菜单:第三种:自动运行.渐入淡出.支持Hover事件的选项卡:第四种:自动运行.向左滚动.点击事件的网页选项卡,选一个你喜欢的放在你的网站吧. 先来看看运行效果截图: 在线演示地址如下: http://demo.

  • JQuery validate插件Remote用法大全

    jquery.validate是jquery旗下的一个验证框架,借助jquery的优势,我们可以迅速验证一些常见的输入,还可以自己扩充自己的验证方法,并且对国际化也有很好的支 JQuery.validate.js 在表单验证中经常使用,初学,对于其中Remote的使用说明一下. . 基本解释 JQuery主要用于DOM树和CSS树的检索和后面的操作的一套方法,JQuery.validate.js是对JQuery的一个插件,可以认为是对JQuery在某个特殊场景下的扩展,而Validate就是对表

  • JQuery表单验证插件EasyValidator用法分析

    本文实例讲述了JQuery表单验证插件EasyValidator用法.分享给大家供大家参考.具体如下: 本插件的宗旨是:用户无需写一行JS验证代码,只需在要验证的表单中加入相应的验证属性即可,让验证功能易维护,可扩展,更容易上手. DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以针对不同用户特殊需求,自行写正则吧. EasyValidator实现的功能: 1.提示功能(在表单或者其他标签中加入tip="想提示的文字") 如: 复制代码 代码如下: <inp

  • Jquery树插件zTree用法入门教程

    本文实例分析了Jquery树插件zTree用法.分享给大家供大家参考.具体分析如下: 关于zTree的介绍就搜吧. 这个例子的最终效果如下: 鼠标移动到一级目录时出现全选链接,点击全选链接该目录下的所有子项都被添加到收件人的文本框中,当然点击单个子项则添加一个.至于要添加些什么信息由自己决定. 1. 下载zTee,页面引入jquery.js,根据功能需求添加zTree相应的js和css 复制代码 代码如下: <script type="text/javascript" src=&

随机推荐