[js高手之路]深入淺出webpack教程系列7-( babel-loader,css-loader,style-loader)的用法


[js高手之路]深入淺出webpack教程系列索引目錄:

什么是loader呢,官方解釋為文件的預處理器,通俗點說webpack在處理靜態資源的時候,需要加載各種loader,比如,html文件,要用html-loader, css文件要用css-loader,style-loader等等.

官方參考文檔:https://webpack.js.org/loaders/

我們從本文開始,重新搭建一個項目結構來解釋下loader的用法.

一、項目結構搭建准備:

目錄結構:

 1 demo3
 2     dist
 3     src
 4         components
 5             modal.html
 6             modal.js
 7             modal.less
 8         main.js
 9     index.html
10     package.json
11     webpack.config.js

需要安裝的插件等:

1,npm init --yes( 初始化項目的package.json )

2,npm install webpack@3.5.6 -g ( 全局安裝webapck )

3,npm install webpack@3.5.6 --save-dev (局部安裝webpack )

4,npm install html-webpack-plugin --save-dev ( 安裝html-webpack-plugin插件 )

相關的文件代碼:

webpack.config.js代碼

 1 var htmlWebpackPlugin = require('html-webpack-plugin');
 2 module.exports = {
 3     entry : './src/main.js',
 4     output : {
 5         path : __dirname + '/dist',
 6         filename : 'js/[name].bundle.js',
 7     },
 8     plugins : [
 9         new htmlWebpackPlugin({
10             filename : 'index.html',
11             template : 'index.html',
12             inject : true
13         })
14     ]
15 }

main.js文件代碼:

1 import modal from './components/modal.js';
2 let App = function(){
3     console.log( '項目入口文件main.js' );
4 }
5 new App();

modal.html文件代碼:

1 <div class="modal">
2     <div class="modal-heading">模態框頭部 - by ghostwu</div>
3     <div class="modal-body">模態框內容部分 - by ghostwu</div>
4 </div>

modal.js文件代碼:

2 let modal = function(){
3     return {
4         'component-name' : 'modal'
5     }
6 }
7 export default modal;

modal.less文件代碼:

 1 @c1 : #09f;
 2 @c2 : #666;
 3 .modal {
 4     padding:20px;
 5     div {
 6         margin: 10px;
 7     }
 8 }
 9 .modal-heading {
10     background:@c1;
11 }
12 .modal-body {
13     background:@c2;
14 }

寫完上面的結構和代碼之后,我們開始執行webpack打包命令,然后安裝babel-loader,把es6轉成es5

官方參考文檔:https://webpack.js.org/loaders/babel-loader/

安裝:  npm install --save-dev babel-loader babel-core babel-preset-env webpack

配置webpack.config.js文件

 

 1 var htmlWebpackPlugin = require('html-webpack-plugin');
 2 let path = require('path');
 3 module.exports = {
 4     entry: './src/main.js',
 5     output: {
 6         path: __dirname + '/dist',
 7         filename: 'js/[name].bundle.js',
 8     },
 9     plugins: [
10         new htmlWebpackPlugin({
11             filename: 'index.html',
12             template: 'index.html',
13             inject: true
14         })
15     ],
16     module: {
17         rules: [
18             {
19                 test: /\.js$/,
20                 exclude: /(node_modules)/,
21                 include: [
22                     path.resolve(__dirname, "src"),
23                 ],
24                 use: {
25                     loader: 'babel-loader',
26                     options: {
27                         presets: ['env']
28                     }
29                 }
30             }
31         ]
32     }
33 }

 解釋下新增加的配置:

rules就是配置規則,他是一個數組,每一項為一個對象,如果有多個loader,那就用多個對象, test: /\.js$/ 就是以.js結尾的文件, exclude:排除node_modules這個目錄,意思就是不要去這個目錄下處理.js的文件,有什么好處呢?大大提高打包的速度. include里面的配置意思就是把src目錄下面的js文件作為處理的目標,use配置就是使用babel-loader

二、使用css

 1,在src目錄下新建一個css目錄,在該目錄下面新建一個css文件: style.css,代碼如下:

 1 html,body{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 body {
 6     background: #08f;
 7 }
 8 ul,li {
 9     list-style-type:none;
10 }
11 div {
12     transition: all ease 1s;
13 }

然后在main.js中導入css文件

1 import modal from './components/modal.js';
2 import './css/style.css';
3 let App = function(){
4     console.log( '項目入口文件main.js' );
5 }
6 new App();

執行webpack打包命令,會報錯,提示需要一個loader,我們安裝css-loader和style-loader

安裝命令: npm install css-loader style-loader --save-dev

官方參考文檔:https://webpack.js.org/loaders/css-loader/

然后配置webpack.config.js:

 1 var htmlWebpackPlugin = require('html-webpack-plugin');
 2 let path = require('path');
 3 module.exports = {
 4     entry: './src/main.js',
 5     output: {
 6         path: __dirname + '/dist',
 7         filename: 'js/[name].bundle.js',
 8     },
 9     plugins: [
10         new htmlWebpackPlugin({
11             filename: 'index.html',
12             template: 'index.html',
13             inject: true
14         })
15     ],
16     module: {
17         rules: [
18             {
19                 test: /\.js$/,
20                 exclude: /(node_modules)/,
21                 include: [
22                     path.resolve(__dirname, "src"),
23                 ],
24                 use: {
25                     loader: 'babel-loader',
26                     options: {
27                         presets: ['env']
28                     }
29                 }
30             },
31             {
32                 test: /\.css$/,
33                 exclude: /(node_modules)/,
34                 use: [
35                     'style-loader',
36                     'css-loader'
37                 ]
38             }
39         ]
40     }
41 }

執行webpack打包, 你就能看到css被內嵌到文檔中了, css-loader是處理css文件,style-loader是把css內嵌到瀏覽器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM