nodejs大綱

9216 ワード

目次
  • nodejsは何ですか?
  • は、nodejsを使用してサーバ(インターフェース)
  • を作成する.
  • nodejsのモジュールシステム
  • nodejsファイルシステム
  • パスモジュールpath
  • npm関連
  • es 6クラス
  • nodejsのkoaフレームワーク
  • koaフレーム及びその他のnodejsフレーム
  • 最初のkoaサービスハローワード
  • を作成します.
  • サーバの自動再配置
  • koaルーティング
  • koaクロスドメイン設定
  • koaミドルウェア
  • qlフレーム
  • (一)nodejsとは何ですか?
  • サーバで実行されるJavaScriptコード
  • はサービスインターフェース
  • を書くことができます.
  • nodejsは、ローカルファイル
  • を操作することができます.
    (二)nodejsを使ってサーバーを作成する(インターフェース)
    アプリ.jsコードは以下の通りです
    var http = require('http');
    http.createServer(function (request, response) {
    
        //    HTTP    
        // HTTP    : 200 : OK
        //     : text/plain
        response.writeHead(200, {
            'Content-Type': 'text/plain'
        });
    
        response.end('Hello World');
    }).listen(8888);
    
    //         
    console.log('Server running at http://127.0.0.1:8888/');
    
    nodejs app.jsを実行してサービスを開始します.
    (三)nodejsのモジュールシステム
    モジュールのエクスポートとモジュールのインポート
  • エクスポート用module.exports
  • 導入用require
  • 例1:行列をエクスポート
    // m1.js
    module.exports = [];
    
    // index1.js
    let list = require('./m1');
    console.log(list);
    
    実行index1.js
    node index1.js
    
    例2:関数をエクスポート
    // m2.js
    function add(a,b) {
        return a+b;
    }
    module.exports = add;
    
    // index2.js
    let add = require('./m2');
    let sum = add(100, 200);
    console.log('sum', sum);
    
    実行index2.js
    node index2.js
    
    例3:オブジェクトをエクスポート
    // m3.js
    var username = '  ';
    var age = 100;
    
    function say() {
        console.log('  ' + username);
    }
    
    module.exports = {
        username,
        age,
        say
    }
    
    // index3.js
    let obj = require('./m3');
    console.log('   ', obj.username);
    
    obj.say();
    
    実行index3.js
    node index3.js
    
    (四)nodejsファイルシステム
  • ファイル
    //   1     
      input.txt  ,    
    
    // index1.js
    var fs = require("fs");
    
    console.log(1);
    //     
    fs.readFile('input.txt', function (err, data) {
        console.log(2);
        if (err) {
            return console.error(err);
        }
        console.log("    : " + data.toString());
    });
    console.log(3);
    
    //   2
    var fs = require('fs');
    //     
    var data = fs.readFileSync('input.txt');
    console.log("    : " + data.toString());
    console.log("      。");
    
  • を読みだします.
  • 書き込みファイル
    //   1     
    var fs = require("fs");
    
    console.log("      ");
    var str = '        ';
    
    fs.writeFile('data.txt', str, function (err) {
        if (err) {
            return console.error(err);
        }
        console.log('      ')
    });
    
    //   2     
    var fs = require("fs");
    var str = '        ';
    fs.writeFileSync2('data.txt', str);
    console.log('      ');
    
    //   trycatch              
    try {
        fs.writeFileSync2('data.txt', str);
        console.log('      ');
    } catch (error) {
        console.log('    ', error);
    }
    
  • (五)パスモジュールパス
    1.path.join()パス接続は互換性があり、以下の二つの印刷の結果は全部'
    odejs\dist';
    です.
    let path = require('path');
    
    let str1 = path.join('/nodejs','dist');  
    console.log(str1);  
    
    let str2 = path.join('\
    odejs','dist'); console.log(str2);
  • path.resolve()は、経路を絶対パス
    let path = require('path')
    let str1 = path.resolve('nodejs', 'dist');
    console.log('str1', str1);
    
    let str2 = path.join('\
    odejs', 'dist'); console.log('str2', str2);
  • に変更する.
  • __dirname
    let path = require('path');
    console.log(__dirname);  //       
    let str = path.resolve(__dirname, 'dist');
    console.log('str', str);
    
  • (六)npm関係
    目次
  • npmは何ですか?
  • npmはnodejsモジュール(カバン)管理ツール
  • です.
  • モジュール保管サイトhttps://www.npmjs.com/
  • npm一般的な操作
  • 初期化package.json
    npm init   //  
    npm init -y
    
  • nodejsモジュール
    npm i xxx    //     dependencies
    npm i xxx -S  //   
    npm i xxx --save-dev  //    devDependencies
    npm i xxx -D   //   
    
    npm i xxx -g    //   
    
    npm i //     node_modules  ,  npm i             
    
  • をインストールします.
  • 更新nodejsモジュール
    npm update xxx   
    
  • nodejsモジュール
    npm uninstall xxx
    
  • を削除します.
  • 運転指令
    npm run xxx
    
  • (七)クラス
  • 定義「人類」
    class Person {
        //    (    )
        constructor(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        //       
        writeCode() {
            console.log(this.name + '    ');
        }
    
        say() {
            console.log('     :', this.name);
        }
    }
    
    let p = new Person('   ', 28, ' ');
    console.log('p', p);  //       
    p.say();   //      say  
    p.writeCode();  //      writeCode  
    
  • 継承
    //        
    class Man extends Person {
        constructor(name, age, sex) {
            //         (    )
            super(name, age, sex);
            this.haveBeard = true;
        }
    }
    
    let man = new Man('  ', 18, ' ');
    console.log(man);
    man.say();
    man.writeCode();
    
  • (八)nodejsのkoaフレーム
    文書の住所:https://koa.bootcss.com/
    https://www.npmjs.com/package/koa
  • koaフレーム及びその他のnodejsフレーム
  • express.jsフレームワークとkoa.jsフレームワークは同じチームで作った
  • です.
  • egg.jsアリ
  • hapi.js
  • ハローワールド
  • 初期化package.json
  • インストール
  • npm i koa
    
  • は、app.jsを作成します.コードは以下の
    //   koa  
    const Koa = require('koa');
    //     
    const app = new Koa();
     
    // ctx   ,use         (  )
    app.use(ctx => {
      // ctx.body         
      ctx.body = 'Hello Koa';
    });
     
    app.listen(3000);
    
  • です.
  • 起動サービス
    node app.js
    
  • サーバが自動的に再起動されます.
  • グローバル実装nodemonモジュール
    npm i nodemon -g
    
  • プロジェクトを起動する時、
    nodemon app.js    node app.js
    
  • を使用します.
  • koaルート
  • インストール
    npm install koa-router
    
  • app.jsのコードは以下の通りです.
    const Koa = require('koa');
    const Router = require('koa-router');
    
    const app = new Koa();
    const router = new Router();
    
    //   
    router.all('/city/add', (ctx, next) => {
        ctx.body = '    ';
    });
    router.all('/city/getList', (ctx, next) => {
        ctx.body = '    ';
    });
    router.all('/city/update', (ctx, next) => {
        ctx.body = '    ';
    });
    router.all('/city/del', (ctx, next) => {
        ctx.body = '    ';
    });
    //          
    app.use(router.routes());
    
    app.listen(3000, () => {
        console.log('     ,  http://localhost:3000')
    });
    
  • 運転
    nodemon app.js
    
  • ドメインをまたいでapp.jsに以下の言葉を追加すれば、簡単なクロスドメイン設定
    app.use((ctx, next) => {
      ctx.set("Access-Control-Allow-Origin", "*");
      ctx.set("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
      //      
      ctx.set(
        "Access-Control-Allow-Headers",
        `Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild,x-token,sessionToken,token`
      );
      if (ctx.method == "OPTIONS") {
        ctx.body = 200;
      } else {
        next();
      }
    })
    
  • ができます.
  • 中間部品
  • 中間部品は上から下まで
  • を実行する.
  • はnext()を呼び出して次の中間部品
  • を実行する必要があります.
    //    (  ) 
    app.use((ctx, next) => {
        ctx.username = 'lao hu';
        console.log(1);
        next();
    })
    app.use((ctx, next) => {
        console.log(2);
        console.log(ctx.username);
        next();
    })
    app.use((ctx, next) => {
        console.log(3);
        next();
    })
    
      #### 7.        
    
        1.    get    
    
            ```
            //   get        ,  ctx.request.query   
            (ctx, next) => {
                // let name = ctx.request.query.name;
                // let isHot = ctx.request.query.isHot;
                //            
                let {name,isHot} = ctx.request.query;
             }
            ```
    
         2.   post    
    
           *   koa-body
    
             ```
             npm i koa-body
             ```
    
           *  app.js      
    
             ```
             const koaBody = require('koa-body');
             app.use(koaBody());  //          
             ```
    
           *   post    
    
             ```
              //   post        ,    ctx.request.body   
              let {
                     pageNum
                 } = ctx.request.body;
                 console.log('pageNum', pageNum);
             ```
    
           *          ,          
    
             ```
             //   get post      
             app.use((ctx, next) => {
               ctx.params = {
                    ...ctx.request.query,
                ...ctx.request.body
              }
              next();
             }) 
             ```