webpack模块化打包

1、概念

webpack 是一个 JavaScript 应用程序的静态模块打包器,通过分析模块之间的依赖关系,将所有依赖打包成一个或多个文件,方便浏览器加载。

2、webpack打包 react 项目过程

1.安装 webpack 和 webpack-cli
npm i webpack webpack-cli --save-dev
2.安装 babel 相关依赖
npm i babel-loader @babel/core @babel/preset-env @babel/preset-react --save-dev
3.配置 webpack.config.js 文件
const path = require('path');
module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env', '@babel/preset-react'],
          },
        },
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
      },
      {
        test: /\.(png|svg|jpg|gif)$/,
        use: ['file-loader'],
      },
    ],
  },
};

entry 表示打包的入口文件,output 表示打包后的文件输出路径和文件名。module.rules 中配置了项目使用的 loader,其中包括 babel-loader、style-loader、css-loader 和 file-loader 等

4.配置 .babelrc 文件
{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}
5.执行打包命令
npx webpack

执行打包命令后,webpack 会根据配置文件和入口文件,对项目进行打包,生成 dist 目录和 bundle.js 文件。
注意:由于 React 项目可能使用了一些第三方库和插件,因此在配置 webpack 和 babel 的 loader 时,需要根据实际情况进行修改和调整。

3、webpack打包 vue 项目过程

1.安装 webpack 和 webpack-cli
npm i webpack webpack-cli --save-dev
2.安装 vue-loader 和 vue-template-compiler
npm i vue-loader vue-template-compiler --save-dev
3.安装 babel-loader 和相关依赖
npm i babel-loader @babel/core @babel/preset-env --save-dev
4.配置 webpack.config.js 文件
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env'],
        },
      },
      {
        test: /\.css$/,
        use: ['vue-style-loader', 'css-loader'],
      },
      {
        test: /\.(png|jpe?g|gif)$/i,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]',
          outputPath: 'images',
        },
      },
    ],
  },
  plugins: [new VueLoaderPlugin()],
};

上述代码中,entry 表示打包的入口文件,output 表示打包后的文件输出路径和文件名。module.rules 中配置了项目使用的 loader,其中包括 vue-loader、babel-loader、vue-style-loader、css-loader 和 file-loader 等。plugins 配置了 VueLoaderPlugin,用于解析 Vue 的单文件组件。

5.配置 .babelrc 文件
{
  "presets": ["@babel/preset-env"]
}

上述代码中,配置了 babel 的预设,用于处理 ES6 语法.

6.编写 Vue 单文件组件
<template>
  <div>
    <h1>{{ message }}</h1>
    <img :src="logo" />
  </div>
</template>
<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      message: 'Hello World!',
      logo: require('./assets/logo.png'),
    };
  },
};
</script>
<style>
h1 {
  color: blue;
}
</style>
7.在 main.js 中引入 Vue 单文件组件
import Vue from 'vue';
import HelloWorld from './HelloWorld.vue';
new Vue({
  el: '#app',
  components: { HelloWorld },
  template: '<HelloWorld />',
});
8.执行打包命令
npx webpack

执行打包命令后,webpack 会根据配置文件和入口文件,对项目进行打包,生成 dist 目录和 bundle.js 文件。需要注意的是,由于 Vue 项目可能使用了一些第三方库和插件,因此在配置 webpack 和 babel 的 loader 时,需要根据实际情况进行修改和调整

4、webpack打包,执行打包命令后都发生了哪些事情( 详细执行过程 )

1.第一步

读取 webpack.config.js 配置文件,获取相关配置项,如入口文件、输出目录、加载器、插件等。

2.第二步

解析入口文件的依赖关系。Webpack 会从入口文件开始递归地解析它所依赖的所有模块,并生成一个依赖关系图。Webpack 将所有模块及其依赖打包到一个或多个 bundle 文件中。

3.第三步

使用配置文件中的加载器处理模块。加载器可以将模块从不同的语言(如 TypeScript、ES6、Less、Sass 等)转换为浏览器可以理解的 JavaScript 代码。

4.第四步

使用配置文件中的插件对 bundle 文件进行优化、压缩和其他处理。插件可以处理 bundle 文件,以满足开发者的需求,如优化压缩、生成 source map、提取公共代码等。

5.第五步

将处理后的模块和依赖关系图打包成 bundle 文件,并输出到指定的目录中。在输出过程中,Webpack 还会生成一些额外的文件,如 manifest 文件、hash 值文件等。

6.第六步

如果开启了热更新(Hot Module Replacement),Webpack 会启动一个热更新服务器,将编译后的代码通过 WebSocket 协议发送到浏览器端,实现浏览器端的实时更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wr_kobe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值