Previous words
In the HTTP part, the relevant knowledge of URL is introduced in detail. The url module in nodejs provides some practical functions for URL processing and parsing. This article will introduce in detail the URL object in nodeJS
URL object
Parsing the URL object has the following contents, depending on whether they exist in the URL string. Any part that is not in the URL string will not appear in the parsed object
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
┌─────────────────────────────────────────────────────────────────────────────┐ │ href │ ├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤ │ protocol ││ auth │ host │ path │ hash │ │ ││ ├──────────┬──────┼──────────┬────────────────┤ │ │ ││ │ hostname │ port │ pathname │ search │ │ │ ││ │ │ │ ├─┬──────────────┤ │ │ ││ │ │ │ │ │ query │ │" http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash "│ ││ │ │ │ │ │ │ │ └──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘
[href]: The complete URL to be parsed, including the protocol and host (lowercase)
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
[protocol]: request protocol, lowercase
'http:'
[slashes]: slash (colon) required by the protocol After)
true 或 false
[host]: The complete lowercase host part of the URL, including port information
'host.com:8080'
[auth]: Verification in the url Information
'user:pass'
[hostname]: The lowercase host name in the domain name
'host.com'
[port]: The port number of the host
'8080'
[pathname]: The path part in the URL, after the host name and before the query character, contains the first slash
'/p/a/t/h'
[search]: The query string in the URL contains the question mark at the beginning
'?query=string'
[path]: pathname and search are connected together
'/p/a/t/h?query=string'
[query] : The parameter part in the query string, or the object returned after parsing using querystring.parse()
'query=string' or {'query':'string'}
[hash]: The part after the "#" of the URL (including the # symbol)
'#hash'
URL method
The URL module contains tools for analyzing and parsing URLs. Call require('url') to access the module
var url = require('url');/*{ parse: [Function: urlParse], resolve: [Function: urlResolve], resolveObject: [Function: urlResolveObject], format: [Function: urlFormat], Url: [Function: Url] } */console.log(url);
[url.parse(urlStr[, parseQueryString][, slashesDenoteHost])】
Enter the URL string, Return an object
The second parameter parseQueryString (default is false), if it is false, urlObject.query is an unparsed string, such as author=%E5%B0%8F%E7%81%AB %E6%9F%B4, and the corresponding value will not be decoded; if parseQueryString is true, then urlObject.query is object, such as { author: 'Little Match' }, and the value will be decoded
Third parameter slashesDenoteHos (default is false), if it is true, URLs without protocol headers can be correctly parsed, similar to foo in //foo/bar, which will be considered hostname; if it is false, foo will be considered pathname. Part of
var url = require('url');var str = 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash';/*Url { protocol: 'http:', slashes: true, auth: 'user:pass', host: 'host.com:8080', port: '8080', hostname: 'host.com', hash: '#hash', search: '?author=%E5%B0%8F%E7%81%AB%E6%9F%B4', query: 'author=%E5%B0%8F%E7%81%AB%E6%9F%B4', pathname: '/p/a/t/h', path: '/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4', href: 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash' } */console.log(url.parse(str));
var url = require('url');var str = 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash';/*Url { protocol: 'http:', slashes: true, auth: 'user:pass', host: 'host.com:8080', port: '8080', hostname: 'host.com', hash: '#hash', search: '?author=%E5%B0%8F%E7%81%AB%E6%9F%B4', query: { author: '小火柴' }, pathname: '/p/a/t/h', path: '/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4', href: 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash' } */console.log(url.parse(str,true));
var url = require('url');var str = '//foo/bar';var result1 = url.parse(str,true);var result2 = url.parse(str,true,true); console.log(result1.path);//'//foo/bar'console.log(result1.pathname);//'//foo/bar'console.log(result1.hostname);//nullconsole.log(result2.path);//'/bar'console.log(result2.pathname);//'/bar'console.log(result2.hostname);//'foo'
【url.format(urlObject)】
The reverse of url.parse(str) To operate, enter a parsed URL object and return a formatted string
The urlObject contains many fields, such as protocol, slashes, protocol, etc., and it is not necessarily necessary to pass them all, so there is a set of parsing logic
The formatting workflow is as follows
href 会被忽略 protocol 无论是否有末尾的 : (冒号),会同样的处理 http, https, ftp, gopher, file 协议会被添加后缀://mailto, xmpp, aim, sftp, foo, 等协议添加后缀: slashes 如果协议需要 ://,设置为 true仅需对之前列出的没有斜杠的协议,比如议 mongodb://localhost:8000/auth 如果出现将会使用. hostname 仅在缺少 host 时使用 port 仅在缺少 host 时使用 host 用来替换 hostname 和 port pathname 无论结尾是否有 / 将会同样处理 search 将会替代 query属性 无论前面是否有 / 将会同样处理 query (对象; 参见 querystring) 如果没有 search,将会使用 hash 无论前面是否有#,都会同样处理
var url = require('url');var obj = { protocol: 'http:', auth: 'user:pass', host: 'host.com:8080', hash: '#hash', query: { author: '小火柴' } }//http://user:pass@host.com:8080?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hashconsole.log(url.format(obj));
【url.resolve(from, to)】
url. The resolve() method resolves a target URL relative to a base URL in a way that a browser parses hyperlinks. The parameters are as follows
from <string> 解析时相对的基本 URL。 to <string> 要解析的超链接 URL。</string></string>
var url = require('url'); console.log(url.resolve('/one/two/three', 'four')); // '/one/two/four'console.log(url.resolve('http://example.com/', '/one')); // 'http://example.com/one'console.log(url.resolve('http://example.com/one', '/two')); // 'http://example.com/two'
The above is the detailed content of Detailed explanation of URLs in nodeJS. For more information, please follow other related articles on the PHP Chinese website!

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SublimeText3 Chinese version
Chinese version, very easy to use
