Node中的Javascript
- Ecmascript
- 變量
- 方法
- 數據類型
- 內置對象
- Array
- Object
- Date
- Math
- 模塊系統
- 在Node中沒有全局作用域的概念
- 在Node中,只能通過require方法來加載執行多個js腳本文件
- require加載只能是執行其中的代碼,文件與文件之間由於是模塊作用域,所以不會有污染問題
- 模塊完全是封閉的
- 外部無法訪問內部
- 內部也無法訪問外部
- 模塊作用域固然帶來了一些好處,但還是在某些情況系,模塊之間需要進行通信
- 在每個模塊中,都提供了一個對象:
exports
- 該對象默認是一個空對象
- 把需要被外部訪問使用的成員手動掛載到
exports
接口對象中 - 然後誰來
require
這個模塊,誰就可以得到內部的exports
接口對象
- 核心模塊
- 核心模塊是由Node提供的一個個的具名的模塊,它們都有自己的特殊標識
- fs 文件操作模塊
- http 網絡服務構建模塊
- os 操作系統信息模塊
- path 路徑處理模塊
- 所有核心模塊在使用的時候都必須手動的先使用
require
方法來加載,然後纔可以使用var fs = require('fs')
- 核心模塊是由Node提供的一個個的具名的模塊,它們都有自己的特殊標識
- http
- require
- 端口號
- ip地址定位計算機
- 端口號定位具體的應用程序
- content-type
- 服務器最好把每次響應的數據是什麼內容類型告訴客戶端,而且要告訴正確形式
- 不同的資源對應的Content-Type是不一樣的,具體參照:http://tool.oschina.net/commons
- 對於文本類型的數據,最好都加上編碼方式,爲了防止中文解析亂碼問題
- 通過網絡發送文件
- 發送的並不是文件,本質上來講發送的是文件內容
- 當瀏覽器收到服務端響應內容之後,會根據你的Content-Type進行對應的解析處理
模塊
- 導入方式
- 第三方庫
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
- 被導入處
- 第三方庫
- 核心模塊
- os
- os.cpus()
- 獲取當前計算機的cpu信息
- os.totalmen()
- 獲取運行內存大小,單位是字節
- os.cpus()
- path
- path.extname()
- 返回路徑的擴展名
- path.join(第一個路徑,第二個路徑)
- 拼接路徑
- path.extname()
- http:處理客戶端的網絡請求
- http.createServer()
- 創建web服務
- http.createServer()
- fs
- fs.readFlie()
- 讀文件
- fs.writeFile
- 寫文件
- fs.readFlie()
- query strings:處理客戶端通過
get/post
請求傳遞過來的參數- 需要導入 ‘querystring’ 這個核心模塊
get
請求時 querystring 一般是配合 url 核心模塊一起使用的get/post
請求最終都需要調用 querystring.parse方法,將請求傳遞過來的鍵值對字符串轉成js對象,方便操作
- Global:全局共享的,不需要導入模塊即可以使用
- __dirname : 文件所在的文件夾路徑
- __filename : 文件所在的路徑
- require() : 導入需要的模塊
- module : 自定義模塊時用到
- exports : 自定義模塊時用到
- os
端口
計算機中只有一個物理網卡,而且同一個局域網中,網卡的地址必須是唯一的,網卡是通過唯一的ip地址來進行定位
- ip地址用來定位計算機
- 端口號用來定位具體的應用程序
- 所有聯網的程序都需要進行網絡通信,都必須佔用端口號
- 端口號從0-65536之間
- 在計算機中有一些默認端口號,不要使用,例如 http 80 Apache服務器、https 443
- 可以同時開啓多個服務,但一定要確保不同服務器佔用的端口號不一致纔可以
- 在一臺計算機中,同一時間同端口號,只能被一個應用程序佔用
Content-Type
要點:
- text/plain 普通文本 用於解決中文編碼亂碼問題,需指定編碼方式utf-8
- text/html 發送的是html字符串,需指定編碼方式utf-8
- 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對應的屬性值。