Title

一:为什么使用webpack

1. 代码转换、文件优化、代码分割、模块合并、自动刷新、等等

 

2. webpack上手

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     <!-- 
     模块化:


      -->
      <script src="../dist/main.js"></script>
</body>
</html>

使用:

1安装webpack

 npm install webpack webpack-cli -g

##### 2webpack初体验

在创建项目的使用,我们回顾一下我们写vue和react项目,是不是都有一个模块化的思想,将一个方法,一个组件单独文件中进行处理,在引入到我们想要的文件中。

案例目录:webpack1

问题:在文件的浏览器中不用使用这些模块化

解决方法:使用webpack进行打包处理

在终端执行 webpack  =>生成 dist目录

 

代码:webpack2

3webpack的配置

   (1) 在项目目录中创建一个webpack.config.js文件

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'), //不是绝对路径
    filename: 'index.js',
  },
};

(2) 我们要向和vue,react,通过命令产生打包文件

   "build":"webpack"

4:webpack主文件(依赖图)

就是这个src/index.js 文件

这个文件就是vue.中的main.js文件,这个里面引入的所有代码都会被执行

5:处理loader

//1webpack为什么需要loader
//就是webpack处理的文件,不是js,文件类型,都需要loader来进行处理
//2loader是什么?
//就是用来辅助webpack,解析不是js文件的方法

案例一:处理css-loader

//1 创建元素

//例子登录
function Login(){
    //创建元素
    let oH = document.createElement('h2')
    oH.innerHTML = '你好同学' //添加内容
    oH.className ='title'

    return oH
}
//放到body上面去
document.body.appendChild(Login())

2创建css样式

// 引入我们的css
import '../css/login.css' //报错因为webpack不能处理 css为文件

//例子登录
function Login(){
    //创建元素
    let oH = document.createElement('h2')
    oH.innerHTML = '你好同学' //添加内容
    oH.className ='title'

    return oH
}
//放到body上面去
document.body.appendChild(Login())

解决方法

1 安装css-loader

npm install css-loader

2 配置webpack解析的文件

 module: {
    rules: [
      { test: /\.css$/, use: 'css-loader' }
     
    ],
  },

发现页面样式没有效果,就是我们刚刚的配置,让webpack,可以解析css文件,但是没有使用

在安装一个loader =》style -loader

  module: {
    rules: [
      // { test: /\.css$/, use: 'css-loader' } //单个
      //注意又有一个问题: use执行的顺序  从右向做
      { test: /\.css$/, use:[ 'style-loader','css-loader'] }
     
    ],
  },

案例处理less文件 

import '../css/login.less'
 //创建了一个标签
function ohs(){
  let oh = document.createElement('h2')
 oh.innerHTML ='你好'
  oh.className ='title'
  return oh
}
//webpack 只能处理.js 文件 =》其他的文件不能处理

// 提供的loader?这个loader是什么?loader作用?

//就是一个webpack中用来解析成webpack认识的文件
//例子=》css
//安装 css-loader
//配置

document.body.appendChild(ohs())

需要安装less-loader ,webpack才能解析这个文件

  module: {
    rules: [
      // { test: /\.css$/, use: 'css-loader' } //单个
      //注意又有一个问题: use执行的顺序  从右向做
      { test: /\.css$/, use:[ 'style-loader','css-loader'] },
      //注意这里的解析方式
      // less=>css =>在通过style-loader使用样式
      { test: /\.less$/, use:[ 'style-loader','css-loader','less-loader'] }
    ],
  },

6:webpack中babel的使用

作用:就是将es6的语法变成 es5的语法

案例 将es6箭头函数变成es5的语法

var title= '小明'
 const show =()=>{
   console.log(title);
 }

 show()

1安装babel

npm install --save-dev @babel/core @babel/cli
npm install babel-loader
npm install @babel/plugin-transform-arrow-functions

2配置规则 

    // 处理js文件
    mode:'development',
      {
        test: /\.js$/,
        // 需要使用babel提供的几个插件
        // use:[ 'babel-loader'] 
        use: {
          loader: "babel-loader",
          options: { //选项
            plugins: [
              '@babel/plugin-transform-arrow-functions'

            ]
          }

        }
      }

7:webpack中plugins的使用(插件的使用)

我们的这个模板是需要自己写的,=》index.html,

我们通过使用插件自动创建模板

1安装插件

npm install html-webpack-plugin

2webpack配置插件

  //配置插件=>在modult.exports上添加一个属性   plugins
let HtmlWebpackPlugin = require('html-webpack-plugin') //
  plugins:[ //数组可以放多个
    new HtmlWebpackPlugin()
  ]

8:webpack加载vue文件

1 安装相关依赖

npm install vue-template-compiler
npm install vue@2.6.14
npm install vue-loader@15.9.8

2 创建根组件

<template>
     <div class="title">
         <h2>{{msg}}</h2>
     </div>
</template>

<script>
export default {
    data(){
        return{
            msg:'你好同学'
        }
    }
}
</script>

<style scoped lang='less'>
   .title{
       color:red;
   }
</style>

3在index.js中创建vue实例

//main.js入口主文件

import Vue from 'vue'
import App from './App.vue'

new Vue({
    render:h=>h(App)
}).$mount('#app')

4配置解析vue-loader

 const VueLoaderPlugin = require('vue-loader/lib/plugin')
{ test: /\.vue$/, use: ['vue-loader'] },
    ],
          //配置插件
  plugins:[
    new HtmlWebpackPlugin(),
    new VueLoaderPlugin()
  ]

webpack 我们需要掌握的知识:

1 知道webpack 作用:

2知道微博pack 使用 loader 和插件

​ 3 你在项目中有没有配置webpack, 配置过

​ 1)代理 devServer

​ 2) 通过webpack 处理性能优化的 =》 js ,css , 图片,等等

​ 4webpack 执行流程

posted on 2023-02-03 13:11  chccee  阅读(69)  评论(0编辑  收藏  举报