Node.js進修

Node中的Javascript


  1. Ecmascript
    • 變量
    • 方法
    • 數據類型
    • 內置對象
    • Array
    • Object
    • Date
    • Math
  2. 模塊系統
    • 在Node中沒有全局作用域的概念
    • 在Node中,只能通過require方法來加載執行多個js腳本文件
    • require加載只能是執行其中的代碼,文件與文件之間由於是模塊作用域,所以不會有污染問題
      • 模塊完全是封閉的
      • 外部無法訪問內部
      • 內部也無法訪問外部
    • 模塊作用域固然帶來了一些好處,但還是在某些情況系,模塊之間需要進行通信
    • 在每個模塊中,都提供了一個對象:exports
    • 該對象默認是一個空對象
    • 把需要被外部訪問使用的成員手動掛載到exports接口對象中
    • 然後誰來require這個模塊,誰就可以得到內部的exports接口對象
  3. 核心模塊
    • 核心模塊是由Node提供的一個個的具名的模塊,它們都有自己的特殊標識
      • fs 文件操作模塊
      • http 網絡服務構建模塊
      • os 操作系統信息模塊
      • path 路徑處理模塊
    • 所有核心模塊在使用的時候都必須手動的先使用require方法來加載,然後纔可以使用
      • var fs = require('fs')
  4. http
    • require
    • 端口號
      • ip地址定位計算機
      • 端口號定位具體的應用程序
    • content-type
      • 服務器最好把每次響應的數據是什麼內容類型告訴客戶端,而且要告訴正確形式
      • 不同的資源對應的Content-Type是不一樣的,具體參照:http://tool.oschina.net/commons
      • 對於文本類型的數據,最好都加上編碼方式,爲了防止中文解析亂碼問題
    • 通過網絡發送文件
      • 發送的並不是文件,本質上來講發送的是文件內容
      • 當瀏覽器收到服務端響應內容之後,會根據你的Content-Type進行對應的解析處理

模塊


  1. 導入方式
    • 第三方庫
          var http = require('http')
          var fs = require('fs')
      
    • 本地模塊
      • 被導入處
            var b = 'this is b';
            exports.b = b;
            exports.add = function(x,y){
                return x + y
            }
        
      • 導入處
            var b_content = require('./b.js')
            console.log(b_content.b)    // this is b
            console.log(b_content.add(3,5))  // 8
        
  2. 核心模塊
    • os
      • os.cpus()
        • 獲取當前計算機的cpu信息
      • os.totalmen()
        • 獲取運行內存大小,單位是字節
    • path
      • path.extname()
        • 返回路徑的擴展名
      • path.join(第一個路徑,第二個路徑)
        • 拼接路徑
    • http:處理客戶端的網絡請求
      • http.createServer()
        • 創建web服務
    • fs
      • fs.readFlie()
        • 讀文件
      • fs.writeFile
        • 寫文件
    • query strings:處理客戶端通過get/post請求傳遞過來的參數
      1. 需要導入 ‘querystring’ 這個核心模塊
      2. get請求時 querystring 一般是配合 url 核心模塊一起使用的
      3. get/post請求最終都需要調用 querystring.parse方法,將請求傳遞過來的鍵值對字符串轉成js對象,方便操作
    • Global:全局共享的,不需要導入模塊即可以使用
      1. __dirname : 文件所在的文件夾路徑
      2. __filename : 文件所在的路徑
      3. require() : 導入需要的模塊
      4. module : 自定義模塊時用到
      5. exports : 自定義模塊時用到

端口


計算機中只有一個物理網卡,而且同一個局域網中,網卡的地址必須是唯一的,網卡是通過唯一的ip地址來進行定位

  1. ip地址用來定位計算機
  2. 端口號用來定位具體的應用程序
  3. 所有聯網的程序都需要進行網絡通信,都必須佔用端口號
  4. 端口號從0-65536之間
  5. 在計算機中有一些默認端口號,不要使用,例如 http 80 Apache服務器、https 443
  6. 可以同時開啓多個服務,但一定要確保不同服務器佔用的端口號不一致纔可以
  7. 在一臺計算機中,同一時間同端口號,只能被一個應用程序佔用

Content-Type


要點:

  1. text/plain 普通文本 用於解決中文編碼亂碼問題,需指定編碼方式utf-8
  2. text/html 發送的是html字符串,需指定編碼方式utf-8
  3. image/jpeg 讀取圖片資源
    var http = require('http');
    var server = http.createServer();
    server.on('request', function(req,res){
        var url = req.url;
        if (url === '/plain') {
            // 
            res.setHeader('Content-Type','text/plain; charset=utf-8');
            res.end('hello 世界');
        } else if (url === '/html') {
            // 
            res.setHeader('Content-Type','text/html; charset=utf-8');
            res.end('<p style="color:red;">hello<a href="">點我</a></p>');
        }
    })
    
    server.listen(3000, function(err, data){
        console.log('Server is running...')
    })

js中的json方法


  • JSON.parse()方法用來解析JSON字符串,構造由字符串描述的JavaScript值或對象
  • JSON.stringify()返回與指定值對應的JSON字符串,可以通過額外的參數, 控制僅包含某些屬性, 或者以自定義方法來替換某些key對應的屬性值。
發佈了12 篇原創文章 · 獲贊 4 · 訪問量 4213
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章