func-package

ๅ‡ฝๆ•ฐๅบ“, ้ขๅ‘ๅคๆ‚ไธšๅŠกๅœบๆ™ฏ็š„ js ็ฑปๅบ“

URL

URL ๅญ—็ฌฆไธฒๆ˜ฏ็ป“ๆž„ๅŒ–็š„ๅญ—็ฌฆไธฒ๏ผŒๅŒ…ๅซๅคšไธชๅซไน‰ไธๅŒ็š„็ป„ๆˆ้ƒจๅˆ†ใ€‚ ่งฃๆžๅญ—็ฌฆไธฒๅŽ่ฟ”ๅ›ž็š„ URL ๅฏน่ฑก๏ผŒๆฏไธชๅฑžๆ€งๅฏนๅบ”ๅญ—็ฌฆไธฒ็š„ๅ„ไธช็ป„ๆˆ้ƒจๅˆ†ใ€‚

Node.js ไธญ็š„ url ๆจกๅ—ๆไพ›ไบ†ไธคๅฅ— API ๆฅๅค„็† URL๏ผšไธ€ไธชๆ˜ฏๆ—ง็‰ˆๆœฌ้—็•™็š„ API๏ผŒไธ€ไธชๆ˜ฏๅฎž็Žฐไบ† WHATWG ๆ ‡ๅ‡†็š„ๆ–ฐ APIใ€‚

WHATWG ็š„ origin ๅฑžๆ€งๅŒ…ๆ‹ฌ protocol ๅ’Œ host๏ผŒไฝ†ไธๅŒ…ๆ‹ฌ username ๆˆ– passwordใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ href โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ protocol โ”‚ โ”‚ auth โ”‚ host โ”‚ path โ”‚ hash โ”‚
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚
โ”‚ โ”‚ โ”‚ โ”‚ hostname โ”‚ port โ”‚ pathname โ”‚ search โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ query โ”‚ โ”‚
" https: // user : pass @ sub.example.com : 8080 /p/a/t/h ? query=string #hash "
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ hostname โ”‚ port โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚
โ”‚ protocol โ”‚ โ”‚ username โ”‚ password โ”‚ host โ”‚ โ”‚ โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚
โ”‚ origin โ”‚ โ”‚ origin โ”‚ pathname โ”‚ search โ”‚ hash โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ href โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ไฝฟ็”จ WHATWG ็š„ API ่งฃๆž URL ๅญ—็ฌฆไธฒ๏ผš

const myURL = new URL('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');

ไฝฟ็”จ้—็•™็š„ API ่งฃๆž URL ๅญ—็ฌฆไธฒ๏ผš

const url = require('url');
const myURL = url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');

ๆณจๆ„๏ผšๆ นๆฎๆต่งˆๅ™จ็š„็บฆๅฎš๏ผŒURL ๅฏน่ฑก็š„ๆ‰€ๆœ‰ๅฑžๆ€ง้ƒฝๆ˜ฏๅœจ็ฑป็š„ๅŽŸๅž‹ไธŠๅฎž็Žฐไธบ getter ๅ’Œ setter๏ผŒ่€Œไธๆ˜ฏไฝœไธบๅฏน่ฑกๆœฌ่บซ็š„ๆ•ฐๆฎๅฑžๆ€งใ€‚ๅ› ๆญค๏ผŒไธŽ้—็•™็š„ urlObjects ไธๅŒ๏ผŒๅœจ URL ๅฏน่ฑก็š„ไปปไฝ•ๅฑžๆ€ง๏ผˆไพ‹ๅฆ‚ delete myURL.protocolใ€delete myURL.pathname ็ญ‰๏ผ‰ไธŠไฝฟ็”จ delete ๅ…ณ้”ฎๅญ—ๆฒกๆœ‰ไปปไฝ•ๆ•ˆๆžœ๏ผŒไฝ†ไป่ฟ”ๅ›ž trueใ€‚