Nodejs プラグインと使用方法の概要

Nodejs プラグインと使用方法の概要

このチュートリアルの動作環境: Windows 7 システム、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 インストール node-xlsx --save

2番目のステップは、モジュールをインポートして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(パス);
  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("studentinfoから*を選択",[],(err,result)=>{
    もしエラーが起きたら
 
    }
    それ以外{
      var excelArr = [];
      var ヘッダー行 = [];
      for(var i in result[0]){
        ヘッダー行をプッシュします(i);
      }
      excelArr.push(ヘッダー行);
      for(var i=0;i<result.length;i++){
        var temp = [];
        for(var j=0;j<headerRow.length;j++){
          temp.push(結果[i][ヘッダー行[j]]);
        }
        excelArr.push(temp);
      }
      試す {
        var buff=excel.build([{name:'学生情報',data:excelArr}]);
        fs.writeFileSync(path.join(__dirname,"./files/01.xlsx"),buff);
        console.log("OK");
      } キャッチ(エラー){
        コンソールログ(エラー);
      }
    }
  });
  conn.end();}writeExcel();

ここで、Excelへの書き込みが少し面倒であることがわかります。なぜなら、ここでは、データベースで得られた結果を再結合してExcelを生成する必要があるからです。

考えてみてください。Express フレームワークでは、生成された Excel ファイルをユーザーが次のようにダウンロードしてローカルに保存できるとしたらどうでしょうか?

2. Nodemailerはメールを送信します

Nodejs には、ユーザーにメールを送信するための多くの使用シナリオがあります。たとえば、ユーザーが登録すると、登録メッセージがユーザーの登録済みメールボックスに送信されることがよくあります。現時点では、この機能を実現するには、nodemailer のサードパーティ モジュールを使用する必要があります。具体的な使用手順は次のとおりです。

対応するモジュールをインストールする

$ cnpm インストール nodemailer --asve
$ 糸を追加ノードメーラー

モジュールをインポートしてコードを完成させる

定数 nodemailer = require('nodemailer'); var transport = nodemailer.createTransport({
  サービス:"qq",
  認証:
    ユーザー:"[email protected]",
    パス:"peshapwpokgvcahe"
  }});var オプション = {
  送信者:"[email protected]",
  宛先:"[email protected]",
  件名:「これは nodemailer から送信された電子メール メッセージです」
  テキスト: "これは nodemailer から送信された電子メール メッセージです" + (new Date()).toLocaleString(),
  html:"<h2>これは <u>nodemail</u> からのテストメールです...</h2>"}; transport.sendMail(options,(err,info)=>{
  もしエラーが起きたら
    コンソールログ(エラー);
  }
  それ以外{
    コンソールログ(情報);
  }});

送信成功後のメッセージ

{ 受け入れられました: [ '[email protected]' ],
  拒否: [],
  封筒時間: 221,
  メッセージ時間: 830,
  メッセージサイズ: 801,
  応答: '250 Ok: キューに追加されました'、
  封筒: { 送信元: '[email protected]'、 宛先: [ '[email protected]' ] },
  メッセージ ID: '<[email protected]>' }

この時点で、プログラムがこの場所で送信要求を完了できれば、上記の情報が返されます。上記の情報が表示されない場合は、ここで返されたエラーを確認する必要があります。

注: 送信サーバーを設定する場合、サードパーティのサーバーまたは組み込みサーバーを使用できます。

考えてみると、送信したコンテンツがテンプレートに置き換えられた場合

const fs = require('fs'); const path = require('path'); クラス MailTemplateModel {
  コンストラクター(ユーザー名、u_id、登録時刻、メール){
    this.userName=ユーザー名;
    u_id は、次のとおりです。
    this.registerTime=登録時間;
    this.mail=メール;
  }
  文字列(){
    var str = `親愛なる${this.userName}様 こんにちは!
    会員登録を歓迎します。あなたのアカウントは ${this.u_id} で、登録時間は ${this.registerTime} です。
    アカウントとパスワードを安全に保管してください。ご質問がある場合は、${this.mail} までメールをお送りください。
    ありがとう!幸せな人生をお祈りします! `;
    str を返します。
  }}module.exports=メールテンプレートモデル;

上記のコードは、送信する電子メールの内容をオブジェクトにカプセル化し、テンプレート構文を使用して文字列を連結します。

考えてみてください。送信するメールの内容を別の外部 txt ファイルに書き込み、String オブジェクトの置換を通じて実装します。この機能をどのように実装するのでしょうか?

3. 子プロセス

サブプロセスを作成し、シェル スクリプトを実行できます。

4. ノードの可読性

ウェブサイトのコンテンツをシンプルなコンテンツに変換できるプラグイン。

5. 接続する

実は express もこのプラグインを使っており、connect を使って Web プログラムを書くこともできます。

6. エクスプレスセッション

これはセッション プラグインです。デフォルトは永久ですが、Tomcat の 30 分とは異なるため、タイムアウトを自分で設定する必要があります。

7. 基本認証プラグイン

最も単純な認証方法に使用され、通常は API リクエストで使用されます。

8. bcryptjs プラグイン (bcrypt のインストール中に常にエラーを報告します)

ソルトを使用してハッシュ処理を行う場合に使用します。

9. 爬虫類コレクション:

(1) 静的ページと API データのクロール: request+cheerio/jsdom。 request は、投稿をリクエストして情報を取得できるリクエスト ライブラリです。 HTML データを取得した後、cheerio などのサードパーティの解析ライブラリを使用して解析できます。 js 動的レンダリング ページの場合は、jsdom の使用を検討できますが、残念ながら、これは同期的であり、結局のところブラウザーではありません。

(2)動的にレンダリングされたページのクロール

puppeteer: Chromium ブラウザを使用し、リクエストが非同期で、効率が高く、多くのブラウザ操作 API が公開されており、非常に便利です。

nightmare: API は、electron のブラウザを使用して非常に簡単に使用できます。使用したことはありませんが、puppeteer ほど柔軟ではないと感じています。

jsdom:sync のせいで、使用を諦めました。セレンと同じです。

10. モーメント

軽量なフォーマット解析ライブラリです。フォーマット解析関数を自分で書くと数十行の関数コードが必要になります。これはとても便利です。

これで、Node.js プラグインとその使用法に関するこの記事は終了です。Node.js プラグインの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  ボックスモデルのサイズの詳細な説明は、パディング、マージン、境界の値によって異なります。

>>:  MySQLデータベースを定期的に自動バックアップする方法

推薦する

JavaScript タイマーの詳細

目次1. 簡単な紹介2. 間隔を設定する2.1 説明2.2 パラメータ2.3 戻り値2.4 使用法3...

Vue2 キューブUI 時間セレクターの詳細な説明

目次序文1. 需要と効果必要効果2. コードの実装index.vue(html)日付方法テスト結果3...

デスクトップ仮想化を実現するために Hyper-V を展開する手順 (グラフィック チュートリアル)

Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

テキストの両側に水平線を描くための CSS のサンプルコード

この記事では、テキスト中央の両側に水平線を引く効果を実現する CSS のサンプルコードを紹介し、皆さ...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

Reactでwindow.print()を使用した際にページが応答しなくなる問題の解決記録について

目次1. 問題の背景: 2. 問題の原因: 3. 問題解決:要約: 1. 問題の背景: window...

Docker stopはすべてのコンテナを停止/削除します

この記事では主に、すべてのコンテナを削除する Docker stop/remove を紹介し、皆さん...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

CSSタグの表示モードの詳細な説明

ラベル表示モード(重要) divタグとspanタグ1. スタイルはまったく同じですが、ラベルが異なり...

ウェブページでmp3またはフラッシュプレーヤーコードを再生する

コードをコピーコードは次のとおりです。 <オブジェクト id="player1&qu...

Dockerコンテナ接続実装手順の分析

一般的に言えば、コンテナが起動した後、ポート マッピングを通じてコン​​テナが提供するサービスを使用...

HTMLボタンを中央に配置する方法

HTML ボタン自体を中央に配置するにはどうすればよいでしょうか? このアイデアは簡単に見つかります...

aタグに下線を付け、クリック前後で色を変える方法

コードをコピーコードは次のとおりです。リンクフォントサイズ: 12px;色: #000000;テキス...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...