1.1 写文件和简单的错误处理
1. 写文件
(1) 第一步:引入fs
const fs = require('fs');
(2)
- 第一个参数:文件路径
- 第二个参数:文件内容
- 第三个参数:回调函数
fs.writeFile('./data/a.txt','大家好,我是nodejs!',function(error){
if(error){
console.log("文件写入失败!");
}else{
console.log("文件写入成功!");
}
})
2. 读文件
- 第一个参数:要读取的文件的路径
- 第二个参数:回调函数
fs.readFile('./data/a.txt',function(error,data){
if(error){
console.log("文件读取失败!");
}else{
console.log(data);
}
})
1.2 创建一个最简单的http服务
//1. 加载http核心模块
const cons = require('consolidate');
const http = require('http');
//2. 使用 http.createServer() 方法创建一个web服务器
//返回一个 Server 实例
var server = http.createServer()
//3. 服务器要干什么?
// 提供数据服务
// 发送请求
// 接收请求
// 处理请求
// 发送响应
// 注册request请求事件
// 当接收到客户端的请求后就会自动触发服务器的request请求事件,执行回调函数处理请求
server.on('request',function(){
console.log('请求成功!');
})
//4. 绑定端口号,可以通过端口号来启动服务器
server.listen(8080,function(){
console.log('服务器启动成功!可以通过 http://127.0.0.1:8080/ 进行访问');
})
1.3 模块系统
1. `require`是一个方法,用来加载模块
- 在
nodejs
中模块有三种:- 具名的核心模块,例如
fs
、http
; - 用户自己编写的模块(引用的时候要写相对路径,不能直接写名字,例如:b,这样写是错误的;要写:./b,可以省略后缀名)
- 具名的核心模块,例如
nodejs
没有全局作用域,只有模块作用域,及a模块定义的东西,在b模块中不能使用
2. 实现模块间的通信
1.4 响应内容类型 - Content-Type
- 服务器默认发送的数据,是
utf-8
编码内容 - 我们自己写服务器时,要注明发的是什么类型的数据,不然浏览器会按照当前操作系统的默认编码去解析
- 中文操作系统默认的编码模式是
gbk
- 解决方法:正确告诉浏览器我们发送的内容是什么编码的
- 在
http
协议中,可使用Content-Type
来告诉浏览器我们发送的内容的编码类型 - 不同内容对应不同的
Content-Type
server.on('request',function(req,res){
//res.setHeader('Content-Type','text/plain; charset=utf-8');
//res.end('hello 你好!');
var url = req.url;
if(url == '/plain'){
res.setHeader('Content-Type','text/plain; charset=utf-8');
res.end('hello 你好!');
}else if(url == '/html'){
res.setHeader('Content-Type','text/html; charset=utf-8');
res.end('<p>click 点击</p>');
//要将这段字符串解析为html格式,就要用`text/html` click 点击
//否则解析出来的为 <p>click 点击</p>
}
})
text/plain
普通文本内容text/html
html
文本内容