Node.js学习01-初识Node.js与内置模块

目录

  • 初识Node.js
      • 在Node.js环境执行js代码
  • 内置模块
      • fs文件系统模块
          • 路径动态拼接问题
      • path路径模块
      • http模块
          • request请求对象

初识Node.js

Node.js是基于Chrome V8引擎的JavaScript运行环境,无法调用DOM和BOM等浏览器内置API。
使用Node.js可以:
基于Express框架快速搭建web应用
基于Electron框架构建跨平台的桌面应用
基于restify框架构建API接口项目
操作数据库,创建实用的命令行工具

在Node.js环境执行js代码

打开终端,输入命令

node js文件路径

快捷键:
↑:上一次执行的命令
tab:快速补全路径
esc:快速清空已经输入的命令
cls:清空终端

内置模块

fs文件系统模块

操作文件的模块

使用fs模块需要先导入模块

const fs = require('fs')
fs.readFile(path, [ options ], callback)  //读取指定文件的内容,必写路径和回调函数,options是文件读取方式,选填
fs.writeFile(path,content,[options],callback)   //向指定文件写入内容,必写文件路径,写入的内容,回调函数,选填写入格式,默认utf8

初试读取文件

//testReadFile.js
const fs = require('fs')
fs.readFile('./a.txt','utf8',function(err,dataStr){
	console.log(err)  //读取失败的信息,读取成功err为Null
	console.log(dataStr)   //读取成功文件的内容,读取失败为undefined
})

判断文件是否读取成功 ,根据err对象是否为Null判断文件读取的结果

//testReadFileSuccess.js
const fs = require('fs')
fs.readFile('./a.txt','utf8',function(err,result){
	if(err){
		return console.log(err.message)
	}
	console.log(result)
})

初试写入文件

//testWriteFile.js
const fs = require('fs')
// 这个方法是重写文件,不是追加
fs.writeFile('./a.txt','this is a.txt','utf8',function(err){
	console.log(err)   //写入失败的信息,写入成功err为null
})

判断文件是否写入成功

//testWriteFileSuccess.js
const fs = require('fs')
fs.writeFile('./a.txt','test write success',function(err){
	if(err){
		return console.log(err.message)
	}
	console.log('write success')
})
路径动态拼接问题

如果提供的操作路径是以./或者. ./开头的相对路径,代码运行时会执行node命令所处的目录,动态拼接出被操作的文件完整路径。

// testReadPath.js
const fs = require('fs')
fs.readFile('./a.txt','utf8',function(err,result){
	if(err){
		return console.log(err.message)
	}
	console.log(result)
})

// 终端,假设testReadPath.js在 C:\Users\Desktop\NodeTest\code目录下,运行命令
node testReadPath.js
// 读取成功,打印文件内容
// 切换目录为C:\Users\Desktop\NodeTest,运行命令
cd ../
node ./code/testReadPath.js
// 报错,找不到C:\Users\Desktop\NodeTest\a.txt

总结:node不识别终端命令里的路径
解决:使用绝对路径

__dirname  表示当前文件所处的目录

使用绝对路径读取文件

fs.readFile(__dirname+'/a.txt','utf8',function(err,result){
	....
})

path路径模块

处理路径的模块
使用时先导入模块

const path = require('path')
path.join([...paths])  //将多个路径片段拼接成一个完整的字符出来,...paths路径片段的序列,返回一个string
path.basename(path,[ext])  //从路径字符串中将文件名解析出来,必填路径,ext为文件扩展名,选填,返回string,路径的最后一部分
path.extname(path)  // 必填路径,返回文件的扩展名

拼接多个路径片段,为完整的路径字符串

const path = require('path')
const pathStr = path.join('/a','/b/c','/d','e')
console.log(pathStr)   //  \a\b\c\d\e

const pathStr2 = path.join(__dirname,'./a/test.txt')
consolr.log(pathStr2)   //   当前路径\a\b\c\d\e

// 注意../会返回上一级路径
const pathStr3 = path.join('/a','/b/c','../','e')
console.log(pathStr3)   //  \a\b\c\e

获取文件名

const path = require('path')
const fileName = path.basename('./a/b/c/index.html','.html')
console.log(fileName)  //  index

获取文件的扩展名

const path = require('path')
const ext = path.extname('./a/b/c/index.html')
console.log(ext)  //  .html

http模块

创建web服务器的模块
创建web服务器前先导入模块

const http = require('http')

创建web服务器的基本步骤:
1、导入http模块
2、创建web服务器实例
3、为服务器实例绑定request事件,监听客户端请求
4、调用listen()方法,启动服务器实例

// 导入模块
const http = require('http')
// 创建实例
const server = http.createServer()
// 绑定request事件
server.on('request', (req,res)=> {
	// 客户端请求服务器,执行这个函数
	console.log('someone visit web server')
})
//启动服务器  listen(端口号,回调函数)
server.listen(80, ()=> {
	console.log('http server running at http://127.0.0.1:80')
})
request请求对象

请求对象包含了客户端相关的数据和属性

req.url  客户端请求的url地址
req.method  客户端的method请求类型

打印客户端请求的url地址和请求类型

const http = require('http')
const server = http.createServer()
server.on('request',(req,res)=> {
	console.log(`url is ${req.url} and method is ${req.method}`)
	res.end('your url is  ${req.url}')
})
server.listen(3000,()=>{
    console.log('server running at http://127.0.0.1:3000')
})

res.end()方法向客户端发送内容,会出现中文乱码问题,需要设置响应头

res.setHeader('Content-Type','text/html:charset=utf-8')
server.on('request',(req,res)=> {
	console.log(`url is ${req.url} and method is ${req.method}`)
	res.setHeader('Content-Type','text/html:charset=utf-8')
	res.end('你的请求url是:  ${req.url}')
})

根据不同的url相应不同的html内容

const http = require('http')
const server = http.createServer()
server.on('request',(req,res)=>{
	const url = req.url
	let content='

404 not found

'
if(url === '/' || url === '/index.html'){ content='

首页

'
}else if(url === '/about.html'){ contene='

关于

'
} res.setHeader('Content-Type','text/html:charset=utf-8') res.end(content) }) server.listen(8080,()=>{ console.log('server running at http://127.0.0.1:8080') })

你可能感兴趣的:(nodejs,node.js,学习,javascript)