[前端学习笔记]Node.js基础知识整理(包含npm、express、cors、mysql)

本文介绍了Node.js的基础知识,包括Node.js的运行环境和用途,内置API如fs、path和http模块。接着探讨了模块化与npm,解释了模块化概念、npm包管理和常用命令。深入讲解了Express框架、CORS跨域解决方案以及mysql数据库的使用。此外,还涉及Web开发模式、身份认证机制(Session和JWT)以及密码加密和表单数据验证的方法。
摘要由CSDN通过智能技术生成

一、什么是Node.js

Node.js是一个基于"Chrome V8"JS解析引擎的JS运行环境。官网

1. Node.js运行环境

浏览器是JS的前端运行环境;Node.js是JS的后端运行环境。

2. Node.js可以做什么
  • 基于Express框架,可以构建Web应用
  • 基于Electron框架,可以构建跨平台的桌面应用
  • 基于restify框架,可以构建API接口项目
  • 读写和操作数据库,创建实用的命令行工具辅助前端开发,etc…

二、Node.js内置API模块

内置API是由运行环境提供的特殊接口,只能在所属运行环境中被调用。

1. fs模块:读写操作文件
// 导入fs模块
// require()方法加载模块时,会执行被加载模块中的代码
const fs = require('fs')

// 读取指定文件[path存放路径;option编码格式(一般'utf8')]
fs.readFile(path, [option], function(err, dataStr) {
   
	// 失败的结果
	console.log(err)
  	// 成功的内容
  	console.log(dataStr)
})

// 写入指定文件[path存放路径;data写入的内容;option编码格式(一般'utf8')]
fs.writeFile(path, data, [option], function (err) {
   
	if (err) {
   
    	return console.log('文件写入失败!' + err.message)
  	}
  	console.log('文件写入成功!')
})
2. path模块:处理路径

路径path使用相对路径容易出现“路径动态拼接错误”的问题,代码会以执行node命令的目录为当前目录。提供完整路径可以解决此问题。

// 导入path模块
const path = require('path')

// 拼接路径[__dirname表示当前文件所处的目录]
path.join(path1, path2, ...)

// 获取路径中的文件名(ext可以获得去除扩展名的文件名)
const fpath = '/a/b/c/index.html'
path.basename(fpath,[ext])
// 获取路径中的扩展名
path.extname(fpath)
3. http模块:创建web服务器

1)服务器基础知识

  • IP地址:互联网每台计算机的唯一地址,用点分十进制表示。通过ping命令可以查看服务器的IP地址。
  • 域名:和IP地址一一对应的关系,对应关系存放在域名服务器(DNS)中。
  • 域名服务器:提供IP地址和域名之间转换服务的服务器。
  • 端口:标识web服务,每个web服务都对应一个唯一的端口号。客户端发送的请求通过端口号准确交给对应的web服务器进行处理。

2)http模块

// 导入http模块
const http = require('http')
// 创建web服务器实例
const server = http.createServer()
// 为服务器绑定request事件监听客户端请求
server.on('request', (req, res)=>{
   
	// req.url		客户端请求的URL地址
	// req.method  	客户端请求的method类型
	// res.end		向客户端响应的内容
	// 设置Content-Type响应头,解决中文乱码的问题
	res.setHeader('Content-Type','text/html; charset=utf-8') 
})
// 启动web服务器
server.listen(80,()=>{
    
	console.log('server running at http://127.0.0.1')
})

三、模块化与npm

1. 模块化

1)模块化概念
解决复杂问题时,自顶向下逐层把系统划分成若干模块的过程。把一个大文件拆成独立并相互依赖的多个小模块,模块是可组合、分解和更换的单元。提高了代码的复用性、可维护性,可以实现按需加载。

2)模块化规范
对代码进行模块化的拆分和组合时需要遵循的规则。降低沟通成本,极大方便了各个模块之间的相互调用。Node.js遵循CommonJS模版规范:

  • 每个模版内部,model变量代表当前模块。
  • module变量是一个对象,module.exports是对外的接口。
  • require加载模块,加载模块的module.exports属性。

3)Node.js中模块分类

  • 内置模块:Node.js官方提供的
  • 自定义模块:用户自创建的js文件
  • 第三方模块:由第三方开发出来的

4)模块作用域
在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问。防止了全局变量污染问题,通过module对象向外共享模块作用域中的成员,外界使用require方法导入自定义模块时得到modules.exports所指向的对象。Node提供exports对象与modules.exports指向同一个对象。

2. npm

1)包
包是由第三方基于内置模块开发出来,提供更高级、方便的API,免费供所有人使用,极大的提高了开发效率。

  • 可以从https://www.npmjs.com网站搜索需要的包,从https://registry.npmjs.org服务器下载需要的包。
  • 包可以分为项目包和全局包。项目包安装到项目的node_modules目录下,全局包安装到用户node_modules目录下。
  • 规范的包结构:
    1—包必须以单独的目录存在。
    2—包的顶级目录下必须包含package.json包管理配置文件,记录项目相关的配置信息。其中dependencies节点中记录安装了哪些包。
    3—package.json中必须包含name包名、version版本号、main包的入口三个属性。
    4—package-lock.json中记录node_modules目录下每个包的下载信息。

2)npm
npm(Node Package Manager)包管理工具可以从上述服务器把需要的包下载到本地使用。npm随着Node.js自动安装。

3)npm常用命令

// 在执行命令目录中快速创建package.json文件
npm init -y
// 安装指定包[可以指定版本:大版本.功能版本.修复版本]
npm install/i 包名@版本号
// 安装全局包
npm install/i 包名 -g
// 一次性安装dependencies节点所有依赖包
npm install/i
// 安装指定包并记录在devDependencies节点
// 【开发依赖包】只在开发阶段用到,上线阶段不会用到的记录在devDependencies节点
// 【核心依赖包】开发阶段和上线阶段都用到的记录在dependencies节点
npm install/i 包名 -D
// 卸载指定包
npm uninstall 包名
// 监听项目文件,实现自动重启项目
nodemon 文件名
// 切换镜像服务器加快下载速度【不方便】
npm config get registry
n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值