初めて学ぶノート

5145 ワード

NODE学習ノート(一)
NODEって何?
  • NODEはバックグラウンド開発言語ではありません.私たちが知っているJAVA、PHP、C#、.NET(dot net)...こそバックグラウンド開発言語です.NODEはただのツールで、V 8エンジンに基づいてJSをレンダリングし解析するプラットフォームとツール(ブラウザに似ています)
  • です.
    実際の開発では、一般的にNODEをサーバ側にインストールしています.これにより、サーバ側でJSコードを作成してサーバ側のビジネスロジックを処理することができます.=>JSは、クライアントブラウザでクライアントのビジネスロジック(フロントエンド開発言語)を処理するだけでなく、サーバ側のNODE環境でサーバ側のビジネスロジックを処理することもできます.(バックグラウンド開発言語)だから、JSは全スタック開発言語だと言い換えることができます.
    NODEはどのようにJSコードを実行します
  • WebStorm:JSファイルの空白のところで、右クリックして、Run xxx.jsを見つけて、WBの中でNODE環境を呼び出して私達のJSコードを実行します(現在WBを使っています)
  • 現在のJSが存在するファイルディレクトリでDOSウィンドウを開き、DOSでnode xxx.jsを実行することは、JSコードをNODE環境で
  • を実行することに相当する.
  • NODEのREPLコマンド:コマンドラインを開き、直接nodeを入力して'>'が表示されたことはREPLに入ったことを示し、REPL(Read-Eval-print Loop、略称REPL、「読み取り-評価-出力」サイクル)簡単でインタラクティブなプログラミング環境です.REPLは独立した単機プログラムとしても、他のプログラムにも含まれるプログラムとしても使用できます.「プログラムを実行し、結果を表示する」というインタラクティブな方法を提供します.debugging、testing、または操作を実行するだけでいくつかの結果を得ることができます.
  • NODEの強み
  • 速:V 8エンジンのレンダリングと解析に基づく
  • NODEは、イベント駆動に基づく単一スレッドの非同期動作
  • である.
  • NODEは、ブロックのないI/O操作I/O:input/outputによるファイルの削除変更操作
  • を提供する.
    1、JSはクライアントブラウザの中で実行する時、クライアントのローカルファイルに対してI/O操作を行うことができますか?答え:いいえ、私達はクライアントの安全を保証するため、JSは先端開発言語としてクライアントのローカルファイルを操作することができなくて、しかしブラウザも一部のユーザーの自主的な操作を必要とする機能を提供して、例えば:ピクチャーなどをアップロードします
    2、JSはサーバー側のNODE環境で運行する時、サーバー上のファイルに対してI/O操作を行うことができますか?
    学習NODEモジュールから学ぶ
  • 内蔵モジュール:自身が持参したhttp、url、fsなど
  • http:HTTPサーバ機能を提供する.
  • url:URLを解析します.
  • fs:オペレーティングファイルシステム.
  • その他
  • カスタムモジュール:自分で作成した
  • サードパーティモジュール:他の人が書いたものを呼び出して使用します.
  • NODEをインストールした後、サードパーティモジュールを管理するためにnpmコマンドを持参します.
  • 必要なサードパーティモジュールはすべてhttps://www.npmjs.com/このサイトでは

  • npmを使用したモジュールのインストール(2種類に分けて)
    
      1、     (global)
        npm install xxx(    ) -g
        npm uninstall xxx -g   //          
         // mac os           sudo
        sudo npm install xxx(    ) -g
        sudo npm uninstall xxx -g  
    
      2、         
        npm install xxx(    )
        npm uninstall xxx 
    

    モジュールをグローバルにインストールする問題:
    今後、どのプロジェクトディレクトリでも、コマンド操作を使用して操作できます.また、次の2つの問題があります.
  • このモジュールは「コードインポート方式」では使用できません.
  • インストールはグローバルに多くの場合バージョン番号の衝突を招くことがあります.例えば、私が以前インストールしたのはLESSの2.7バージョンで、以前のプロジェクトはすべてこのバージョンを使用して開発されていましたが、その後LESSはアップグレードされ、3.1にアップグレードされました.新しいバージョンは以前のバージョンとは違います.もし全局で最新のものをインストールしたら、元のプロジェクトはLESSを使用できません.
  • モジュールを現在のプロジェクトにインストールする問題:
  • は、グローバルにインストールするようにコマンドを使用することはできませんが、JSインポート方式を使用することができ、ちょうどグローバルとは逆の
  • です.
    ソリューション:package.jsonファイルのscriptsという属性で構成
          "scripts": {  //->  NPM    
                 "myScript": "lessc -v"   //  version  
           }
          //             npm run myScript,               lessc -v     
    
  • 現在のプロジェクトにはnode_modulesフォルダがあります.格納されているのは、現在のプロジェクトで使用するモジュールです(このフォルダは大きく、他の人に渡す必要がある場合は非常に扱いにくいです).
  • ソリューション:gitHubをアップロードするときにプロジェクトディレクトリにファイルを追加:.gitignoreこのファイルでアップロードするときに無視するファイルを構成できます.これらの無視されたファイルはアップロードされません.
    3.我々はいくつかのサードパーティモジュールをAプロジェクトの下にインストールして、Bプロジェクトは直接導入して使用することができなくて、もし必要ならばまたBプロジェクトの中でもう一度ダウンロードしてインストールする必要があります(npm installを通じて)
    ソリューション:サードパーティ製モジュールのインストール時に、現在のプロジェクトに必要なモジュールリストをpackage.jsonの開発依存項目に書き込む必要があります(以下のコマンドで)npm install xxx--save-devを開発依存モジュールリスト(「devDependencies」)npm install xxx--saveを生産依存モジュールリストに入れる必要があります(「dependencies」)
    もう一つのBプロジェクトにこれらのモジュールが必要であれば、私たちは一つ一つインストールする必要はありません.package.jsonファイルをBプロジェクトにコピーしてnpm installを実行すればいいだけです.このようなシステムは、私たちの開発依存リストに従って一つ一つダウンロード=>「走る環境」をデフォルトで設定します.package.jsonはどうですか.
    //             ,                    :
     //npm init -y
    //       ,                 :package.json
       {
         "name": "20170222", //->    
         "version": "1.0.0", //->      
         "description": "", //->       
         "main": "temp.js", //->       (  )
         "dependencies": {  //->              (  :        )
           "less": "^2.7.2"
         },
         "devDependencies": {}, //->              (  :      )
         "scripts": {//->    
           "test": "echo \"Error: no test specified\" && exit 1",
           "myScript": "lessc -v"
         },
         "keywords": [],
         "author": "",
         "license": "ISC"
       }
    

    NODE環境では、JSごとに個別のモジュールとして理解できると考えられているため、JSファイルを作成するだけでモジュールを作成でき、各モジュールとモジュールの間に干渉はありません.
    モジュールとモジュール間のメソッドの相互呼び出し:
    Aモジュール:fn Bモジュール:fnを呼び出すこの方法node環境ではrequireでインポートし、カスタムモジュールをインポートする際に'./'を追加する必要があります.ここでは現在のパスで、具体的なパスに基づいて追加します.サードパーティや内蔵モジュールをインポートする際に'./'(特例)を追加して直接書くことはできません.ディレクトリを指定する必要はありません.モジュール名を直接書くだけでいいです.(自分でnode_modulesにインストールされているサードパーティモジュールを探し、内蔵に見つからない場合は、それ以上ない場合はエラーを報告します)
    var a = require('./A')   //       
    var lessc = require('less') //     
    var http = require('http') //    
    
     A    (A.js )
    function fn(){
        console.log('my name is A')
    }
    //-> A                   ,              
    module.exports = {
        fn:fn
    }
    
     B    (B.js )
    // ->   A  
    var a = require('./A')
    function fn(){
        console.log('my name is A')
    }
    a.fn();
    

    ***