node.js
认识node/node.js
官方解释:node.js是一个基于chrome v8 解析引擎的JavaScript运行环境
个人理解:软件
特点:没有图标
不能先打开,需要软件和文件一起运行(在黑窗口运行)
node为什么可以执行js
因为有chrome V8解析引擎
前端也可以执行js
node是把chrome中的解析引擎放在node身上
node的组成
前端js的组成
ECMAscript:语法标准
DOM:文档对象模型
BOM:浏览器对象模型
node组成
ECMAscript:语法标准
操作数据库的能力,书写后端能力(I/O模式)(输入输出流)
没有DOM和BOM
node的安装
安装在操作系统盘
检测:打开命令行窗口,输入 cmd 回车,
输入$ node–version
出现版本号即安装成功
node的卸载
打开控制面板 => 卸载程序 => 找到node => 右击卸载
node的命令行操作
没有图形化界面,没有可选的操作按钮
常用的指令:
切换盘符
切换文件夹(去到下一个文件夹中):
注意:必须在同一个盘符
指令:cd 文件夹名称
回到上一个文件夹
指令:cd ..
切换盘符
指令:盘符:D: 或者是 d:
清屏指令
作用:当内容足够多时,清除屏幕上的内容
指令:cls
node执行js文件
执行方式
1,直接在黑窗口中执行
输入指令:$node 回车
不推荐
2,执行 .js 文件
注意:要找到要执行的 js 文件
在执行 .js 2文件的同一层级打开
node开发模式
1,就是把所有的代码都写入到js文件中
2,模块化开发
模块分类
自定义模块
就是我们自己创建的每一个 .js 文件就是一个自定义模块
内置模块
node自带的
第三方模块
既不是自己创建的也不是内置的,这样的模块称之为第三方模块
自定义模块
导出:在每一个js文件中,都有一个天生自带的变量,叫做:module
语法1:module.exports = 你要导出的对象
语法2:就是在node中每一个文件中还有一个变量,叫做exports
也是一个对象,保存的是module.exports的地址
如果是向对象中添加内容
1,module.exports.xxx = yyy
2,exports.xxx = yyy
导入:
语法:require(‘要导入的文件地址’)
内置模块 fs
作用:就是用来处理和文件或者文件夹相关的内容的一个模块,使用的时候直接导入
常用的方法
readFile()
语法:变量名.readFile('要读取的文件的路径','格式',回调函数)
格式:默认Buffer格式,可以写utf-8 或者utf8
回调函数:读取文件完毕(成功或者失败)后触发的函数
作用:就是读取文件(异步读取)
readFileSync()
语法:变量名 .readFileSync('要读取的文件的路径','格式')
作用:就是同步读取文件
返回值:就是同步读取到的文件内容,如果失败,后续代码不执行
writeFile()
语法:变量名.writeFile('要写入的文件路径','写入内容','回调函数')
作用:异步写入内容
注意:完全覆盖式替换掉之前所有内容,如果没有这个文件会自动创建这个文件并写入内容
writeFileSync()
语法:变量名.writeFileSync('要写入的文件路径','写入内容')
内置模块http模块
作用:用来创建一个服务的,就是我们自己搭建一个服务器
如何创建
创建服务
语法:http.createServer(function(req,res))
req(requuest):表示和本次请求相关的所有内容,在浏览器网址栏中输入的内容
res(response):表示响应内容,即后端返回给前端的内容
监听端口号
语法:server.listen(端口号,函数)
内置模块path
作用:处理和路径相关的内容
常用方法
join()
语法:path.join('路径碎片','路径碎片',...)
作用:把路径拼接成一个相对路径
返回值:就是一个拼接好的相对路径
resolve()
语法:path.resolve('路径碎片','路径碎片',...)
作用:把路径碎片拼接成一个绝对路径
返回值:就是拼接好的一个绝对路径
parse()
语法:path.parse(一个路径)
作用:对这个路径进行解析
返回值:就是解析后的结果,是一个对象
内置模块url
主要作用:解析和请求地址相关的内容
导入内置模块
const url = require('url')
常用方法
parse()
语法:url.parse(你要解析的地址,是否深度解析)
默认值:false,表示不进行深度解析
选填true,进行深度解析
区别:进行深度解析以后query是一个对象,没有进行深度解析是一个字符串
请求
在浏览器地址栏中输入地址后回车
认识npm
npm
是一个包管理工具
包:所有的第三方都叫做包
作用:帮助下载第三方,之前需要到官网下载,现在使
npm安装
检测安装
命令行工具,输入指令:npm --version 或 npm -v
卸载:
随着node的卸载而卸载
npm的使用
1,初始化
找到项目根目录,开始执行指令
注意:项目名称不能是中文
输入指令: npm init
pickage name : 项目名称
version:版本号
description:项目描述
entry point:入口文件
test command:
git repository:表示将来要上传到git的仓库地址
keywords:项目描述关键字
author: 作者
license:(ISC)项目发行证书*
这个时候会形成package.json的文件
用来记录项目信息和后期包的信息
2,下载包
打开命令行工具,切换到package.json文件所在地方
指令:== npm install 包名==
如果是首次下载,会出现一个node_modules的文件夹,里面保存所有的包
同时生成一个package.lock.json文件
3,查看包的版本信息
打开命令行工具
输入指令: npm view 包名 versions
如果输入的是==npm view 包名 version == 得到最新版本包的信息
4,下载指定版本包
打开命令行工具,切换到package.json文件所在地方
输入指令:== npm install 包名@版本号 ==
5,删除包
打开命令行工具,切换到package.json文件所在地方
输入指令:npm uninstall 包名 或 npm un 包名
6,一次性下载所有包
打开命令行工具,切换到package.json文件所在地方
输入指令:npm install 或 npm i
当执行这个指令时会自动访问package.json文件,根据里面的信息下载包
7,清除缓存
打开命令行工具,目录无所谓
输入指令:npm cache clean -f
8,切换镜像源
打开命令行工具
查看所有的镜像源地址:nrm ls
输入指令:npm config set registry 要使用的镜像源地址
第三方包的使用
别人写好的包
操作
下载
导入到要使用的文件中
开始操作(按照说明文档)
认识nodemon
问题:使用node执行js文件时只能执行一次
当js代码发生改变时,需要重新执行
安装:win: npm install --global nodemon
mac :== sudo npm install --global nodemon==
检测:
打开命令行窗口,目录无所谓
输入指令:nodemon -v
输入指令:nodemon --version
卸载
打开命令行窗口,目录无所谓
输入指令
win :== npm uninstall --global nodemon==
mac : sudo npm uninstall --global nodemon
使用:和之前执行js文件一样,但是执行一次即可
认识express
express是什么
是node的一个框架
是一个第三方
对原生node进行深度封装,直接使用里面方法,为了提供方便
使用:
下载:npm i express
导入对应的文件中使用
配置路由表
语法:express.Router()
向表中添加内容:
语法:router.get()
router.post()
使用路由表
中间件
就是express 的一概念
就是指任意两个环节中间的环节
中间件的分类
全局中间件
作用再全局的中间件,任何一个环节都可以使用到的中间件
语法:==sever.use(以什么开头,函数)==
以什么开头:可以不写
函数:需要接受三个参数
路由中间件
就是使用在路由表上的中间件
语法:router.use(以什么开头,函数)
请求级中间件
就是在我们请求路由上,直接书写在处理函数之前就可以
错误中间件
一般使用在全局