美文网首页
Webpack 5(二)模块依赖

Webpack 5(二)模块依赖

作者: _于曼丽_ | 来源:发表于2023-10-17 09:03 被阅读0次

模块

一个文件就是一个模块,模块可以是任何类型的文件,原生支持 js 和 json 文件,其他类型的文件需要使用对应的 loader 转换成 js 文件。

模块的依赖关系

模块之间存在依赖关系,通过以下方式来表明依赖关系,根据依赖关系绘制依赖图。

js 文件中:

  • import
  • require
  • import()

css 文件中:

  • @import
  • url()

html 文件中:

  • <img src="">

模块的路径解析

模块的路径有三种表达方式:

  • 绝对路径:不要使用
  • 相对路径:在代码中引入自定义的模块(js 模块、css、img 等资源等),相对当前代码所在的文件路径
  • 模块路径:在代码中引入第三方模块

当使用模块路径的时候,优先使用 resolve.alias 设置的模块别名的路径来解析模块,如果没有对应的模块别名,再根据模块解析的步骤来解析模块路径。

import 'module/lib/file' 模块路径解析步骤:

  1. 首先在当前文件所在目录下的 ./node_modules/ 查找,找不到再到上一级目
    ../node_modules/,一直到顶层 /node_modules/ 目录中
  2. 将 file 当做文件,在对应的 node_moudles 目录中查找 module/lib/file.js
  3. 将 file 当做目录,在对应的 node_moudles 目录中查找 module/lib/file/package.json,根据 package.json 中的 main 字段找到对应的模块文件
  4. 将 file 当做目录,在对应的 node_moudles 目录中查找 module/lib/file/index.js 文件
// 第三方模块使用模块路径
import _ from 'lodash'
// 自己的模块使用相对路径
import sum from './vendor/sum.js'
import './css/style.css'
import Icon from './images/icon.png'
// js 文件可以省略扩展名,推荐不要省略
import sum from './vendor/sum'

// 动态引入模块可以使用相对路径、绝对路径和模块路径
import('./vendor/sum.js')
import('lodash')

通过 css-loader 可以将 css 文件中的 url() 理解为模块依赖,引入图片等资源,推荐使用相对路径

.hello {
  background: url('../images/icon.png') no-repeat;
}

通过 html-loader 可以将 html 文件中的 img src="" 理解为模块依赖,引入图片等资源,推荐使用相对路径

<img src="./images/icon.png">

entry 的路径解析

entry 可以是绝对路径、相对路径,也可以是模块路径,相对路径相对于 context 选项(该选项默认值为配置文件所在的目录),模块路径采用模块解析规则。

module.exports = {
  // context 必须是绝对路径
  context: path.resolve(__dirname),
  entry: {
   // 相对路径,相对 context 选项
   index: './src/index.js',
   // 模块路径,根据模块的解析规则来解析
   vendor: 'lodash'
  }
};

loader 的路径解析

loader 可以是绝对路径、相对路径,也可以是模块路径,相对路径相对于 context 选项(该选项默认值为配置文件所在的目录),模块路径采用模块解析规则。

module: {
  rules: [
    test: /\.css$/,
    // 推荐使用模块路径
    use: ['style-loader', 'css-loader']              
  ]
}

相关文章

  • webpack-5大特点

    webpack5大特点 代码拆分(支持异步模块加载) Webpack 有两种组织模块依赖的方式,同步(默认)和异步...

  • webpack的优势

    webpack5大特点 代码拆分(支持异步模块加载) Webpack 有两种组织模块依赖的方式,同步(默认)和异步...

  • webpack中loader和plugin的区别

    一、webpack的常见配置 二、webpack的打包原理 识别入口文件 通过逐层识别模块依赖(Commonjs、...

  • Webpack4-其他概念

    模块 什么是 webpack 模块 对比 Node.js 模块,webpack 模块能够以各种方式表达它们的依赖关...

  • webpack学习笔记

    什么是webpack? webpack是一个模块管理工具,用webpack可以管理模块依赖,并编译模块所需的静态文...

  • 使用webpack手动构建react项目

    安装开发依赖包和相关依赖包 webpack: 模块打包工具.webpack-cli : webpack脚手架web...

  • WEBPACK 入门

    1. 什么是webpack 官网介绍:webpack是一个模块打包器。webpack 处理带有依赖关系的模块,生成...

  • webpack4.0 resolve的使用

    webpack在启动后会从配置的入口模块触发找出所有依赖的模块,Resolve配置webpack如何寻找模块对应的...

  • vue依赖文件的安装

    webpack作用模块打包工具,并可以自动处理各个模块之间的依赖 webpack安装命令 npm install ...

  • Webpack入门教程一

    Webpack介绍 webpack是一款前端模块化打包工具,通过webpack能够方便地对项目所依赖的模块、资源(...

网友评论

      本文标题:Webpack 5(二)模块依赖

      本文链接:https://www.haomeiwen.com/subject/aymxidtx.html