Node.js基礎學習(第一幕)

一、Node.js概述:
    ①Node.js是使用C++編寫的基於V8引擎的js運行時環境。——js解釋器
    ②Node.js是一門後端編程語言,基於ECMAScript的,提供了不少前端js中沒有的擴展對象。——後端編程語言
      前端js中的對象:
      1)ES原生對象:String、Number、Math、Date、Error、RegExp、Function、Array、Boolean、Object
      2)BOM&DOM
      3)自定義對象
      Node.js中的對象:
      1)ES原生對象
      2)Node.js核心對象
      3)大量的第三方對象
      4)自定義對象
    ③Node.js能夠編寫獨立的web服務器端應用,無需藉助於任何其餘web服務器。——web服務器
      Node.js的意義:
      1)執行效率高
      2)使用一門語言統一了先後端開發——基於ES  ——》  全棧工程師
      Node.js的特色:
      1)單線程邏輯處理
      2)非阻塞
      3)異步I/O處理
      4)事件驅動編程
二、Node.js的兩種運行模式:
    ①交互模式——用於測試
        在交互模式下,Node.js自帶的模塊無需引入,直接使用。
        執行方法:輸入js語句,回車執行
    ②腳本模式——用於開發
        把要執行的js語句編寫在一個文本文件中 ,一次性的提交給nodejs解釋器執行。這個文本文件能夠是.js結尾的,也能夠是沒有後綴的。    
        在腳本模式下,除了全局對象的成員外,全部其餘模塊和方法必須使用require()引入。
        執行方法:node  文件路徑
    注意:Node.js中沒有BOM和DOM對象!

三、Node.js的基礎語法和ES6新特性
    ①數據類型
        1)原始類型
            原始類型的數據直接賦值就能夠:string、number、boolean、null、undefined
        2)引用類型——對象類型
        包含ES原生對象、Node.js對象、自定義對象: 引用類型數據通常使用new關鍵字建立
    ②模板字符串
        ES6中提供的一種新的字符串形式。
        1)使用模板字符串定義的字符串,數據能夠實現換行 // `內容:${變量}`
        2)能夠在模板字符串內部進行變量之間的運算  //`內容:${變量+變量}`
    ③嚴格模式:是ES5新增的比普通模式更加嚴格的一種js運行模式。——全新的模式
      使用方法:2個範圍
      1)是整個腳本文件的起始啓用嚴格模式
          在腳本文件開頭:"use strict";
      2)在單個函數中啓用嚴格模式。
          function(){ "use strict"; ......}
     嚴格模式的規格:
      1)修改常量的值是非法的。——將靜默失敗升級爲錯誤
      2)不容許對未聲明的變量賦值
      3)匿名的this再也不指向全局,是undefined
    ④變量的做用域
    全局做用域、局部做用局(函數做用局)、塊級做用域
    塊級做用域:只能在當前代碼塊中使用
    代碼塊:任何一個大括號{}就是一個「代碼塊」,if/for/while,每個代碼塊就是一個獨立的做用域
    在代碼塊中使用let聲明塊級做用域變量,出了塊,就不能訪問。
    ⑤邏輯結構
    (1)循環結構前端

      
        for....of...——ES6新特性(遍歷數組的元素值)
      (2)選擇結構
    ⑥函數
    匿名函數的自調node

     
    箭頭函數  =>
    箭頭函數僅在匿名函數中使用;箭頭函數多用於回調函數中 ()=>{}
    使用箭頭函數實現閉包
     
    ⑦對象
        對象的分類:
        (1)ES原生對象
        (2)Node.js核心對象
        (3)大量的第三方對象
        (4)自定義的對象
        建立對象的四種方式:
        (1)對象直接量
        (2)構造函數的方式
        (3)原型繼承方式
        (4)class方式——ES6新特性
        class,類,一組類似對象的屬性和行爲的抽象集合
        instance,實例化,是從屬於某一個類的具體對象
        class Emp{
              constructor(ename){
                    this.ename=ename;
              }
              work(){}
        }
        使用class定義的對象,如何實現繼承:
        class Programmer extends Emp{
              constructor(ename,salary,skills){
                    super(ename,salary);
                    this.skills=skills;
              }
              work(){
                    return super.work()+'He\'s skills is '+this.skills;
              }
        }

四、全局對象
    Node.js中的全局對象爲Global
    在交互模式下,聲明的全局變量和函數,都是global對象的成員——全局對象污染
    在腳本模式下,聲明的全局變量和函數,不是global對象的成員——避免全局對象污染
    Global對象的成員屬性和成員方法:
    ①console    向stdout(標準輸出)和stderr(標準錯誤)中輸入信息
    console.log() & console.info()         向stdout輸出日誌信息
    console.error() & console.warn()     向stderr輸出錯誤信息
    console.trace()                向stderr輸出棧軌跡信息
    console.dir()                 向stdout輸出指定對象的字符串表示
    console.assert()              斷言,爲真的斷言,錯誤信息不回輸出,爲假的斷言,拋出錯誤對象,輸出錯誤信息,而且終止腳本運行。錯誤信息能夠自定義。
    console.time()                測試代碼的執行時間
    console.timeEnd()

    注意:console對象的方法是異步的,書寫順序不必定和執行結果順序一致

    ②process  進程
    process.arch    //獲取CPU架構類型
    process.platform    //獲取操做系統類型
    process.env    //獲取操做系統的環境變量
    process.cwd()    //獲取當前所在的工做目錄
    process.execPath    //獲取node解釋器所在目錄
    process.versions    //獲取node版本信息
    process.uptime()    //獲取node進程運行時間(s)
    process.memoryUsage() //獲取node進程的內存使用狀況
    process.pid    //獲取當前進程id號
    process.kill(pid)    //向指定進程id號發送退出信號

    ③定時器
    setTimeout()        //一次性定時器
    setInterval()        //週期性定時器
    setImmediate()        //下次事件循環開始前當即執行的計時器
    process.nextTick()        //本次事件循環結束後當即執行的計時器
      mysql

        
Node.js的模塊系統:
    Node.js中使用"Module(模塊)"來規劃不一樣的功能對象。
    模塊的分類:
    (1)核心模塊——nodejs的內置模塊
    (2)第三方模塊——例如:mysql模塊,本身下載
    (3)自定義模塊
    每個被加載的.js文件對應一個模塊對象,包含相應的功能和函數。
    模塊中聲明的變量或函數的做用域是「模塊做用域」,不是golbal的成員,默認只能在當前js文件(即當前模塊)中使用。
    Node.js啓動時運行的第一個模塊,成爲「主模塊」。——mail module,也是自身模塊。除主模塊以外的其餘模塊,稱爲「子模塊」。

  nodejs官網:nodejs.orgweb

相關文章
相關標籤/搜索