- 读取文件
// 浏览器中的 JavaScript 是没有文件操作的能力的 // 但是 Node 中的 JavaScript 具有文件操作的能力 // fs 是 file-system 的简写,就是文件系统的意思 // 在 Node 中如果想要进行文件操作,就必须引入 fs 这个核心模块 // 在 fs 这个核心模块中,就提供了所有的文件操作相关的 API // 例如:fs.readFile 就是用来读取文件的 // 1. 使用 require 方法加载 fs 核心模块 var fs = require('fs') // 2. 读取文件 // 第一个参数就是要读取的文件路径 // 第二个参数是一个回调函数 // // 成功 // data 数据 // error null // 失败 // data undefined没有数据 // error 错误对象 fs.readFile('./data/a.txt', function (error, data) { // <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 6a 73 0d 0a> // 文件中存储的其实都是二进制数据 0 1 // 这里为什么看到的不是 0 和 1 呢?原因是二进制转为 16 进制了 // 但是无论是二进制01还是16进制,人类都不认识 // 所以我们可以通过 toString 方法把其转为我们能认识的字符 // console.log(data) // console.log(error) // console.log(data) // 在这里就可以通过判断 error 来确认是否有错误发生 if (error) { console.log('读取文件失败了') } else { console.log(data.toString()) } })
- 写入文件
var fs = require('fs') // $.ajax({ // ... // success: function (data) { // } // }) // 第一个参数:文件路径 // 第二个参数:文件内容 // 第三个参数:回调函数 // error // // 成功: // 文件写入成功 // error 是 null // 失败: // 文件写入失败 // error 就是错误对象 fs.writeFile('./data/你好.md', '大家好,给大家介绍一下,我是Node.js', function (error) { // console.log('文件写入成功') // console.log(error) if (error) { console.log('写入失败') } else { console.log('写入成功了') } })
- http模块
// 接下来,我们要干一件使用 Node 很有成就感的一件事儿 // 你可以使用 Node 非常轻松的构建一个 Web 服务器 // 在 Node 中专门提供了一个核心模块:http // http 这个模块的职责就是帮你创建编写服务器的 // 1. 加载 http 核心模块 var http = require('http') // 2. 使用 http.createServer() 方法创建一个 Web 服务器 // 返回一个 Server 实例 var server = http.createServer() // 3. 服务器要干嘛? // 提供服务:对 数据的服务 // 发请求 // 接收请求 // 处理请求 // 给个反馈(发送响应) // 注册 request 请求事件 // 当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数 server.on('request', function () { console.log('收到客户端的请求了') }) // 4. 绑定端口号,启动服务器 server.listen(3000, function () { console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问') })
接下来稍微变变 请求不同的路径 内容变化
var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置请求处理函数 server.on('request', function (req, res) { console.log('收到请求了,请求路径是:' + req.url) console.log('请求我的客户端的地址是:', req.socket.remoteAddress, req.socket.remotePort) // res.write('hello') // res.write(' world') // res.end() // 上面的方式比较麻烦,推荐使用更简单的方式,直接 end 的同时发送响应数据 // res.end('hello nodejs') // 根据不同的请求路径发送不同的响应结果 // 1. 获取请求路径 // req.url 获取到的是端口号之后的那一部分路径 // 也就是说所有的 url 都是以 / 开头的 // 2. 判断路径处理响应 var url = req.url if (url === '/') { res.end('index page') } else if (url === '/login') { res.end('login page') } else if (url === '/products') { var products = [{ name: '苹果 X', price: 8888 }, { name: '菠萝 X', price: 5000 }, { name: '小辣椒 X', price: 1999 } ] // 响应内容只能是二进制数据或者字符串 // 数字 // 对象 // 数组 // 布尔值 res.end(JSON.stringify(products)) } else { res.end('404 Not Found.') } }) // 3. 绑定端口号,启动服务 server.listen(3000, function () { console.log('服务器启动成功,可以访问了。。。') })