Node.js的核心模块主要有http、fs、url、querystring模块等。
使用http模块只需在文件中通过require(‘http’)引入即可。该模块本身可以构建服务器,而且性能非常可靠。
const http = require('http') const server = http.createServer(function(req, res) { res.writeHead(200, { 'content-type': 'text/html' }) res.end('Hello, Node.js!') }) server.listen(3000, function() { console.log('启动服务器...'); })
打开浏览器,输入localhost:3000
即可看到返回的"Hello, Node.js"文字。
上面代码中,http.createServer()
方法返回的是http模块封装的一个基于事件的http服务器。同样http.request()
是其封装的一个http客户端,可以用来向http服务器发起请求。
创建服务器可以采用new http.Server()
的方式。http.Server
的事件主要有:
request
:最常用的事件,当客户端请求到来时,该事件被触发,提供req和res两个参数,表示请求和响应信息。connection
:当TCP连接建立时事件触发close
:当服务器关闭时,触发事件const http = require('http') let reqData = '' http.request({ 'host': '127.0.0.1', 'port': '3000', 'method': 'get' }, function(res){ res.on('data', function(chunk) { reqData += chunk }) res.on('end', function() { console.log(reqData); }) }).end()
使用url模块,只需要通过require(‘url’)引入。url模块是一个分析、解析url的模块,主要提供以下三种方法:
url.parse()
:解析一个url地址,返回一个url对象url.format()
:接收一个url对象为参数,返回一个完整的url地址url.resolve()
:接收一个base url对象和一个href url对象,像浏览器那样解析,返回一个完整地址const url = require('url') let parseUrl = 'https://www.baidu.com/?name=apple' let urlObj = url.parse(parseUrl) console.log(urlObj); /* Url { protocol: 'https:', slashes: true, auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com', hash: null, search: '?name=apple', query: 'name=apple', pathname: '/', path: '/?name=apple', href: 'https://www.baidu.com/?name=apple' } */
利用url.format()方法返回上述返回对象的完整地址
let urlObj = { protocol: 'https:', slashes: true, auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com', hash: null, search: '?name=apple', query: 'name=apple', pathname: '/', path: '/?name=apple', href: 'https://www.baidu.com/?name=apple' } let urlString = url.format(urlObj) console.log(urlString) // https://www.baidu.com/?name=apple
url.resolve()的使用:
let urlAdress = url.resolve('https://www.google.com', '/image') console.log(urlAdress) // https://www.google.com/image
使用querystring
模块,只需要在文件中require('querystring')
引入即可。该模块的主要方法有
querystring.parse()
:将查询字符串反序列化为一个对象,类似JSON.parse()
querystring.stringify()
:将一个对象序列化为一个字符串,类似JSON.stringify()
path模块提供了一系列处理文件路径的工具,主要方法有:
path.join()
:将所有参数连接起来,返回一个路径path.extname()
:返回路径参数的拓展名,无拓展名时返回空字符串path.parse()
:将路径解析为一个路径对象path.format()
:接收一个路径对象,返回一个完整的路径地址const path = require('path') let outputPath = path.join(__dirname, 'node', 'node.txt') console.log(outputPath) let ext = path.extname(path.join(__dirname, 'node', 'node.txt')) console.log(ext) const pathStr = 'C:/frontend/node/node.txt' console.log(path.parse(pathStr)) const pathObj = { root: 'C:/', dir: 'C:/frontend/node', base: 'node.txt', ext: '.txt', name: 'node' } console.log(path.format(pathObj))
使用js模块,同样通过require('fs')
引入。常用方法:
fs.open()
:打开一个文件fs.close()
:关闭一个文件。在实际开发中,如果打开了一个文件,就应该在文件操作完成之后尽快关闭该文件。fs.read()
:读取文件,可以指定读取文件多少内容fs.readFile()
:读取文件,只能读取文件的全部内容fs.writeFile()
:写入文件// 读文件 fs.readFile("/data/2.txt",function(error,data){ if(error){ console.log("读取文件失败!"); }else{ console.log(data.toString()); } }) // 写文件 fs.writeFile('data/2.txt',"You are so beautiful!",function(error){ if(error){ console.log("写文件失败!"); }else{ console.log("写文件成功!"); } })