3. 模块

三、模块


1.概念

一个大的程序往往由多个离散的模块构成,像jscsslessvue图片音频字体这些不同类型的文件,都可以统一都处理为模块存在,从而webpack可以处理各种类型模块之间的依赖关系,并打包。对于不同类型的模块的处理规则统一在module字段配置即可

2.Loader

Loader可以对不同类型文件进行预编译,统一转化成模块,即 “万物皆模块”的前端工程化思想,从而可以根据ESModule或者CommonJS模块化规范引入任何类型的文件

sass-loader less-loader
SASS LESS
CSS
babel-loader
ES6/7/8/9/10
JS
ts-loader
TS
JS
file-loader url-loader
图片 MP3 MP4等资源
JS
3.配置

首先先安装用到的loader

npm i -D
style-loader
css-loader
vue-loader
module.exports={
  module:{
    rules:[ // 定义模块处理规则,即定义遇到什么类型的文件用什么loader处理为模块
      // 遇到以 .css 结尾的文件使用css-loader和style-loader处理为模块
      { 
        test:/\.css$/, 
        use: [
		  { loader:'style-loader', options:{} },
          { loader:'css-loader', options:{} }
        ]
      },
      // 对vue文件使用vue-loader处理为模块(实际上转化为js、css)
      {
        test:/\.vue$/,
        use:['vue-loader']      
      }
      // 其他类型的还有很多,后续讲到常用loader再作补充...
    ]
  },
    
  entry:'./src/index.js', 
  output:{
    path:path.resolve(__dirname,'dist'), 
    filename:'bundle.js' 
  },
}
4.演示

src/style.css

.box{
  color:red
}

src/index.js

@import './style.css' // 将css文件作为模块导入,@import 'xx'属于模块导入语句(当然了,浏览器识别不出这种语法,故需要webpack处理打包后浏览器才能识别),在打包处理时,webpack遇到这个语句,从配置文件module字段可以得知遇到 .css结尾的文件使用css-loader和style-loader处理

let box = document.createElement('div')
box.innerText = 'ONE'
document.body.appendChild(box)

现在开始打包

npm run build

可以看到dist文件夹生成了一个bundle.js文件,打开index.html可以发现页面有一个红色字体ONE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值