NODEJS笔记(持续更新学习)

零.笔记前一些东西

0.1require()

用于引入模块、 JSON、或本地文件。
可以从 node_modules 引入模块。
可以使用相对路径(例如 ./、 ./foo、 ./bar/baz、 …/foo)引入本地模块或 JSON 文件,路径会根据 __dirname 定义的目录名或当前工作目录进行处理。

// 引入本地模块:
const myLocalModule = require('./path/myLocalModule');
// 引入 JSON 文件:
const jsonData = require('./path/filename.json');
// 引入 node_modules 模块或 Node.js 内置模块:
const crypto = require('crypto');

一.fs-文件系统

加载fs核心模块

const fs = require('fs')

1.1读文件-fs.readFile()

fs.readFile(path, callback)
例1:读取hello.txt的内容

const fs = require('fs')
fs.readFile('./hello.txt', (err, res) => {
 if (err) throw err
 console.log(res)
})
//hello.txt内容:hello word
//<Buffer 68 65 6c 6c 6f 20 77 6f 72 64>

例2:将原始buffer改为指定字符编码

const fs = require('fs')
fs.readFile('./hello.txt', 'utf-8', (err, res) => {
 if (err) throw err
 console.log(res)
})
//hello.txt内容:hello word
//hello word

1.2写文件-fs.writeFile()

fs.writeFile(path,data,callback)
例1:创建一个js文件,文件名:hello.js

const fs = require('fs')
fs.writeFile('./hello.js', '', (err) => {
 if(err){
  console.log('文件写入失败')
  console.log(err)
 }
 else{
  console.log('文件写入成功')
  console.log(err)
 }
})
//文件写入成功
//null

1.3删文件-fs.unlink()

fs.unlink(path,callback)
例1:删除同目录下的hello.js文件

const fs = require('fs')
fs.unlink('./hello.js',(res)=>{
 console.log('文件已经删除')
})
//
```文件已经删除
# 二.http-HTTP
加载http核心模块
```javascript
const http = require('http')

1.4创建目录-fs.mkdir()

fs.mkdir(path[, options], callback)
例1:在同目录下创建新目录

const fs = require('fs')
fs.mkdir('./new', {
 recursive: true
}, (err) => {
 if (err) throw err
})

1.5删除目录-fs.rmdir()

fs.rmdir(path,callback)
例1:删除创新的new目录

const fs = require('fs')
fs.rmdir('./new', (err) => {
 console.log(err)
})

二.http-HTTP

2.1创建WEB服务器

例1:

//1.加载http核心模块
const http = require('http')
//2.使用http.createServer()方法创建一个WEB服务器
const server = http.createServer()
//3.服务器配置
server.on('request', () => {
 console.log('收到请求')
})
//4.绑定端口号,服务器启动
server.listen(3000, () => {
 console.log('服务器启动成功,可以通过:http://127.0.0.1:3000/访问')
})

response对象有一个方法:write可以用来给客户端发送响应数据
write可以使用多次,但是最后一次一定要使用end来结束响应

response.write('hello')
response.write(' world')
response.end()

上方代码可等价为一下代码

response.end('hello world')

例2:不同路径响应不停结果

const http = require('http')
const server = http.createServer()
erver.on('request', (request, response) => {
 console.log('收到请求,请求路径:' + request.url)
 if (request.url == '/') {
  response.write('this is /')
 } else if (request.url == '/favicon.ico') {
  response.write('this is /favicon.ico')
 } else {
  response.write('this is something else')
 }
 response.end()
})
server.listen(3000, () => {
 console.log('服务器启动成功,可以通过:http://127.0.0.1:3000/访问')
})

2.2中文字符乱码解决-response.setHeader()

例1:

const http = require('http')
const server = http.createServer()
server.on('request', (request, response) => {
 const url = request.url
 if (url == '/') {
  response.end('初始化')
 }
})
server.listen(3000, () => {
 console.log('127.0.0.1:3000')
})
//“初始化”显示为“鍒濆鍖�”

服务器默认发送utf-8编码内容,但是浏览器在此并不知道,在不知道服务器响应内容的编码的情况下会按照当前系统的默认编码去解析
中文的默认操作系统是gbk
例2:例1的解决方法

const http = require('http')
const server = http.createServer()
server.on('request', (request, response) => {
 const url = request.url
 if (url == '/') {
  response.setHeader('Content-Type', 'text/plain;charset=utf-8')
  response.end('初始化')
 }
})
server.listen(3000, () => {
 console.log('127.0.0.1:3000')
})

即添加

response.setHeader('Content-Type', 'text/plain;charset=utf-8')

在http协议中,Content-Type是告诉对方发送数据类型

Content-Type对照表
https://tool.oschina.net/commons

2.3发送文件中的数据


有一个html文件,文件名为01.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <body>
  <h1>hahahah</h1>
 </body>
</html>

通过node打开

const http = require('http')
const fs = require('fs')
const server = http.createServer()
server.on('request', (request, response) => {
 const url = request.url
 if (url == '/') {
  fs.readFile('./01.html', 'utf-8', (err, res) => {
   if (err) throw err;
   const content = res
   response.setHeader('Content-Type', 'text/html;charset=utf-8')
   response.end(content)
  })
})
server.listen(3000, () => {
 console.log('127.0.0.1:3000')
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值