Webpack常用模块加载器Loader

css-loader 和 style-loader

css-loader解析相应的css文件中@importurl()函数的依赖关系, 将依赖进行require, 这些依赖依然被相应的模块加载器处理后, 再由file-loader处理, 最后将资源的dist路径返回给css-loader进行替换.
style-loader将css-loader处理过的css内容使用JavaScript代码注射进HTML文档, 这样做是比较方便, 但是遇到数量比较多的css内容时, 通常需要使用插件将所有的css解构出来合并为一个单独的css文件.

css-loader还实现了CSS Modules模块化CSS, 配合React等框架, 实现模块化组件开发.

常用模块规则:

{ test: /\.css$/, use: ['style-loader', 'css-loader?modules'] }, // 处理顺序是反向的

file-loader

file-loadre将文件复制到dist目录下, 导出相对于上下文context的相对路径.
常用模块规则:

{ test: /\.(html|png|jpg|ico)$/, use: 'file-loader?context=src&name=[path][name].[ext]' },

raw-loader

有时我们需要将字符串放到一个单独的文件中, 并在需要时将文件文本内容作为字符串导入.
这在异步导入时也很有用.

// 异步加载当前文件的文本内容
import('!raw-loader!.').then(({ default: text }) => { // 当前文件使用ES6模块规范, 需要获取默认导出
      this.setState({ code: text });
});

babel-loader

babel-loader是React开发必备的加载器, 因为React通常会使用JSX在js文件中编写组件, 而Babel提供了JSX编译功能, 需要使用babel-loader将js文件交给Babel编译后再导入.
安装Babel及其加载器:

npm i -S @babel/core @babel/preset-env @babel/preset-react babel-loader

常用模块规则:

{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=@babel/env&presets[]=@babel/react' },
posted @ 2020-09-18 15:12  develon  阅读(218)  评论(0编辑  收藏  举报