Node.js day-03

发布于:2024-12-19 ⋅ 阅读:(11) ⋅ 点赞:(0)

01 Webpack讲解

  1. Webpack 是一个静态模块打包工具,从入口构建依赖图,打包有关的模块,最后用于展示你的内容

2.静态模块:编写代码过程中的,html,css, js,图片等固定内容的文件

3.打包过程,注意:只有和入口有直接/间接引入关系的模块,才会被打包

4.Webpack 的作用:把静态模块内容,压缩,这个和,转译等(前端工程化)

  • 把 less/sass 转成 css 代码

  • 把 ES6+ 降级成 ES5 等

  • 支持多种模块文件类型,多种模块标准语法

02.修改 Webpack 打包入口和出口

步骤:

  1. 项目根目录,新建 Webpack.config.js 配置文件

  2. 导出配置对象,配置入口,出口文件路径

    const path = require('path')
    ​
    module.exports = {
      entry: path.resolve(__dirname, 'src/main.js'), // 入口
      output: { // 出口
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js',
        clean: true // 先清空 dist,然后再输出最新内容
      }
    }

03.Webpack 自动生成 html 文件

Webpac插件讲解地址

步骤:

1.下载 html-webpack-plugin 本地软件包到项目中

npm i html-webpack-plugin --save-dev

2.配置 webpack.config.js 让 Webpack 拥有插件功能

// ...
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  // ...
  plugins: [ // 插件列表
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, 'public/index.html') // 以指定的 html 文件作为生成模板
    })
  ]
};

3.指定以 public/index.html 为模板复制到 dist/index.html,并自动引入其他打包后资源

04.Webpack-打包 css 代码

讲解:

  1. 注意:Webpack 默认只识别 JS 和 JSON 文件内容,所以想要让 Webpack 识别更多不同内容,需要使用加载器

  2. 介绍需要的 2 个加载器来辅助 Webpack 才能打包 css 代码

 步骤:

1.准备 css 文件引入到 src/mian.js 中(压缩转译处理等)

/**
 * 目标:引入 css 文件内容
 */
import './css/index.css'

2.下载 css-loader 和 style-loader 本地软件包

        npm i css-loader style-loader --save-dev

3.配置 webpack.config.js 让 Webpack 拥有该加载器功能

// ...

module.exports = {
  // ...
  module: { // 加载器
    rules: [ // 规则列表
      {
        test: /\.css$/i, // 匹配 .css 结尾的文件
        use: ['style-loader', 'css-loader'], // 使用从后到前的加载器来解析 css 代码和插入到 DOM
      }
    ]
  }
};

05. Webpack-打包 less 代码

步骤:

1.准备 less 样式引入到 src/main.js 中

/**
 * 目标:引入 less 文件内容
 */
import '@/less/index.less'

2.下载 less 和 less-loader 本地软件包

        npm i less less-loader --save-dev

3.配置 webpack.config.js 让 Webpack 拥有功能

// ...

module.exports = {
  // ...
  module: { // 加载器
    rules: [ // 规则列表
      // ...
      {
        test: /\.less$/i,
        use: [
          // compiles Less to CSS
          'style-loader',
          'css-loader',
          'less-loader',
        ],
      },
    ]
  }
};

06.Webpack-打包图片

步骤:

1.准备图片素材到 src/assets 中(存放资源模块 - 图片/字体图标等)

2.在 index.less 中给 body 添加背景图

body{
  background: url(../assets/background.png) no-repeat center center;
}

3.在 main.js 中给 img 标签添加 logo 图片

/**
 * 目标:要给 img 标签设置一个 logo 图片
 * 注意:再赋予给 img 的 src 属性图片的时候,需要把图片数据对象引入过来
 */
import imgObj from '@/assets/logo.png'
document.querySelector('.logo-img').src = imgObj

4.配置 webpack.config.js 让 Webpack 拥有打包图片功能

// ...

module.exports = {
  // ...
  module: { // 加载器
    rules: [ // 规则列表
      // ...
      { // 针对资源模块(图片,字体文件,图标文件等)处理
        test: /\.(png|jpg|jpeg|gif)$/i,
        type: 'asset', // 根据文件大小(8KB)小于:把文件转成 base64 打包进 js 文件中(减少网络请求次数)大于:文件复制到输出的目录下
        generator: { // 输出文件时,路径+名字
          filename: 'assets/[hash][ext]'
        }
      }
    ]
  }
};

注意:

  • 小于 8KB 文件会被转成 data URI(base64 字符串)打包进 JS 文件中(好处:可以减少网络请求次数,缺点:增加 30% 体积)
  • 大于 8KB 文件会被复制到 dist 下,自动替换使用代码的图片名字

 07.Webpack 集成 babel 编译器(降级处理)

步骤:

1.下载 babel babel-loader core 本地软件包

        npm i babel-loader @babel/core @babel/preset-env -D

2.配置 webpack.config.js 让 Webpack 拥有功能

// ...

module.exports = {
  // ...
  module: { // 加载器
    rules: [ // 规则列表
      // ...
      {
        test: /\.m?js$/,
        exclude: /(node_modules|bower_components)/, // 排除指定目录里的 js (不进行编译降级)
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'] // 预设规则
          }
        }
      }
    ],
  }
};

08.案例-注册用户-完成功能

步骤:

1.使用 npm 下载 axios

        npm i axios

2.引入axios

        import axios from "axios"

 09.Webpack 开发服务器

  1. 每次改动代码,都要重新打包,很麻烦,所以这里给项目集成 webpack-dev-server 开发服务器

  2. 作用:启动 Web 服务,打包输出源码在内存,并会自动检测代码变化热更新到网页

步骤:

1.下载 webpack-dev-server 软件包到当前项目

        npm i webpack-dev-server --save-dev

2.配置自定义命令,并设置打包的模式为开发模式

"scripts": {
    // ...
    "dev":"webpack serve  --mode=development"
  },

 10.Webpack 打包模式

11.Webpack 开发环境调错 source map

  1. 问题:代码被压缩和混淆,无法正确定位源代码位置(行数和列数)

  2. 设置:webpack.config.js 配置 devtool 选项

12.Webpack 设置解析别名路径

例如:

1.原来的路径如下:

import { checkUsername,  checkPassword } from '../src/utils/check.js'

2.配置解析别名:在 webpack.config.js 中设置

3.修改后

import { checkPassword } from "@/utlis/check.js";