Node.js
好好学习,天天向上✨
node.js的http模块支持创建一个服务器,接下来我们将使用它来进行服务器的初始化
复习内置模块
1.fs模块
fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 例如:
fs.readFile() 方法,用来读取指定文件中的内容
fs.writeFile() 方法,用来向指定的文件中写入内容
如果使用fs来操作文件,需要如下的方式来导入它
const fs=require('fs')
2.path路径模块
path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。例如
path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
path.basename() 方法,用来从路径字符串中,将文件名解析出来
如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它:
const path=require('path')
3.http 模块
http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。
如果要希望使用 http 模块创建 Web 服务器,则需要先导入它
const http=require('http')
第三方模块&基本项目结构搭建
前景准备
项目文件夹结构
可以参考:
还有一些必须的第三方库需要安装
express
axios
body-parser
cookie-parser
cors
express-art-template
express-session
form-data
jsonwebtoken
multer
path
multiparty
art-template
connect-multiparty
npm i express axios body-parser cookie-parser cors express-art-template express-session form-data jsonwebtoken multer path multiparty art-template connect-multiparty
其中server.js用来作为整个项目的入口文件,文件里面的内容是
//引入第三方插件
const express = require("express");
const app = express();
const body_parse = require("body-parser");
const path = require("path");
const session = require("express-session");
//安装cors中间件
const cors = require("cors");
// 引入路由
// 配置(解析变量)
app.engine("html", require("express-art-template"));
app.use(body_parse.urlencoded({ extended: false }));
app.use(body_parse.json());
//配置session
app.use(
session({
secret: "test",
cookie: { maxAge: 60 * 1000 * 30 * 24 },
resave: true,
saveUninitialized: false,
})
);
//配置文件
app.use("/public", express.static(path.join(__dirname, "./static")));
app.use(
"/node_modules",
express.static(path.join(__dirname, "./node_modules"))
);
app.use(cors());
app.set("views", "views");
// 配置路由
// 启动服务器
app.listen(8099, () => {
console.log("服务器已启动,端口号:8099");
});
常见常用包的配置
0. 包管理配置文件
npm 包管理工具提供了一个快捷命令,可以在执行命令时所处的目录中,快速创建 package.json 这个包管理配置文件:
用途:
在项目根目录中,创建一个叫做 package.json 的配置文件,即可用来记录项目中安装了哪些包。从而方便剔除 node_modules 目录之后,在团队成员之间共享项目的源代码。
终端输入
npm init -y
该文件中的dependencies结点,记录着项目安装的所有包和版本号
1.express
什么是express
官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。
通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。
Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。
安装
将项目在集成终端打开
执行安装命令
npm install express
基本使用
在项目的入口文件server.js中写入以下代码
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// 之后的其他配置都写在这里
// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(8888, function () {
console.log('server is running at http://127.0.0.1:8888')
})
2.request
简介
相信 Node.js 开发者对 Request 都不会陌生,这是一个 Node.js 模块,以 npm 包的形式提供,是一个简单的 HTTP 客户端,通过它可方便地实现 HTTP 请求。
执行安装命令
npm install request --save
3.Axios
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。主要用于向后台发送请求。
官方网站:Axios 中文文档 | Axios 中文网 | Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js (axios-http.cn)
执行安装命令
npm install axios -g
4.cheerio
执行安装命令
npm install cheerio
5.nodemailer
用来写发送邮箱验证码的接口
简介:
具体可以参考:「nodemailer」Node 邮件发送模块 - 掘金 (juejin.cn)
执行安装命令
npm install nodemailer --save
6.mjml
如果,我们需要给用户发送邮箱信息,此时mjml就派上用场了
MJML是一种标记语言,旨在减少编写响应电子邮件的痛苦,具体可以参考官方网站,这里不做过多的赘述。
官方网站:MJML - The Responsive Email Framework
执行安装命令
npm install mjml
7.mongoose
注意:使用mongoose的前提是电脑上已经下载了mongodb
mongoose是基于Node.js的用于操作MongoDB数据库的第三方的模块
mongoose库简而言之就是在node环境操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用.
执行安装命令
npm i mongoose --save
8.apidoc
写注释就能生成文档的工具
具体的操作步骤可以参考apiDoc - 超简单的文档生成器 - 知乎 (zhihu.com)
执行安装命令
npm install apidoc -g
9.cors
当前后端交互需要传递文件的时候,通常会出现跨域的问题,我们通常使用cors这个插件来解决, mdn文档如下:跨源资源共享(CORS) - HTTP | MDN (mozilla.org)
执行安装命令
npm install express
常见报错:Cannot find module ‘request‘
此时一般是需要看一下自己是否有包管理工具,也就是package.json。如果没有,需要在终端执行命令创建一下
npm init -y
如果已经有了,则执行命令:
cnpm install
就会将package.json 中所有依赖项下载到node_modules文件夹中,就可以 node server.js运行了
其实起因就是因为刚开始学node 项目的时候,没有注意好项目的整体结构,文件夹乱放导致整个项目的流程结构看起来就比较乱,因此就又重新搭建了一次,学长又给我们讲了一下子node项目的整个流程,收获颇多,回来之后又重新调整了一下文件的放置位置,小组的同学又帮我重新放了一下html文件的位置,解决了困扰我一上午的bug,真是太厉害了。之后的话,有些东西不能只想不做的,要努力付出实践的,加油!
平时学习的时候确实需要注意自己马马虎虎的问题
最后的话:
好好学习,天天向上✨