node関連

5764 ワード

nodeは何ですか
  • nodeは、chrome v 8エンジンに基づくjavascriptが実行される環境です.nodeはイベント駆動と非閉塞I/Oモデルを用いて,その軽量化を効率的に行った.nodeのカバンマネージャはnpm
  • です.
  • もっとnodeの関連を調べます.
  • nodeの取り付け(mac)
    //1.   nvm
    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
    //2.   node    
    nvm install 8.11.3
    //3.       
    nvm use 8.11.3
    //4.   node  
    node -v
    //5.  cnpm  npm        
    npm i cnpm -g
    
    関連概念
  • nodeのメインスレッドは、シングルスレッドの
  • です.
  • web非同期方式は、set Timeout、calback、onClick、ajax
  • です.
  • 同期/ブロック、非同期/非ブロック;同期は、アプリケーションの実行フローにとって、カーネル入出力に対してブロックされます.非同期と非ブロックも同じです.4.i/o操作とは、読み書き操作です.非同期を使用しないでください.
  • は環境変数を区分し、コードはprocess.env.NODE_ENVを通している.
  • export NODE_NEV=XXX;//linux
    set NODE_ENV=XXX;//window
    
  • process.nextTick/非同期的に、現在のキューの下のステップ、同期後の実行setImmedite/を第二のキューに入れます./また、パラメータを追加しないと、どのような処理が行われますか?設定時間が必要な場合は、setTimeout
  • を使用する必要があります.
    7.残りの演算子(...形の中に入れると残りの演算子)(s 6文法)
      ...     ,        args    
    setTimeout((...args) => {
        
        console.log(args.length)
    },100, '  ’)
    
  • 演算子を展開します.(...実際の参照に入れると演算子が展開されます.)
  • function add($1,$2) {
        console.log($1,$2)
    }
    
    add(...[1,3]);
    
  • 連結対象(拡張演算子、s 7文法では、nodeバージョン8.5以上が必要)
  • let obj1 = {name:'miaozhirui'};
    let obj2 = {age:18}
    
    let obj3 = {...obj1, ...obj2};
    console.log(obj3)
    
  • nodeの中のjsファイルには、外部層のクローズドのイメージパラメータを表している大域変数argmentsがあります.これらのパラメータは、ファイル内で直接
  • を使用することができます.
    exports requre module __filename __dirname
    
  • モジュール化の役割:低結合、高凝集、同じ機能を実現するコードを一つのファイル(高凝集)に置き、異なる機能を実現するコードを異なるファイル(低結合)に分離する.メンテナンスに便利ですコード競合防止(ネーミング競合)
  • モジュール化を実現する方法はどれらがありますか?単に例を挙げると最終的に淘汰されます.jsの中で単に字面量の対象を定義して、一人はobjの対象を使って、もう一人はobjの対象を使って、唯一の衝突を保証することができなくて、やはり衝突を招くことができます.だから最終的に淘汰されました.
  • ブラウザでは、クローズドによって実装されるモジュール化には主に二つの仕様があり、一つはCMD、一つはAMD(ブラウザ側のモジュール仕様、seajsはCMDの代表作(近依存)、requirejsはAMDの代表作(依存前置)
  • である.
  • nodejsモジュール化された仕様は、comonjsに基づいており、以下の規則が規定されている.
    1.           :  js        
    2.           :          require    
    3.           : exports/module.exports
    
  • のnodejsの中に一つの関数が非同期関数であれば、通常はすべてコールバック関数
  • があります.
  • exportとmodule.exportsの違い:exportとmodule.exportsは同じ対象を指していますが、モジュールが最終的に導出したのはmodule.exportsです.つまり、導き出す時にexports=demoであれば、この言葉は実際には有効ではありません.
  • utils.isarrayとutils.isFunction、utils.inheits(共有方法を継承)
  • util.promisifyは、通常のコールバック関数付きの方法をpromise
  • に変換する.
      //             then  ,         ,  promise  
      read().then(function(data){},function(error){})
      //  read          
      function read(){
        //resolve reject    ,   resolve   then      ;   reject   then      
        return new Promise((resolve, reject) => {
    
        })
    }
    ##############           ################
    let util = require('util');
    let fs = require('fs');
    let readFile = util.promisify(fs.readFile);//   promisify 
    
    readFile('2.js', 'utf8').then(function (data) {
      console.log(data)
    }, function (error) {
      console.log(error)
    })
    
    モジュールの取り付け
  • グローバルインストール
  • npm i xxx-g(コマンドラインのみ使用可能)
  • npm root-gは、グローバルにインストールされたカバンがどこに設置されているかを確認できます.
  • nvmは、nodeのバージョンを切り替えて管理するnodeのバージョンであり、グローバル
  • にインストールすることができる.
  • nrmはnpmを切り替えるソースです.具体的には次のように
  • を使います.
    //  
    cnpm i nrm -g
    nrm ls
    nrm use taobao //     
    
  • http-serverモジュールの使用により、一つのserverを起動します.どのディレクトリをルートディレクトリとしてserverを構築したいなら、どのディレクトリに入りますか?http-serverセット
  • を実行します.
    npm http-server -g
    cd /demo
    http-server;
    
  • は、nodeサード・モジュールidocモジュールに基づいてブログテンプレート
  • を新規に作成することができる.
  • ローカルインストール
  • は、ローカルにインストールされていません.インストール前にディレクトリ内で初期化してインストールの依存性を記録する必要があります.
  • npm init-yは、現在、新たにpackage.jsonファイル
  • を追加します.
  • あるディレクトリの下に第三者モジュールをインストールすると、先に現在のディレクトリでpackage.jsonファイルを探します.見つけられなかったら、父とディレクトリを探します.見つけられないなら、現在のディレクトリの下に
  • をインストールします.
  • package.jsonの中のスクリプトは、ショートカットコマンドスクリプトnpm run dev
  • を構成することができます.
  • 現地の依存は開発依存とプロジェクト依存に分けられます.プロジェクト依存は開発時に必要で、オンラインも必要です.開発依存は開発時に必要です.オンライン時は必要ではありません.
  •   //      
      npm install jquery --save 
      //      
      npm uninstall jquery --save
      //       
      npm install less -D || npm i less --save-dev 
      //      
     npm uninstall less --save-dev
      //      
     npm install //  package.json              
      //      
      npm install jquery@xxx
    
    
    カバンをリリースする
  • まず海外に帰ります.nrm use npm
  • パッケージ名は既存のパケット名と同じではいけません.
  • は、統合のための入り口ファイルが必要です.
  • npm whoami/現在のユーザは誰ですか?
  • 登録アカウントnpm addUser
  • アカウントがあればnpm loginにアカウントを入力すればいいです.
  • パケットnpm publish [floder]/floaderを持たないと、現在のディレクトリ
  • が発行されます.
    ブザー
  • 概念
  • 概念:bufferは であり、入出力データを一時的に保存するための
  • である.
  • 導入理由:js言語にはバイナリデータタイプがありません.TCPフローとファイルフローを処理する際には、
  • が必要です.
  • Nodejsは、バイナリデータの動作
  • を提供するためにバfferオブジェクトを提供する.
  • ブザーオブジェクトは を示すグローバルオブジェクトであり、つまりキャッシュエリアに置くバイト数は
  • を必要とする.
  • bufferは、複数の自己要素からなる配列のようなものであり、効率的に、javascriptにバイナリデータ
  • を表すことができる.
  • ブザーには16進
  • が保存されています.
  • バイト
  • コンピュータ最小記憶計量単位は、BIT(ビット)バイナリデータ
  • である.
  • コンピュータの基本記憶測定単位は、Bytes(バイト)
  • です.
    1024bytes = 1k
    8bit(8    ) = 1bytes
    1   (3 bytes)
    1           255
    1        16   ff
    
  • によって、バーターの3つの方法を定義します.
  • 長さによってバfferを定義する
  • .
    let buffer = Buffer.alloc('6');
    let buffer = Buffer.allocUnsafe(6);
    
  • 配列によってバffer
  • を定義する.
    let buffer = Buffer.from([1,2,3,4])
    
  • 文字列作成ブザー
  • let buffer = Buffer.from('    ')
    
  • ブザーは文字列
    buffer.toString()
    
  • に変換されます.