IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js基础知识 -> 正文阅读

[JavaScript知识库]Node.js基础知识

一、NodeJS简介

2. NodeJs初识

我们常用的后端语言主要是php、java、python等,那么js是否可以做后端开发呢?是可以的,但是前提是js代码必须在NodeJs的环境中才可以。

NodeJs是基于Chrome V8引擎的javascript运行环境。

总结: 如果我们写的js代码放在浏览器运行和解析,说明我们是在做前端开发,如果把js放在NodeJS的环境中说明我们在做后端开发了。

3.模块划分

NodeJS中有很多内置API模块,但是不包含DOM和BOM等浏览器API,所以Node中无法操作DOM和BOM

二、fs文件系统模块

1.简介

fs模块是NodeJS官方提供的专门用来操作文件的模块,它提供了一系列的方法和属性,方便我们对于文件的处理。

?

2.readFile读取文件

语法:fs.readFile(path[, options], callback)

代码实现: 新建01.js,实现代码如下:

const fs = require("fs");

fs.readFile("./01.txt", "utf8", function(err, data) {
  // console.log(err);
  console.log(data);
});

总结: 如果读取成功,err的值为null, 如果读取失败,err的值为错误读写,data的值为undefined?

?

3.判断文件是否读取成功

const fs = require("fs");

fs.readFile("./02.txt", "utf8", function(err, data) {
  if (err) {
    console.log("文件读取失败" + err.message);
  }
  console.log(data);
});

4.写入文件?

语法:fs.writeFile(file, data[, options], callback)

const fs = require("fs");

fs.writeFile("./01.txt", "我是添加内容", function(err, data) {
  if (err) {
    console.log("文件写入失败" + err.message);
  }
  console.log("文件写入成功");
});

5.__dirname?

__dirname会自动获取文件所在的目录,建议我们后期写文件路径用__dirname+文件地址

三、path路径模块?

1.简介

path模块也是NodeJS官方提供的专门处理路径的模块

比如:path.join()方法可以把多个路径片段拼接成一个完整的路径 path.basename()方法可以在提供的路径字符串中把文件名解析出来

2.path.join()

比如我们下面的代码:

fs.readFile(__dirname + "/01.txt", "utf8", function(err, data) {
  。。。
});

写的时候不小心写成__dirname + "./01.txt",路径中多写一个点,就会报执行错误,我们可以如下操作:

fs.readFile(path.join(__dirname + "./01.txt"), "utf8", function(err, data) {
  。。。
});

?

3.path.basename?

path.basename(path[, ext])
const path = require("path");

const str = "code/test/01.txt";
console.log(path.basename(str)); //01.txt  获取完整的文件名
console.log(path.basename(str, ".txt")); //01  获取排除后缀以后的文件名

?

4.path.extname?

path.extname(path)
const path = require("path");
const str = "code/test/01.txt";
console.log(path.extname(str)); //.txt  获取文件的后缀

?

四、Http模块?

1.使用步骤

一般是利用NodeJS中提供的Http模块创建web服务器用的,主要分为下面几个步骤:

  1. 引入http模块
  2. 创建web服务器实例
  3. 监听客户端请求
  4. 启动服务器
const http = require("http");
const server = http.createServer();
server.on("request", (req, res) => {
  console.log("请求服务器了");
});
server.listen(80, () => {
  console.log("server is listen:127.0.0.1");
});

2.req

req是捕获到客户端请求到服务端的请求对象,它里面有一些属性可以帮助我们获取与客户端相关的信息。比如:

req.url可以获取客户端请求的地址

req.method可以获取客户端请求的方式

3.res

响应内容

const http = require("http");
const server = http.createServer();
server.on("request", (req, res) => {
  res.end(req.url + req.method);//给客户端响应内容
});
server.listen(80, () => {
  console.log("server is listen:127.0.0.1");
});

我们通过node 01.js执行上面的脚本以后,就会跑起来服务。注意上面的服务代码如果有改动需要通过ctrl+c退出服务,然后重新启动服务才能看到改变的效果。

响应乱码?

服务器给客户端响应内容的时候有的时候由于编码格式会显示乱码,我们设置如下:

const http = require("http");
const server = http.createServer();
server.on("request", (req, res) => {
  res.setHeader("Content-Type", "text/html;charset=utf-8");
  res.end(req.url + req.method);
});
server.listen(80, () => {
 .....
});

不同地址响应不同内容

const http = require("http");
const server = http.createServer();
server.on("request", (req, res) => {
  let content = "";
  if (req.url == "/" || req.url == "/index.html") {
    content = "<h1>首页内容</h1>";
  } else if (req.url == "/detail.html") {
    content = "<h1>详情页内容</h1>";
  } else {
    content = "<h1>你访问的页面不存在</h1>";
  }

  res.setHeader("Content-Type", "text/html;charset=utf-8");
  res.end(content);
});
server.listen(80, () => {
  console.log("server is listen:127.0.0.1");
});

五、包管理工具

1.包简介?

包就是我们平常所说的第三方模块或者软件等等,比如我们前面使用的jquery包,主要是为了提高开发效率存在的。

2.时间格式化

比如我们的项目中需要时间格式成年月日,我们以前需要自己通过getFullYear()等方法获取年或者月份等等,然后再用加号拼接,现在我们借助一个第三方包moment(专门格式化日期的包)

六、express

1.简介

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。 我们前面使用http模块能创建web服务器,express也能搭建web服务器,因为express是基于内置的http模块进一步封装起来的,使用起来会更简单和灵活。

http和express的关系相当于js和jquery的关系。

2.基础使用

npm install express@版本号

建议设置好版本号,避免出问题

3.express的get和post请求

const express = require("express");
const app = express();
// 发送get请求
app.get("/user", (req, res) => {
  res.send({ code: 200, msg: "响应get请求成功", status: 1 });
});
// 发送get请求
app.post("/user", (req, res) => {
  res.send({ code: 200, msg: "响应post请求成功", status: 1 });
});
app.listen(80, () => {
  console.log("服务已经启动127.0.0.1");
});

4.获取请求参数?

get请求获取参数

req.query

req.query可以获取客户端请求的参数

app.get("/user", (req, res) => {
  let msg = req.query;
  res.send({ code: 200, msg: msg, status: 1 });
});

postman测试127.0.0.1/user?name=tom&age=23,结果如下:

{
    "code": 200,
    "msg": {
        "name": "tom",
        "age": "23"
    },
    "status": 1
}

获取动态参数?

动态参数传参如下:

// 发送get请求
app.get("/user/:id/:name", (req, res) => {
  let msg = req.params;
  res.send({ code: 200, msg: msg, status: 1 });
});

postman测试:127.0.0.1/user/1/tom,响应结果如下:

{
    "code": 200,
    "msg": {
        "id": "1",
        "name": "tom"
    },
    "status": 1
}

?

获取post请求的参数?

传递json格式

示例代码如下:

const express = require("express");
const app = express();
// 使用中间件把数据转换成json格式,后面req.body才能正常接收到
app.use(express.json());
app.post("/user/add", (req, res) => {
  const body = req.body; //获取post请求的数据
  console.log(body);
  res.send("接收到post请求数据" + body);
});
app.listen("80", () => {
  console.log("服务已经启动了 127.0.0.1");
});

获取url-encoded提交数据?

const express = require("express");
const app = express();
// 使用中间件把数据转换成json格式,后面req.body才能正常接收到
// app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.post("/user/add", (req, res) => {
  const body = req.body; //获取post请求的数据
  //console.log(body);
  res.send(body);
});
app.listen("80", () => {
  console.log("服务已经启动了 127.0.0.1");
});

?

5. 静态资源?

express.static()这个方法可以指定静态资源,我们平常写的css或者image等静态资源文件夹就可以对外开放了。

?

6.nodemon?

我们每次修改了服务器的代码以后都需要手动的重启服务比较麻烦,我们可以安装nodemon这个小工具,它会自动监听服务端的代码变动,自动给我们重启node服务。

命令:

  1. npm install nodemon -g 安装nodemon工具
  2. nodemon xx.js 会用nodemon工具打开js文件,自动监听代码的变化
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:48:55  更:2021-11-27 09:48:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:47:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码