nodejs的概念
**node.js:**是一个基于谷歌(Chrome) v8 引擎的 JavaScript运行的一个环境,v8解析js是最快的
node.js方便在于 : 他是在服务器端运行的,不需要通过浏览器,而且,它里面的api大多数都是异步的,他还和其他后端的语言拥有一样的功能,也可以做数据库的增删改查、爬虫、读写文件等等
**node.js的优点:**出现bug 可以快速地定位错误出现在哪里,这样可以快速的找到错误并改正,大大减小了因为bug而耽误的时间。
nodejs是依靠服务器端来运行的,它和浏览器端的区别如下:
客户端的js三个组成部分:
DOM:文档对象模型 js操作网页内容的一套API
BOM:浏览器对象模型 js操作浏览器页面的一套API
ECMAScript:一套js语法的规范 :for
**服务端的js:**只有ECMAScript 独立于浏览器运行
nodejs的执行方法
REPL:全称:read eval print loop
read :读取
eval :解析
print :打印
loop :循环
执行方法4部曲:
1.打开命令框 :window + r(或者直接点击window 输入cmd 回车) 然后输入cmd 回车
2.输入node 回车
3.输入js代码(取得js名 例如:index.js) 回车执行
4.退出node环境 Ctrl+c(按两次,如果还没有退出去,就多按几次)
注意:如果想要检查node安装的版本 在cmd框中输入:node -y,就会出现你所安装的版本,如果和你安装的不一样,那么说明安装失败
http的基本介绍
导入模块 require(“模块名”) 模块名是nodejs内部规定死的 不能动
左边保存的变量可以修改 但是通常情况下和模块名保持一致
1.导入http模块
const http = require(“http”);
2.创建http模块
const server = http.createServer((Request,Response) => {
console.log(111);
2-1:请求路径
console.log(request.url);
2-2:请求方式
console.log(request.method);
2-3:设置响应头:是为了告诉浏览器,返回的数据用utf-8来解析
Response.setHeader(“Content-Type”,“text/html;charset=utf-8”)
Response.end(“要展示的信息”);
})
//监听
server.listen(“端口号”,“IP地址”,() =>{
console.log(“start”);
})
注意:IP地址可以省略不写,但是端口号必须写
例:用http获取文件
1.导入文件模块
const fs = require ("fs");
2.导入http模块
const http = require("http");
3.创建http服务
const server = http.createServer((Request,Response) =>{
设置响应头
Response.setHeader("Content-Type","text/html;charset=utf-8")
console.log(request.url);
let reUrl = request.url;
if(reqUrl === "/index.html"){
fs.readFile("./www/index.html","utf-8",(error) => {
Response.end(data);
})
}
})
开启http服务
server.listen("80",() => {
console.log("start");
})
写入文件
写入文件:writeFile(参数1,参数2,参数3);
参数1:存入信息或者数据的文件的路径
参数2:需要写入的数据
参数3:回调函数
例:
// 导入fs模块
const fs = require("fs");
fs.writeFile(".text.txt", "真相只有一个!!......", err => {
if(!err) {
console.log('写入成功');
} else {
console.log("写入失败");
}
})
console.log("底部的代码");
读取文件
读取文件:readFile(参数1,参数2,参数3);
参数1 : 需要被读取的文件的路径
参数2 : 可选参数 我们这里给的是编码格式
参数3 : 回调函数 里面有连个参数 err 表示读取失败时返回的信息 data是读取到的文件信息
例:
const fs = require('fs');
fs.readFile("./text.txt","utf-8", (err, data) => {
if(!err) {
console.log(data);
} else {
console.log("文件读取失败");
}
})
console.log("底部的代码");
nodejs的路径模块
想要使用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","text.txt");
console.log(txtPath);
读取文件
fs.readFile(txtPath,"utf-8",(err,data) => {
if(!err){
console.log(data);
}else{
console.log(err);
}
})
nodejs的路径问题
nodejs里面的相对路径 : 是相对于当前运行node命令的终端所处的相对路径
为了保证在任何地方打开终端都可以运行,那么我们的路径使用绝对路径
问题: 绝对路径也不可靠
解决办法:_ dirname
dirname:是当前文件所在的文件的绝对路径
filename:是当前文件的绝对路径
例:
想要得到上述的路径文件夹中的信息
const fs = require("fs");
fs.readFile(__dirname + "\\novels\\text.txt","utf-8",(err,data) => {
console.log(data);
})
console.log(__dirname + "\\novels\\text.txt");
console.log(__filename);