• node---模块


    模块化

    模块的分类

    node中的模块分为三种

    • 内置模块
    • 自定义模块
    • 第三方模块

    内置模块主要有

    • path路径模块
    • http网络模块
    • fs文件模块
    • os操作系统模块

    这些模块内封装了一些属性和函数,用到的时候可以查一下
    node基础教程

    模块加载机制

    整体机制

    JS的模块在导入时会执行模块内的代码

    • 加载内置模块和第三方模块只需要写模块名字
    • 加载自定义模块要写路径(可以不写后缀名)
    • 模块优先从缓存中加载
    • 内置模块加载优先级最高

    自定义模块查找顺序

    自定义模块必须以./ 或者 …/开头
    自定义模块如果省略的文件的扩展名,则会按照下面的顺序来查找

    1. 无扩展名
    2. 补全js
    3. 补全json
    4. 补全node
    5. 报错

    第三方模块加载机制

    会先在文件所在的目录查找
    如果找不到就去上一级目录中查找
    直到找到或者查找到磁盘的根目录依然找不到报错

    将目录作为模块

    1. 查找这个目录下的package.json中记录的入口

    2. 如果main记录的入口不存在则会记载index.js

    3. 如果依然失败则报错

    CommonJS

    作用域

    在node中会默认使用模块化
    模块作用域的变量和函数只能在当前模块中使用

    规范

    • 每个模块内有一个module对象代表当前模块
    • module对象上有一个exports属性,导入的永远是这个属性的内容
    • 使用require方法来加载模块

    exports对象

    • module中有一个exports属性,这个属性中的内容会被暴露出去,require导入的就是exports暴露的内容

    • 为了方便导出,node也提供了exports对象,默认和module的exports属性指向相同。

    • 但如果直接给exports属性赋值,则会修改exports对象的指向,导致对象失效,无法正常导出。

    npm

    什么是npm

    npm 是node的一个包管理工具,内置了许多指令来管理包。

    • npm i <包名> 可以安装包,在安装时可以使用@来指定版本
    • npm -v 查看npm的版本
    • npm init -y 用来初始化项目,创建package.json
    • npm i 可以安装package.json中的所有依赖包
    • npm uninstall 可以卸载掉已经安装的包

    下载的包存放咋node_modules文件夹下
    package_lock.json 记录了安装的包的信息,不要修改这个文件的信息

    nrm

    nrm是npm的一个小工具,可以安装nrm开获取更多指令

    npm i nrm -g
    
    • 1

    这个工具可以获得快速查看和切换下包的源

    • 查看所有的源:nrm ls
    • 切换为淘宝镜像:nrm use taobao

    包管理文件

    一般项目中都会有一个package.json的文件,用来记录项目中需要用到哪些包。

    包的规范

    • 包必须以单独的目录存在

    • 包的根目录必须包含package.json文件

    • package.json中必须包含nameversionmain 字段

    包的分类

    1. 全卷包
      在安装时提供 -g 参数的包会被变为全局包
      这些包被安装在c盘的默认路径中
      一般只有可以提供指令的工具类包才会全局安装
    2. 项目包
      安装在项目的node_modules中的包
      在安装项目包时加上-D会被视为开发时依赖,被记录在package.json的Devdependencies属性下
      其余的包会被视作运行时依赖,被记录在dependencies属性下
  • 相关阅读:
    贝叶斯网络预测相关问题
    Flutter | 验证码的倒计时进入后台停止了怎么办?
    32、多租户(multi-tenancy)
    软考 -- 计算机学习(3)
    ssm基于java的线上阅读平台的设计与实现毕业设计源码291023
    【密码加密原则二】
    Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限
    二维码智慧门牌管理系统升级解决方案:采集项目的建立与运用
    开始编写属于你的第一个Typescript的程序吧~
    gcc选项记录
  • 原文地址:https://blog.csdn.net/m0_66711291/article/details/126562484