Node.js是一种用于构建可伸缩的网络应用程序的JavaScript运行时环境。它使用事件驱动、非阻塞I/O模型,使其非常适合编写数据密集型、实时应用程序。Node.js在服务器端编程方面非常流行,但也可以用于编写桌面应用程序和移动应用程序。
● 学习Node.js是为了解前后端交互流程
● 同时为后面学习前端框架做准备
● 前端有很多业务不能解决,需要使用Node.js处理
Node.js具有以下特点:
- 采用事件驱动、非阻塞I/O模型,使其具有高效、轻量和可扩展的特点;
- 基于JavaScript语言,使得开发人员可以使用同样的语言在前后端进行开发;
- 内置了大量的模块,如HTTP、FS、Crypto等,方便开发人员进行编程;
- 社区非常活跃,有大量的第三方模块和工具可供使用,提高了开发效率。
Node.js是一个非常流行和有用的技术,特别适合开发高性能、实时应用程序和网络应用程序。Node.js主要应用于Web应用程序、后端服务、实时通信应用程序等领域。
一,Node中的cmd操作
1.任意文件资源管理器中,地址栏输入:cmd
cmd的指令有很多,最常见的例如;
mkdir 或则 md 添加文件 rmdir 或则 rd 删除文件
C:\Users\Teng\Desktop\day> rd ”文件名“
cd .. 上一级
C:\Users\Teng\Desktop\day> cd
cls 清空运行框
C:\Users\Teng\Desktop\day> cls
exit 退出运行框
C:\Users\Teng\Desktop\day> exit
dir 查看文件目录
C:\Users\Teng\Desktop\day> dir
等等。。。。。。。
二,Node中的顶层对象
在浏览器 JavaScript 中,通常 window是顶层对象
而 Node.js 中的顶层对象是 global
// console.log(this);//浏览器中js 为window 而Node.js中却是=> { }
// console.log(global);//顶级对象
为了解决这种问题出现了globalthis :
// console.log(globalthis );//在浏览器中js 为window 而Node.js中是 global
三,Node中的全局变量
Node平台内置了例如:__filename
和 __dirname
等全局变量 setInterval() setTimeout()等方法
//绝对路径
console.log(__dirname);//E:\2020816\day07\code
console.log(__filename);//E:\2020816\day07\code\1.全局变量.js
一个是局部变量一个是全局变量,简单来说就是一个只能到文件夹一个能到指定文件
四,Node模块系统
对于Node的模块系统概念:
模块:在Node.js中,每个JavaScript文件都是一个模块,每个模块都会有自己的作用域。模块分为两类:一类是Node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块( (ES6模块化,自定义)自定义模块、第三方模块)。
文件模块 [ES6模块化(ESM)/ CommonJS的模块化 (CJS)]
ES6模块化(ESM):
利用export和impor from:
批量导入和导出:
默认导入导出(export default):
CommonJS的模块化 (CJS):
导出:一个模块可以将一个或多个对象(函数、变量、类等)公开给其他模块使用。通过在模块中使用module.exports
关键字将对象导出。
导入:一个模块可以使用require
函数来导入其他模块的对象。
输出结果:{ name: '张三', age: 18, sex: '男', run: '跑步' }
依次导出多个数据:
上面的方法太过于繁琐于是就有了批量导入和导出:
如果模块中出现两个,一个单项导出和一个批量导出同时出现则批量导出为主:
//最好不能出现同时出现
内置模块/核心模块:Node.js自带了一些内置模块可以在应用程序中使用,如http
、fs
、path
等等。
//内置模块 NodeJS中自带的模块,可以直接使用
// require("模块名")
// fs/url/querystring/qs/path/http....
//url模块 处理url
let myUrl="http://192.168.1.1:3000/admin/login?username=jack&pwd=2342#main";
//协议
//主机名
//端口
//路径
//参数
// console.log(myUrl);//http://192.168.1.1:3000/admin/login?username=jack&pwd=2342#main
let url=require("url");//url网址方法
// console.log(url);
// let newurl=url.parse(myUrl);
// console.log(newurl); 内置模块的方法将url的协议等一系列拆分
// let {protocol,slashes,auth,host,port}=newurl;
// console.log(protocol);//利用解构的方式进行一一获取
let str=require("querystring");//转成对象模块 对象也能转成字符串
let string="username=jack&pwd=2342";//==>转成对象模块
let newstring=str.parse(string);
console.log(newstring);//[Object: null prototype] { username: 'jack', pwd: '2342' }
// let obj={
// id:1,
// username:"admin",
// pwd:1123234
// }
// let newobj=str.stringify(obj);
// console.log(newobj);//id=1&username=admin&pwd=1123234
内核模块(内置模块/核心模块)新特性 :
在node的新版本中,支持使用[node:module API] 即可以使用node:前缀
来标识核心模块。
这种方式导入包,它会绕过所需的缓存。
直接使用require('fs')
,需要等node.js将所有核心模块加载完成后才可以使用,这个可以通过module.builtinModules去判断是否加载完成
使用require('node:fs')
,则不需要等待,可以直接调用内置模块,但是却无法使用缓存
let node=require(“node:fs‘)/require(“node:ur”l)。。。。。。
第三方模块:
开发者可以通过NPM(Node Package Manager)来安装第三方模块,以扩展Node.js的功能。简称(NPM)
第三方模块是指在开发过程中使用的非 Node.js 内置模块,这些模块通常是由其他开发者编写并共享的。使用 NPM 可以很容易地安装这些第三方模块,只需要在命令行中使用 npm install 模块名
命令就可以完成安装。
NPM 中的第三方模块非常丰富,包括各种 Web 框架、数据库驱动、工具库、CSS 框架等,可以帮助开发者更加快速、高效地完成开发任务。同时,NPM 也支持开发者将自己开发的模块共享到 NPM 上,供其他开发者使用。
首先创建一个文件,打开cmd命令框输入init指令生成 初始化代码工程(会在根目录下生成一个package.json的文件);
{
"name": "node_demo2", 包名
"version": "1.0.0", 版本号
"description": "", 项目描述信息
"main": "index.js", 入口文件
"scripts": { 命令
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [], 关键字
"author": "", 作者
"license": "ISC", 许可协议
"dependencies": { 生产依赖
"cookie-parser": "^1.4.6",
"jquery": "^3.7.0"
},
"devDependencies": { 开发依赖
"express-session": "^1.17.3",
"less": "^4.2.0"
}
}
本地安装内有两个依赖:
生产依赖:
npm install 包名 --save / 简写: npm i 包名 -S
开发依赖:
npm install 包名 新版写法
npm install 包名 --save-dev / 简写: npm i 包名 -D
生产依赖:包不仅在开发阶段要使用,在生产阶段也要使用
开发依赖:只在开发阶段使用
注意:修饰符可以在前、在后
npm i 包名 -D
npm i -D 包名
全局安装:
将包安装到计算机上(默认C盘):
npm i 包名 -g
区别:
本地安装和全局安装:
本地安装:适用于绝大多数项目开发包
全局安装:一般用于安装命令类型包
npm命令基本用法:
npm i 批量
npm view antd versions 查看所有版本信息
npm i 包名@版本号 自定义版本
npm uninstall 包名 卸载
npm rm 包名 删除............................等等