在後臺開發語言中,好比Java、C#。他們都是隱含模塊化的,Node.js默認幫咱們提供了模塊化這種機制。 在服務器端,咱們想要使用底層的一些功能須要導入一些「包」來對其操做,好比操做文件、網絡須要導入對應的包。其它語言中都是基於類來實現的模塊化的思想,使用類來組織文件和文件之間的關聯。 而Node.js中使用的是JavaScript語言,ECMAScript僅僅規定了基本的語法的書寫,並無規定文件之間 關聯,也就是說每一個js文件之間是獨立的,Node.js已經幫咱們實現了js文件之間的關聯(模塊化) Node.js中的模塊化是基於CommonJS規範的
使用核心模塊以前首先要導入模塊javascript
path模塊html
basename() 獲取文件名+後綴java
path.basename("/foo/hello/world/123.html") //第二個參數,去掉獲取的文件名中的相同部分 path.basename("c:/foo/hello/world/123.html",".html")
dirname() 獲取目錄node
path.dirname("/foo/hello/world/123.html")
extname() 獲取文件的擴展名git
path.extname("/foo/hello/world/123.html")
join() 合併路徑程序員
var p1 = "c://abc/xyz"; var p2 = "/123/456"; console.log(path.join(p1,p2));
parse() 把路徑轉換爲一個對象github
path.parse("c:\\home\\hello\\world\\123.html") { root: 'c:/', dir: 'c://home/hello/world', base: '123.html', ext: '.html', name: '123' }
format() 把一個路徑對象轉換成一個路徑字符串web
var obj = { root: 'c:\\', dir: 'c:\\home\\hello\\world', base: '123.html', ext: '.html', name: '123' } console.log(path.format(obj));
delimiter 環境變量的分隔符,能夠跨平臺 windows下是; 其它平臺 :數據庫
url模塊npm
parse() 把字符串的路徑轉換成對象
var uri = "http://www.baidu.com:8080/images/1.jpg?version=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模塊
parse() 把參數字符串解析成對象
var obj = querystring.parse("version=1.0&time=123"); console.log(obj);
定義文件模塊 add.js
function add(a,b) { return a + b; } //導出成員 exports.add = add; //module.exports.add = add;
使用文件模塊 main.js
var obj = require("./add.js"); console.log(obj.add(5,6));
//使用相對於main.js 的方式查找add.js var obj = require("./add.js"); var obj = require("./add"); //下面這種方式是引用核心模塊或者包 //var obj = require("add");
CommonJS的包規範給程序員提供了組織模塊的標準,減小溝通成本
包的使用:
導入包的執行過程 require("calc")
package.js
名稱 | 功能 |
---|---|
name | 包名稱 |
description | 包介紹,介紹包的功能 |
version | 版本號,用於版本控制 |
keywords | 關鍵詞數組,用於在npm中搜索 |
main | require引入包時優先檢查此字段 |
dependencies | 標記當前包所依賴的包列表,npm會自動加載依賴的包 |
Author | 包做者 |
License | 開源許可 |
{ "name": "calcpack", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { //能夠經過npm run來執行 "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
建立包的標準方式
一個標準包的結構
名稱 |功能 |---|---| package.js |包描述文件 bin |存放可執行文件 lib |存放JavaScript代碼 doc |存放文檔 test |存放單元測試用例代碼 README.md |說明文檔,描述包的做用和用法
把包發佈到NPM官網 https://www.npmjs.com/
"name":"nllcode", "email":"xxxxx@qq.com"}]
錯誤
安裝包
require()加載規則