path
path模块提供了,提供了处理文件和目录的路径, path在node做服务端免不了要处理文件需要用到 path在打包和输出文件也需要用到
basename
basename 返回字符串,返回的是输入路径的最后的文件名 basename接收一个参数,文件的路径
const {basename}=require('name');
console.log(basename('./index.js'));
//basename不会管文件存不存在,都会返回最后的文件名
dirname
返回输入路径的目录名
const {dirname}=reuqire('path');
console.log(dirname('./index/txt.js'));
//打印结果
// ./index
extname
返回输入路径的文件后缀,如果输入的是目录路径则返回目录名称
const {extname} =reuqire('path');
console.log(extname('/index/index.js'));
//打印结果 .js
console.log(extname('/index'))
//打印结果 index
format
将输入的路径,拼接为字符串
const {format} =require('path');
console.log(format({
root:'/', //未指定dir则使用root
base:'index',//未指定base则使用name+ext
ext:'.js', //文件后缀
dir:'/home',//文件路径
name:'index'//文件名称
}))
isAbsolute
判断路径是否是绝对路径 只有带盘符才会被该方法认为是绝对路径
const {isAbsolute} =require('path');
console.log(isAbsolute('D:/learnANDstudy/Nodejs/path/index')); // true
console.log(isAbsolute('./index/index.js')); //false
join
拼接字符串为路径
const {join} =require('path');
console.log(join('D:/','nodejs','index'));
//打印结果
// D:/nodejs/index
//我们通常这样使用join,在打包的时候设定输出目录
join(__dirname,'dist')
normalize
解析 . 或者 ..这样的路径符号
const {normalize}=require('path');
console.log(normalize('./index/../'));
//这个路径表示,当前目录下的index的上一层目录下,也就是当前目录
// 打印结果
// ./
parse
解析路径
const {parse} =require('path');
console.log(join('./index/txt.js'))
//打印结果
//{ root: '', dir: './index', base: 'txt.js', ext: '.js', name: 'txt' }
os
os提供了当前操作系统的方法和属性,os应用于node做服务端,处理cpu负载均衡常用
arch
操作系统编译nodejs的cpu架构,windows一般是x64编译
const os=require('os');
console.log(ops.arch);
//打印结果
//x64编译
cpus()
返回当前设备的cpu内核信息
const cpus=require('os').cpus();
console.log(cpus);
freemem()
返回空闲的内存数量,以字节为单位
const fremem=require('os').freemem();
console.log(freemem);
homedir()
返回当前设备,主用户的路径 windows就是C:/users/Administrator linux是 /root/
const homedir=require('os').homedir();
console.log(homedit)
hostname()
返回操作系统的主机名
const hostname=require('os').hostname();
console.log(hostname);
platform
返回当前的操作系统
const platdorm=require('os').platform()
console.log(platform)
release
返回操作系统的版本比如:win10,win7,win11
const release=reuire('os').release();
console.log(release); // 10
url
nodejs提供给我们url模块用于解析和处理url
解析url的作用
1. node做服务端时因为http监听到request事件,但是用户不可能只有一个请求,不同的请求就要请求不同的url,返回不同的数据,我们可以根据url模块去解析用户请求返回数据。
2. 传统的服务端渲染是,服务端将页面和数据拼接好之后返回给客户端页面,通过url模块解析不同的url返回不同的页面
引发思考的问题
先看一下前端渲染页面的历史发展,1.传统的服务端渲染后端拼接好数据后返回页面,但是这种的缺点就是出现bug前后端问题混淆不清,2.通过ajax分离,前端通过ajax请求数据,但是每切换一个页面都要向服务端请求,用户体验不好。3,有了spa单页面,前端开发完成打包后只有一个html和js文件,但是用户的首屏优化不好,而且spa单页面不容易被seo抓取,所以还是要用到服务端渲染,但是如何避免传统服务渲染的缺点,就是在sp单页面的基础上做服务端渲染就有了同构渲染(srr)。
同构渲染(ssr)的流程就是客户端向node服务端发起请求,node服务端接收到请求后解析url找到对应的组件(这就可能用到了url模块和path模块),node通过http(http模块)向服务端发起请求获取数据,将数据注入到组件然后将组件转化为html返回给客户端,此时就解决了spa页面首屏白屏和seo优化的问题
URL类
hash
获取url的hash值
const url=require('url').URL
const myurl=new url('https://example.org/foo#bar');
console.log(myurl.hash);//$bar
host hostname
获取路径的域名
const myurl=new url('https://example.org:8080/foo#bar');
console.log(myurl.host);//example.org:8080
consoel.log(myurl.hostname);//example.org
//host 获取到的是带端口号的
// hostname 获取的是不带端口号的
port href
port用于获取端口号,href用于获取完整的url
const myurl=new url('https://example.org:8080/foo#bar');
console.log(myurl.port);//8080
consoel.log(myurl.href);//https://example.org:8080/foo#bar
protocol
获取和设置url的协议
const myurl=new url('https://example.org:8080/foo#bar');
console.log(myurl.protocol);//https
myurl.protocol='http';
console.log(myurl.protocol); //http
search
获取和设置url的?后的内容
const myurl=new url('https://example.org:8080/foo?name=admin');
console.log(myurl.search); //name=admin
myurl.search='name=user';
console.log(myurl.search); // name=user
URLSearchParams
SearchParams的Api提供对url的?后内容进行的增删改查,也可以通过实例化URLSearchParams进行使用
SearchParams的使用
const myurl=new url('https://example.org:8080/foo?name=admin');
// 查
console.log(myurl.searchParams.get('name')); // admin
//增
myurl.searchParams.append('pwd','000');
//删
myurl.searchParams.delete('pwd');
//改