node——总结

本文介绍了模块化的概念,包括其在Node.js中的应用,自定义模块、内置模块和第三方模块的区别,以及如何在ES6中使用模块。还详细讲解了path和fs模块的用法,以及宏任务与微任务的异同和事件循环的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是模块化

模块化:一个大文件拆分成若干的小文件,能通过特定语法组合到一起实现的过程

  1. 优点

a.利于维护

b.更好的复用性

node中,规定每个js文件都是一个小模块

模块的分类

自定义模块

       nodejs中,创建的js文件都是自定义模块

内置模块

      安装node之后,自带很多内置模块,可以直接加载使用

第三方模块

      其他人编写的模块,发布到npm上,可以下载使用

自定义模块

概述

      每个创建的js文件都是自定义模块,并具有模块作用域,也就是当前模块创建的变量,函数等等只能在当前模块中使用

 使用

     导出:module.exports 导出内容

                module 是 node中的一个全局对象,对象包含当前模板的详细信息

                module.exports 是模块的出口,就是导出内容用的,默认值是{}

     导入:如果要使用导出的内容,使用require()加载

               let 值 = require('模块路径')

     导出什么就得到什么

内置模块

内置模块是node.js自带的一套基本的api,也叫做核心模块

path模块

      path是node本身提供的api,专门用来处理路径

      使用:加载模块 let path = require('path')

      方法:获取文件的后缀名 path.extname('.a/b.js') //js

                文件名拼接 path.join('a','b','c')  a/b/c

                获取路径名 path.dirname('.a/b.htm') .a

                获取绝对路径 __dirname  //当前文件的绝对路径

// 接收传递的数据
// let {num,name,fn} = require('./01-test')
// console.log(num,name,fn);

// path 是 Node 本身提供的 API,专门用来处理路径。
const path = require('path')
// console.log(path);

const url='.ab/name.wxml'
// 获取文件的后缀名
console.log(path.extname(url));

const a='abc'
const b='dsd'
// 文件名拼接,可以智能拼接路径
console.log(path.join(a,b,'c'));
console.log(path.join('a','b','../c'));

//  dirname 获得目录名
console.log(path.dirname(url));
//__diname 获得绝对路径
console.log(__dirname); 
console.log(path.join(__dirname,'user.js'));

fs模块

可以实现对文件,文件夹的操作

使用:加载模块 const fs = require('fs')

方法:读取文件 fs.readFile('文件路径',编码格式',(报错返回,数据返回)=>{}')

           异步写入文件 writeFile('路径名','需要写入的内容',回调函数//返回报错)

let fs=require('fs')

//readFile 读取文件
fs.readFile('02.js','utf8',(err,data)=>{
    if(err){console.log(err); return } //err是报错信息,当报错时打印报错信息,并退出
    console.log(data);
})

//异步写入文件
fs.writeFile('02.js','let shi="hhhh"',(err)=>{
    if(err){console.log(err);}
})

ES6模块

用法:在package.json的根节点添加 “type”:“module”

语法:默认导出和导入

                  默认导出:export default 默认导出的数据

                  默认导入:import 接收名称 from '模块路径'

           注意事项:每个模块中,只允许使用一次

          按需导入和按需导出

                   按需导出:export const s1=10

                   按需导入:import{按需导入的名称} from '路径名'

         注意事项:按需导入的名称和按需导出的名称要一致,

                          按需导入时,可以使用as关键进行重命名,

                          按需导入可以和默认导入一起使用

           直接导入(无导出)

                    执行导入模块的代码 import  路径名

//默认导入
import a from './03.es6-export.js'
console.log(a); //obj

// 按需导入 {导入值 as 别名}
import { dd as ss  } from './03.es6-export.js';
console.log(ss); //dd
//直接导入 会执行导出的语法
// import './03.es6-export.js'

宏任务与微任务

 javeScript 是单线程的,同一时间只能执行一个任务

任务分为同步任务和异步任务

      同步任务:不需要等待可立即查看执行结果

      异步任务:异步任务需要等待一定的时候才能看到结果,比如setTimout,网络请求

 事件循环

     简介:是一个“JavaScript 引擎等待任务” “执行任务”和“进入休眠状态等待更多任务”这几个状态之间装换的无限循环

    引擎的一般算法:1.当有任务时:从最先进入的任务开始执行

                               2.没有任务时,休眠直到有任务,然后执行第一步

 任务队列

判断同步异步--->同步----立即执行同步代码---->结束完毕

                           |                           进   --------------------------- --- |

                           |                           入 

                           |                            |

                            --->异步---->任务栈---->判断微任务还是宏任务---->微任务---->微任务完成----->

      

<script>
      // 异步代码 宏任务
      setTimeout(function () {
        console.log(2);
      }, 0);


      // promise 是异步的
      const p1=  new Promise(function (resolve,reject) {
         resolve(10)
      })

      p1.then(function (data) {
        console.log(data);
      })

      // 同步代码
      console.log(1);

      // 1 10 2

      // script 宏任务-里面的代码执行完  同步先执行

    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值