nodejs常用模块

一、nodejs介绍

         Node.js 是一个开源、跨平台的 JavaScript 运行时环境,它允许开发者在服务器端运行 JavaScript 代码。Node.js 基于 Chrome V8 引擎构建,它使得 JavaScript 可以脱离浏览器环境,执行在服务器上,从而可以用于构建各种类型的网络应用程序。

nodejs的特点:

  1. 事件驱动和非阻塞I/O模型:这使得 Node.js 非常适合处理大量并发连接,而不会因为 I/O 操作而阻塞线程。

  2. NPM(Node Package Manager):这是世界上最大的软件注册表,提供了大量的第三方库和工具,使得开发者可以快速构建应用程序。

  3. 跨平台:Node.js 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。

  4. 异步编程:Node.js 鼓励使用异步编程模式,这样可以提高应用程序的性能和响应能力。

  5. 单线程与多线程:虽然 Node.js 在主线程上运行 JavaScript 代码,但它使用 libuv 库来处理多线程操作,比如文件系统操作和网络请求。

nodejs官方下载地址:Node.js 中文网

npm包管理器:

安装nodejs后,会自动安装npm,然而npm比node更新得更频繁,所有可以通过npm -v查看当前版本。

npm i npm -g //更新到最新版本
npm i npm@latest -g //安装最新的官方测试版本的npm
npm i npm@next -g //要安装将来发布的版本
npm i npm@6 -g //@后跟版本号,若跟的是大版本,则更新到对应大版本最新的小版本
npm i npm@6.14.14 -g //更新到指定版本

二、nodejs使用

命名:

打开cmd终端

查看版本号node -v

cd+项目目录指令进入项目

三、nodejs模块

1.fs文件系统模块

        nodejs官方提供用来操作文件的模块

const fs=require('fs')
读取文件内容fs.readFile():
        用法: 读取 指定文件内容
        语法:fs.readFile(path[, options], callback(err, dataStr))
fs.readFile('./01.txt','utf-8',(err,data)=>{
    if(err) throw err
    console.log(data);
})
写入文件内容 fs.writeFile() :
        用法:向指定文件 写入 内容
        语法:fs.writeFile(path, data[, options], callback(err, dataStr))
        注意:只能用来创建文件,不支持创建路径;重复调用写入同一个文件,新内容覆盖旧内容。
const obj={
    name:'zs',
    age:66,
    sex:'男'
}
//将对象转换位json字符串
const data=JSON.stringify(obj,null,2)
//写入文件
fs.writeFile('./03/02.txt',data,(err)=>{
    if(err) throw err
    console.log('写入成功');
})
删除文件 fs.unlink() :
        用法: 删除 指定文件
        语法:fs.unlink(path, callback)
fs.unlink('./02.txt',(err)=>{
    if(err) throw err
    console.log('删除成功');
})
创建目录 fs.mkdir():
        用法: 创建 目录
        语法:fs.mkdir(path[, options], callback)
fs.mkdir('./03',(err)=>{
     if(err) throw err
     console.log('创建成功');
})
文件重命名 fs.rename():
        用法:文件重命名
        语法:fs.rename(oldPath, newPath, callback)
fs.rename('./1.txt','./01.txt',(err)=>{
    if(err) throw err
    console.log('文件重命名成功');
})

2.path 路径模块

        用法:Node.js 官方提供、用来 处理路径 的模块
const path=require('path')
路径拼接 path.join()
        用法:路径片段拼接完整路径
        语法:path.join([paths…])
const str1=path.join('/a','/b','../','/c')
console.log(str1); // \a\c

console.log(__dirname); //获取当前文件所在的完整目录

const str4=path.join(__dirname,'../','index.js')
console.log(str4); //D:\pro1\043-10.8-nodejs常用模块\index.js
获取文件名 path.basename()
        用法:获取文件名
        语法:path.basename(path[, ext])
const str3=path.basename('/a/b/c/d/e')
console.log(str3); // e 获取指定文件的文件名
获取所在路径 path.dirname()
        用法:获取所在路径
        语法:path.dirname(path)
const str2=path.dirname('/a/b/c/d/e')
console.log(str2); // /a/b/c/d 取的是指定文件所在的目录,最后一个被识别成文件

3.http 模块

        用法:Node.js 官方提供、用来 创建 web 服务器 的模块
        
const http = require('http')
web 服务:
后端:服务器安装了 web 服务器软件 ,使之异于普通电脑。如 IIS Apache nginx 等第三方 web服务器软件。
前端:基于 Node.js 提供的 http 模块, 通过代码手写服务器软件 ,从而对外提供 web 服务。
创建基本 web 服务:
//1.导入http模块
const http = require('http')
const fs = require('fs')
const path = require('path') 

//2.创建web服务器实例
const server = http.createServer()

//3.监听request事件
server.on('request', (req, res) => {
    console.log('请求的对象', req.url, req.method); //把请求对象转化为字符串,写入到一个文件中
    //3.1获取请求地址
    const url = req.url
    //3.2根据请求地址指向不同的操作
    let content = ''
    if (url === '/' || url === '/index.html') { //首页
        content = 'index.html'
    } else if (url === '/list') { //列表页
        content = 'list.html'

    } else if (url === '/info') { //个人中心页面
        content = 'info.html'
    } else { //404页面
        content = '404.html'
    }
    fs.readFile(path.join(__dirname, content), 'utf8', (err, data) => {
        if (err) {
            res.end('404错误')
            return
        }
        //3.3设置响应头部,指定内容类型和字符编码,为了解决浏览器渲染中文乱码的问题
        res.setHeader('Content-Type', 'text/html; charset=utf-8')
        //3.4向前端返回指定数据,接收请求
        res.end(data)
    })
    // console.log('响应的对象', res); //把响应对象转化为字符串,写入到一个文件中
})

//4.启动web服务
server.listen(3000, () => {
    console.log('服务启动');
})

4.Node模块化

概念:遵守固定规则,将大文件拆成独立且相互依赖的多个小模块。

优点:

1.提高代码复用性
2.提升代码可维护性
3.实现按需加载
module.exports 对象
        用于自定义模块中对外共享模块内成员,外界用 require() 导入自定义模块时,
得到的就是 module.exports 指定对象。
//module-a.js
let title='你好,世界'
let age=22

exports='hello'

//向外暴露指定的模块变量
module.exports={
    title,
    age
}
//module.js
const obj=require('./module-a')
console.log(obj);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值