前幾天說以了下Node.js的模塊化,這里再次說一下為什么Node.js中需要模塊化
在后台開發語言中,比如Java、C#。他們都是隱含模塊化的,Node.js默認幫我們提供了模塊化這種機制。 在服務器端,我們想要使用底層的一些功能需要導入一些“包”來對其操作,比如操作文件、網絡需要導入對應的包。其它語言中都是基於類來實現的模塊化的思想,使用類來組織文件和文件之間的關聯。 而Node.js中使用的是JavaScript語言,ECMAScript僅僅規定了基本的語法的書寫,並沒有規定文件之間 關聯,也就是說每個js文件之間是獨立的,Node.js已經幫我們實現了js文件之間的關聯(模塊化) Node.js中的模塊化是基於CommonJS規范的
JavaScript的局限性
- 沒有模塊系統
- 系統提供的接口較少,比如:缺少操作文件、I/O流等常用的接口
- 沒有標准接口,缺少如web服務器、數據庫等統一接口
- 缺乏管理系統導師JavaScript應用中基本沒
- CommonJS規范
- Node.js開發之初遵守了CommonJS規范
- 使JavaScript達到像Java、Python、PHP等語言一樣有開發大型應用的基本能力
- CommonJS規范規定每一個模塊都有一個單獨的作用域
- CommonJS規范規定每個模塊對外公布的成員使用module.exports或者exports
- 有了模塊化系統之后,Node.js提供了許多系統模塊:文件、Buffer、I/O流、Socket等
那么接下來看一下核心模塊
今天接觸到的核心模塊:
-
path模塊
- 導入模塊 var path = require("path");
-
basename() 獲取文件名+后綴
path.basename("/foo/hello/world/123.html") //第二個參數,去掉獲取的文件名中的相同部分 path.basename("c:/foo/hello/world/123.html",".html")
dirname() 獲取目錄
path.dirname("/foo/hello/world/123.html")
extname() 獲取文件的擴展名(尾綴名)
path.extname("/foo/hello/world/123.html")
join() 合並路徑
var p1 = "c://abc/xyz"; var p2 = "/123/456"; console.log(path.join(p1,p2));
parse() 把路徑轉換為一個對象
path.parse("c:\\home\\hello\\world\\123.html") { root: 'c:/', dir: 'c://home/hello/world', base: '123.html', ext: '.html', name: '123' }
format() 把一個路徑對象轉換成一個路徑字符串
var obj = { root: 'c:\\', dir: 'c:\\home\\hello\\world', base: '123.html', ext: '.html', name: '123' } console.log(path.format(obj));
delimiter 環境變量的分隔符,可以跨平台 windows下是; 其它平台 :
path.sep 路徑的分隔符 windows下是\ 其它下是/
isAbsolute() 是否是絕對路徑
- URL模塊
- 導入模塊var url=requre("url")
- parse()把字符串的路徑傳換成對象
var uri = "http://www.baidu.com:8080/images/1.jpgversion=1.0&time=1123#abcd"; console.log(url.parse(uri));
format() 把路徑對象轉換成字符串
var obj = { protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com:8080', port: '8080', hostname: 'www.baidu.com', hash: '#abcd', search: '?version=1.0&time=1123', query: 'version=1.0&time=1123', pathname: '/images/1.jpg', path: '/images/1.jpg?version=1.0&time=1123', href: 'http://www.baidu.com:8080/images/1.jpg?version=1.0&time=1123#abcd' }; var str = url.format(obj); console.log(str);
querystring模塊
- 導入模塊 var querystring = require("querystring");
-
parse() 把參數字符串解析成對象
var obj = querystring.parse("version=1.0&time=123"); console.log(obj);
stringify() 把一個對象轉換成一個字符串
escape() url進行編碼
unescape() url進行解碼
----------------------------------------------------分割線-----------------------------------------------
那么核心模塊存在哪里呢,
- 核心模塊存儲在node.exe中,當node.exe運行的時候,核心模塊會被加載,require的時候會加載到內存
- 在github上可以找到源代碼,lib文件夾下
- 核心模塊的執行速度比較快