Learn Node.js from scratch

Learn Node.js from scratch

url module

1.parse method

//test02.js
import http from 'http'
import url from 'url'
const parseUrl = url.parse('https://www.baidu.com/news?name=朱葛亮&age=18#helloworld')
console.log(parseUrl)
http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'})
    res.write('Hello, hello world!')
    res.end()
}).listen(3000)
console.log('My server is running at http://localhost:3000')

Parse the URL address and obtain a parsed URL details object, including protocol, domain name, path, port, query parameters, hash and other information.

The second parameter is a boolean value, which defaults to false. If true is passed, the query will be converted to an object.

const parseUrl = url.parse('https://www.baidu.com/news?name=朱葛亮&age=18#helloworld', true)
console.log(parseUrl)

2. format method

Pass in a URL information object (that is, the object returned by the parse method) and return a specific path. This method is the reverse application of the parse method.

const formatUrl = url.format({
    protocol: 'https:',
    slashes: true,
    auth: null,
    host: 'www.baidu.com',
    port: null,
    hostname: 'www.baidu.com',
    hash: '#helloworld',
    search: '?name=Zhuge Liang&age=18',
    query: 'name=Zhuge Liang&age=18',
    pathname: '/news',
    path: '/news?name=Zhuge Liang&age=18',
    href: 'https://www.baidu.com/news?name=朱葛亮&age=18#helloworld'
})
console.log(formatUrl) // Output https://www.baidu.com/news?name=朱葛亮&age=18#helloworld

3. resolve method

Splicing or replacing secondary paths

const result1 = url.resolve('https://www.baidu.com', 'news')
const result2 = url.resolve('https://www.baidu.com/home', '')
const result3 = url.resolve('https://www.baidu.com/home', 'about')
const result4 = url.resolve('https://www.baidu.com/home/index', 'about')
const result5 = url.resolve('https://www.baidu.com/home/index?name=朱葛亮', 'about/hello')
console.log(result1)
console.log(result2)
console.log(result3)
console.log(result4)
console.log(result5)

Output:

Events module (event-driven)

1. Introduce the event module

2. Create an eventEmitter instance

3. Use the on method and emit method in eventEmitter to implement event-driven, similar to $on and $emit in vue, that is, publish-subscribe mode

Asynchronous requirements can be solved as follows:

import fs from 'fs'
import event from 'events'

const eventEmitter = new event.EventEmitter()

eventEmitter.on('events', data => {
    console.log('Received data', data.toString())
})

fs.readFile('static/index.html', (err, data) => {
    eventEmitter.emit('events', data)
})

The path module

import path from 'path'
// Get the suffix name const extName = path.extname('index.html') // .html

Summarize

This article ends here. I hope it can be helpful to you. I also hope that you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • Learning Node.js from scratch series tutorial: Example of setting HTTP header method
  • Learn Node.js from scratch series of tutorials SQLite3 and MongoDB usage analysis
  • Learning Node.js from scratch series tutorial 6: Example of how EventEmitter sends and receives events
  • Learning Node.js from scratch series 5: Server monitoring method example
  • Learning Node.js from scratch series 4: Client-side and server-side examples of implementing mathematical operations on multiple pages
  • Learning Node.js from scratch series tutorial: Multi-page mathematical operation example based on connect and express framework
  • Learning Node.js from scratch series 4: Mathematical operation examples implemented on multiple pages

<<:  How to install the latest version of docker using deepin apt command

>>:  Implementation process of row_number in MySQL

Recommend

How to install Elasticsearch7.6 cluster in docker and set password

Table of contents Some basic configuration About ...

Use of Linux network configuration tools

This article introduces RHEL8 network services an...

Detailed explanation of TypeScript 2.0 marked union types

Table of contents Constructing payment methods us...

Solution for adding iptables firewall policy to MySQL service

If your MySQL database is installed on a centos7 ...

Detailed process of using Vscode combined with docker for development

Preface Using Docker and VS Code can optimize the...

Installation of Docker CE on Ubuntu

This article is used to record the installation o...

Command to view binlog file creation time in Linux

Table of contents background analyze method backg...

Zabbix configures DingTalk's alarm function with pictures

Implementation ideas: First of all, the alarm inf...

VMware15/16 Detailed steps to unlock VMware and install MacOS

VMware version: VMware-workstation-full-16 VMware...

Three notification bar scrolling effects implemented with pure CSS

Preface The notification bar component is a relat...

Summary of MySQL common SQL statements including complex SQL queries

1. Complex SQL queries 1.1. Single table query (1...

JavaScript flow control (branching)

Table of contents 1. Process Control 2. Sequentia...

Vue scaffolding learning project creation method

1. What is scaffolding? 1. Vue CLI Vue CLI is a c...

Vue implements a simple calculator

This article example shares the specific code of ...