从零开始学习Node.js

目录
  • url模块
    • 1.parse 方法
    • 2.format 方法
    • 3.resolve 方法
  • events模块(事件驱动)
  • path模块
  • 总结

url模块

1.parse 方法

// 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 world!')
    res.end()
}).listen(3000)
console.log('My server is running at http://localhost:3000')

解析url地址,获得一个被解析的url详情对象,包含协议、域名、路径、端口、查询参数、哈希等信息。

第二个参数为boolean值,默认为false,传true会将query转为对象

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

2.format 方法

传入一个url信息对象(即parse方法返回的对象),返回一个具体的路径,该方法是parse方法的逆运用。

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

3.resolve 方法

拼接或替换次级路径

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)

输出结果:

events模块(事件驱动)

1.引入event模块

2.创建一个eventEmitter实例

3.利用eventEmitter中的on方法和emit方法实现事件驱动,类似vue中的$on和$emit,即发布订阅模式

可以解决异步需求,如下:

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

const eventEmitter = new event.EventEmitter()

eventEmitter.on('events', data => {
    console.log('收到的数据', data.toString())
})

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

path模块

import path from 'path'
// 获取后缀名
const extName = path.extname('index.html')     // .html

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 从零开始学习Node.js系列教程之设置HTTP头的方法示例

    本文实例讲述了Node.js设置HTTP头的方法.分享给大家供大家参考,具体如下: server.js //basic server的配置文件 var port = 3000; var server = require('./basicserver').createServer(); server.useFavIcon("localhost", "./docroot/favicon.png"); server.addContainer(".*",

  • 从零开始学习Node.js系列教程五:服务器监听方法示例

    本文实例讲述了Node.js服务器监听方法.分享给大家供大家参考,具体如下: httpsnifferInvoke.js var http = require('http'); var sniffer = require('./httpsniffer'); var server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello, Wor

  • 从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例

    本文实例讲述了Node.js EventEmitter发送和接收事件的方法.分享给大家供大家参考,具体如下: pulser.js /* EventEmitter发送和接收事件 HTTPServer和HTTPClient类,它们都继承自EventEmitter EventEmitter被定义在Node的事件(events)模块中,直接使用EventEmitter类需要先声明require('events'), 否则不必显式声明require('events'),因为Node中很多对象都无需你调用r

  • 从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例

    本文实例讲述了Node.js基于connect和express框架的多页面实现数学运算.分享给大家供大家参考,具体如下: 1.使用connect框架 .use方法用于绑定中间件到connect服务器,它会配置一系列在接到请求时调用的中间件模块,此例中我们要配置的中间件有favicon logger static router app.get/post/put        写法:app.requestName('path', function(req, res, next){}); app-co

  • 从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析

    本文实例讲述了Node.js中SQLite3和MongoDB的用法.分享给大家供大家参考,具体如下: setup.js:初始化数据库 var util = require('util'); var async = require('async'); //npm install async var notesdb = require('./nodesdb-sqlite3'); // var notesdb = require('./notesdb-mongoose'); notesdb.conne

  • 从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例

    本文实例讲述了Node.js多页面实现数学运算的client端和server端.分享给大家供大家参考,具体如下: 1.server端 支持数学运算的服务器,服务器的返回结果用json对象表示. math-server.js //通过监听3000端口使其作为Math Wizard的后台程序 var math = require('../nodejsExample3/math.js'); var express = require('express'); var app = express(); a

  • 从零开始学习Node.js系列教程四:多页面实现的数学运算示例

    本文实例讲述了Node.js多页面实现的数学运算.分享给大家供大家参考,具体如下: app-node.js var http_port = 3000; var http = require('http'); var htutil = require('./htutil'); var server = http.createServer(function(req, res){ htutil.loadParams(req, res, undefined); if (req.requrl.pathna

  • 从零开始学习Node.js系列教程一:http get和post用法分析

    本文实例讲述了Node.js中http get和post用法.分享给大家供大家参考,具体如下: httpserverrequestget.js /* 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. node.js中url模块中的parse函数提供了这个功能. */ var http = require('http'); var url = require('url'); var util = r

  • 从零开始学习Node.js系列教程二:文本提交与显示方法

    本文实例讲述了Node.js文本提交与显示方法.分享给大家供大家参考,具体如下: index.js var server = require("./server"); var router = require("./router"); var requestHandlers = require("./requestHandlers"); var handle = {} handle["/"] = requestHandlers

  • 从零开始学习Node.js系列教程三:图片上传和显示方法示例

    本文实例讲述了Node.js图片上传和显示方法.分享给大家供大家参考,具体如下: index.js var server = require("./server"); var router = require("./router"); var requestHandlers = require("./requestHandlers"); var handle = {} handle["/"] = requestHandlers

随机推荐