这里写目录标题
学习nodejs的意义?
- 了解浏览器端和服务器端的交互过程 可以缩短开发周期
- 出现bug 可以快速定位是前端问题还是后端问题
- nodejs和其它后端语言拥有一样的功能 可以做数据库的增删改善 爬虫 读写文件…
什么是nodejs?
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 v8解析js是最快的
nodejs里面的API大多数都是异步
优缺点
优点: Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,异步编程,使其轻量又高效。
缺点: 单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。
服务器端的js和浏览器端的js有什么区别?
客户端的js三个组成部分 :
- DOM 文档对象模型 js操作网页内容的一套API
- BOM 浏览器对象模型 js操作浏览器页面的一套API
- ECMAScript 一套js语法的规范
服务端的js: 只有ECMAScript 独立于浏览器运行的
nodejs的执行方法
- 打开命令框(CMD)
- 输入 node 回车
- 输入js代码 按回车执行
- 退出node环境 使用后ctrl + c (按两次)
var age = 49;
var gender = "男";
console.log(age, gender);
function sum(m, n) {
console.log(m+n);
}
sum(5, 9);
读取文件
导入模块 require(“模块名”) 模块名是nodejs内部规定死的 不能动
左边保存的变量可以修改 但是通常情况下和模块名保持一致
参数:
参数1 : 需要被读取的文件的路径
参数2 : 可选参数 我们这里给的是编码格式
参数3 : 回调函数 里面有连个参数 err 表示读取失败时返回的信息 data是读取到的文件信息
const fs = require('fs');
fs.readFile("./novels/01.txt","utf-8", (err, data) => {
// console.log(err);
// console.log(data);
if(!err) {
console.log(data);
} else {
console.log("文件读取失败");
}
})
console.log("底部的代码");
写入文件
文件写入方法:writeFile()
fs.writeFile(‘文件路径’,‘要写入的内容’,[‘编码’],‘回调函数’);
参数:
参数1 : 存入信息或者数据的文件路径
参数2 : 需要写入的数据
参数3 : 回调函数
// 导入fs模块
const fs = require("fs");
fs.writeFile("./novels/03.txt", "如果有人钟爱着一朵独一无二的盛开在浩瀚星海里的花。", err => {
// console.log(err);
if(!err) {
console.log('写入成功');
} else {
console.log("写入失败");
}
})
console.log("底部的代码");
http的基本使用
// 一个简单的HTTP服务
// 加载http模块
var http = require('http');
// 创建一个http服务
var server = http.createServer();
// 监听用户的请求事件 (request事件)
// request对象包含了用户请求报文中的所有内容, 通过request对象可以获取所有用户提交过来的数据
// response对象用来向用户响应一些数据, 当服务器要向客户端响应数据的时候, 必须使用response对象
server.on('request', function(request, response) {
// 解决中文乱码问题, 服务器通过设置响应报文头, 告诉浏览器用什么样的编码来解析数据
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
// 获取请求路径
var url = request.url;
console.log(url);
// 向客户端做出响应
response.write('Hello,World! 你好世界');
// 对于每一个请求, 服务器必须结束响应, 否则浏览器会一直等待服务器响应结束
response.end();
});
// 启动服务
// 7777: 自己设置的端口号
server.listen(7777, function() {
console.log('服务器已启动');
});
// 浏览器输入 localhost:7777 即可访问
路径
nodejs的路径问题
nodejs里面的相对路径 是相对于当前运行node命令的终端所处的相对路径
为了保证在任何地方打开终端 都可以运行 那么我们的路径使用绝对路径
问题 : 万一文件夹存在其他地方 绝对路径也不可靠
解决方法: __dirname
__dirname:是当前文件所在的文件的绝对路径
__filename:是当前文件的绝对路径
const fs = require("fs");
fs.readFile(__dirname + "\\novels\\01.txt", "utf-8", (err, data) => {
console.log(data);
})
console.log(__dirname + "\\novels\\01.txt");
console.log(__filename);
nodejs的路径模块
// 导入模块
const path = require("path");
const fs = require("fs");
const pathName = path.join("name", "info", "assets", "index.html");
console.log(pathName);
// 在使用到路径的地方 使用绝对路径
const txtPath = path.join(__dirname, "novels", "01.txt");
console.log(txtPath);
// 读取文件
fs.readFile(txtPath, "utf-8", (err, data) => {
if(!err) {
console.log(data);
} else {
console.log(err);
}
})