nodejs(一)

來源:互聯網
上載者:User

標籤:

    • nodejs第一章節
      • 使用node來實現第一個http伺服器
        • var http = require(‘http’);
        • http.createServer(function (request, response) {
        • // 發送 HTTP 頭部 
        • // HTTP 狀態值: 200 : OK
        • // 內容類型: text/plain
        • response.writeHead(200, {‘Content-Type’: ‘text/plain’});
        • console.log(“我是yyk”);
        • // 發送響應資料 “Hello World”
        • response.end(‘Hello World\n’);
        • }).listen(8888);
      • 學習資料
        • 菜鳥教程
          • http://www.runoob.com/nodejs/nodejs-tutorial.html
        • nodejs參考手冊
          • http://nodeapi.ucdok.com/#/api/
      • 模組
        • require是啥?
        • 模組化開發
          • 為什麼會有模組?
            • 在JavaScript發展初期就是為了實現簡單的頁面互動邏輯,寥寥數語即可;如今CPU、瀏覽器效能得到了極大的提升,很多頁面邏輯遷移到了用戶端(表單驗證等),隨著web2.0時代的到來,Ajax技術得到廣泛應用,jQuery等前端庫層出不窮,前端代碼日益膨脹
            • 這時候JavaScript作為嵌入式的指令碼語言的定位動搖了,JavaScript卻沒有為組織代碼提供任何明顯協助,甚至沒有類的概念,更不用說模組(module)了,JavaScript極其簡單的程式碼群組織規範不足以駕馭如此龐大規模的代碼
          • 模組的好處
            • 既然JavaScript不能handle如此大規模的代碼,我們可以借鑒一下其它語言是怎麼處理大規模程式設計的,在Java中有一個重要帶概念——package,邏輯上相關的程式碼群組織到同一個包內,包內是一個相對獨立的王國,不用擔心命名衝突什麼的,那麼外部如果使用呢?直接import對應的package即可
            • import java.util.ArrayList;
            • 遺憾的是JavaScript在設計時定位原因,沒有提供類似的功能,開發人員需要類比出類似的功能,來隔離、組織複雜的JavaScript代碼,我們稱為模組化。
            • 一個模組就是實現特定功能的檔案,有了模組,我們就可以更方便地使用別人的代碼,想要什麼功能,就載入什麼模組。模組開發需要遵循一定的規範,各行其是就都亂套了
          • commonjs規範
            • CommonJS就是為JS的表現來制定規範,因為js沒有模組的功能所以CommonJS應運而生,它希望js可以在任何地方運行,不只是瀏覽器中。
            • CommonJS能有一定的影響力,我覺得絕對離不開Node的人氣,不過喔,Node,CommonJS,瀏覽器甚至是W3C之間有什麼關係呢,
          • 案例:引入url模組解析路徑
            • var http = require(“http”);//引入一個http的模組?
              var url = require(“url”);//引入路徑模組

              var server = http.createServer(function (req,res) {
                  //parse(路徑,第二個參數為將請求參數解析為對象)
                  var urlObj = url.parse(req.url,true);
                  console.log(urlObj);
                  res.end();
              });
              server.listen(8080);
          • 建立自己的模組
            • 載入目前的目錄的模組
              • 不加var 的變數是全域變數,在模組內部最好加var
              • 要匯出一個屬性或者方法使用:module.exports
                • 如果是模組下的方法和屬性使用:module.exports={xx:xx}
                • 如果是想讓模組直接接受方法就匯出函數
            • 載入非目前的目錄的模組
              • 首先會看目前的目錄是否有一個node_modules,如果有就看進入裡面尋找是否有叫模組名稱的檔案或者是否有叫模組名稱的檔案夾
              • 如果是模組名稱的檔案夾需要看一下檔案夾內部是否有index.js或者package.json中是否有設定mian屬性
                • {
                    “name”: “home”,
                    “version”: “0.0.1”,
                    “main”: “home2.js”
                  }
              • 如果目前的目錄中沒有node_modules,會向上尋找
                • 可以通過:console.log(module)輸出
                  • id: ‘.’,當前模組的id
                     exports: {},當前模組的匯出對象
                     parent: null,父親 誰require了自己
                     children: [],兒子 它require了誰
                     filename: ‘/Users/tangxiangrong/WebstormProjects/node201606/5.npm/require5.js’,
                     loaded: false,
                     paths:
            • 載入原生模組
          • 擴充
            • 非node項目中也可以使用模組化開發技術,用得比較多的模組載入器有:requirejs(CMD),seaJs(AMD)
        • npm
          • npm
            • 包(一組模組的集合)
            • 舉例:安裝express
            • NPM作為Node的包管理器
            • 案例1:安裝一個express模組,看他的結構
        • 參考資料
          • http://www.cnblogs.com/dolphinX/p/4381855.html
      • repl(互動式解譯器)
        • REPL(Read Eval Print Loop:互動式解譯器)概念
          • 表示一個電腦的環境,類似 Window 系統的終端或 Unix/Linux shell,我們可以在終端中輸入命令,並接收系統的響應。
          • 讀取 - 讀取使用者輸入,解析輸入了Javascript 資料結構並儲存在記憶體中。
          • 執行 - 執行輸入的資料結構
          • 列印 - 輸出結果
          • 迴圈 - 迴圈操作以上步驟直到使用者兩次按下 ctrl-c 按鈕退出。
          • 進入repl方式:終端中鍵入node
        • repl處理:
          • 運算式運算
            • $ node
            • > 1 +4
            • 5
            • > 5 / 2
            • 2.5
            • > 3 * 6
            • 18
            • > 4 - 1
            • 3
            • > 1 + ( 2 * 3 ) - 4
            • 3
            • >
          • 使用變數
            • $ node
            • > x = 10
            • 10
            • > var y = 10
            • undefined
            • > x + y
            • 20
            • > console.log(“Hello World”)
            • Hello World
            • undefined
          • 多行運算式
            • $ node
            • > var x = 0
            • undefined
            • > do {
            • … x++;
            • … console.log(“x: “ + x);
            • … } while ( x < 5 );
            • x: 1
            • x: 2
            • x: 3
            • x: 4
            • x: 5
            • undefined
            • >
          • 底線
            • 你可以使用底線(_)擷取運算式的運算結果
            • $ node
            • > var x = 10
            • undefined
            • > var y = 20
            • undefined
            • > x + y
            • 30
            • > var sum = _
            • undefined
            • > console.log(sum)
            • 30
            • undefined
            • >
          • REPL 命令
            • trl + c - 退出當前終端。
            • ctrl + c 按下兩次 - 退出 Node REPL。
            • ctrl + d - 退出 Node REPL.
            • 向上/向下 鍵 - 查看輸入的曆史命令
            • tab 鍵 - 列出當前命令
            • .help - 列出使用命令
            • .break - 退出多行運算式
            • .clear - 退出多行運算式

nodejs(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.