**
Node.js
**是一个开源的、跨平台的、基于Chrome V8引擎的JavaScript运行环境。它可以让开发者使用JavaScript编写服务器端应用程序。Node.js的一些主要特点和优势如下:
-
非阻塞I/O和事件驱动:Node.js使用事件驱动和异步I/O模型来处理并发连接,从而提高了应用程序的性能和可扩展性。
-
单线程:Node.js使用单线程,但可以通过事件循环和多个工作线程(如child_process或worker_threads模块)来实现并发。
-
跨平台:Node.js可在各种操作系统(如Windows、macOS和Linux)上运行,使开发者能够轻松地将应用程序部署在不同的环境中。
-
丰富的模块生态系统:Node.js拥有一个庞大的开源社区,提供了大量的第三方模块,称为npm(Node Package Manager),使得开发者可以轻松重用和共享代码。
-
RESTful API开发:Node.js非常适合开发RESTful API,因为它具有很高的性能和灵活性。
-
实时Web应用:Node.js可用于构建实时Web应用程序,如聊天应用、在线游戏和实时数据分析等。
-
快速开发:由于Node.js基于JavaScript,开发者可以使用相同的语言进行前端和后端开发,从而提高开发速度和效率。
-
高性能:由于Node.js采用了V8引擎,它可以提供高性能的运行环境。
**
1.CMD 常用命令总结
**
切换磁盘:d:(进入 d 盘)
切换磁盘和目录:cd /d d:/test(进入 d 盘 test 文件夹)
进入文件夹:cd \test1\test2(进入 test2 文件夹)
返回根目录:cd \
回到上级目录:cd ..
新建文件夹:md test
显示目录中文件列表:dir
显示目录结构:tree d:\test(d 盘 test 目录)
显示当前目录位置:cd
显示指定磁盘的当前目录位置:cd d:
2.顶层对象
在浏览器 JavaScript 中,通常 window是顶层对象,而 Node.js 中的顶层对象是 global
globalThis
代码示例:
// console.log(this);//{}
// console.log(global);
// console.log(globalThis);//顶级对象
3.全局变量
Node平台内置了例如:__filename
和 __dirname
等全局变量 setInterval() setTimeout()等方法
代码示例:
//绝对路径
console.log(__dirname);//E:\郑州20230816\day07\code
console.log(__filename);//E:\郑州20230816\day07\code\1.全局变量.js
.4.模块的分类
在Node中,模块分为两类:一类是Node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块(自定义模块、第三方模块)。
4.1 内置模块/核心模块
例如:url querystring fs …
代码示例:
//内置模块 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";
//协议
//主机名
//端口
//路径
//参数
// const url=require("url");
// // console.log(url);
// let newUrl=url.parse(myUrl)
// // console.log(newUrl);
// let {host,port,protocol,query,pathname} =newUrl;
// console.log(protocol);//协议
// console.log(pathname);
// console.log(port);
// console.log(host);
// console.log(query);
// let mmUrl=new URL(myUrl)
// console.log(mmUrl);
const qs=require('querystring');
// console.log(qs);
let str="username=jack&pwd=2342";// --> 对象格式
let rst=qs.parse(str)
// console.log(rst);
let queryObj={
id:1,
username:"admin",
pwd:1123234
}
let ss=qs.stringify(queryObj)
console.log(ss);
4.2 文件模块
文件模块常见的有:自定义模块、第三方模块
自定义模块:
代码示例:
let fn = function () {
console.log('hello world');
}
let fnx = function () {
console.log('running........');
}
let arr = ['hello', 'yes', 'hi'];
let obj = {
no: "1002",
title: "鞋子",
price: 119
}
//批量导出
module.exports = {
fn: fn, fnx, arr, obj
}
ES6的模块化 (ESM)
使用export和import
- 单个导出
- export.名称=值
- 批量导出
- export { 值,…}
- 默认导出
- export default {}
示例:
import {age} from "./person.js"
export let fn=function(){
console.log('hello world');
}
let fx=function(){
console.log('this...');
}
let obj={
id:111,
msg:"ok"
}
export {
fx,obj
}
let obj={
id:111,
name:"李强",
age:18
}
//1.单个导出
export let age=20;
export let name="狗蛋"
export let addr="门口狗窝"
//默认导出
// export default {
// id: 1,
// msg: 'ok',
// fn: function () {
// console.log('哈哈哈');
// },
// fnx() {
// console.log("hello world");
// }
// }
let a = 10;
let b = 'hello world';
let fn = function () {
console.log('run.........');
}
let arr = [10, 20, 304, 890]
export default {
ax: a,
b: b,
fn: fn,
arr: arr
}
// export default {
// a,b,fn,arr
// }
//注意:一个模块只能有一个默认导出
// export default {
// name:"李四"
// }
// console.log(obj);//不能直接访问其它模块的内容
//导入其它模块的内容
//1.导入单个导出
import { age } from "./person.js";
// import {age} from "./person";//error 需要完整的后缀
//2.导入批量导出的内容
import { m1 as mm, m2 } from "./strudent.js"
//3.
import {fn,fx,obj} from "./emplyee.js";
//4.导入默认导出的模块
import xx from "./man.js"
// console.log(age);
// console.log(obj);//error person.js没有导出obj
// console.log(m1);
// console.log(m2);
// fn()
// fx();
// console.log(obj);
console.log(mm);
// console.log(m1);//已改名,不可以使用
// console.log(xx);
// console.log(xx.id);
// console.log(xx.msg);
// xx.fn()
//入口文件
CommonJS的模块化 (CJS)
使用exports、module.exports 和require
示例:
// let name='张三';
// let age=20;
// let addr="中州大道";
//单个导出
exports.name = '张三';
exports.age = 20;
exports.addr = "中州大道";
let arr=[10,100,300];
let fn = function () {
console.log('hello world');
}
let fnx = function () {
console.log('running........');
}
let arr = ['hello', 'yes', 'hi'];
let obj = {
no: "1002",
title: "鞋子",
price: 119
}
//批量导出
module.exports = {
fn: fn, fnx, arr, obj
}
//入口文件
//导入
// const xx=require("./user.js");// { name: '张三', age: 20, addr: '中州大道' }
// console.log(xx);
// const { age, addr } = require("./user.js");
// const { age, addr ,arr} = require("./user");//可以省略后缀
// // console.log(age, addr);
// console.log(arr);//undefined
// const rst=require("./student");
// console.log(rst);
// console.log(rst.xx.arr);
// let rst=require("./room")
// console.log(rst);
// let {obj,arr} =require("./room");
// console.log(obj,arr);
const xx=require("./classroom");
console.log(xx);