Webpack 面试题

一、谈谈你对Webpack的理解?

WebPack 是一个模块打包工具,你可以使用WebPack管理你的模块依赖,并编绎输出模块们所需的静态文件。它能够很好地管理、打包Web开发中所用到的HTML、Javascript、CSS以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源,webpack有对应的模块加载器。webpack模块打包器会分析模块间的依赖关系,最后 生成了优化且合并后的静态资源

快速记忆

 

一、Webpack如何解决跨域问题?(三种方式)来源

1. 使用代理:服务端是别人的,使用这个方式

devServer:{
    proxy:{  // 重写的方式,把请求代理到express服务器上
        '/api':{
            target:'http://localhost:3000',
            pathRewrite:{'/api':''} // 若请求路径为 /user ,不是 /api/user,可以把/api替换为空
  } } },

2. 前端模拟数据

devServer:{
    // 模拟数据
    before(app){
        app.get('/user',(req,res)=>{
            res.json({name:'小白'})
        })
    }
}

3.  服务端是自己写的,就可以把前端代码启动到服务端上

// server.js
let express = require('express');
let app = express();
let webpack = require('webpack');

let middle = require('webpack-dev-middleware'); // 引入这个
let config = require('./webpack.config.js');    // 配置文件
let compiler = webpack(config);

app.use(middle(compiler))

app.get('/user',(req,res)=>{
    res.json({name:'小白2'})
})
app.listen(3001)

 

二、webpack 实现 Tree Shaking(webpack原文

1. 打开项目中package.json文件,开启全部文件 Tree Shaking(只针对exports后的文件进行打包,其他的会被清除)

{
  "name": "tree-shaking",
  "sideEffects": false, // 开启
  "version": "1.0.0",
  ...
}

2. 若 sideEffects 为数组形式,数组中存放的是不被Tree Shaking的文件

{
  "name": "tree-shaking",
  "sideEffects": ["./src/polyfill.js"],
  "version": "1.0.0",
  ...
}

3. 对第三方函式库优化时候,需打开 webpack.config.js 文件进行配置 uglifyjs 插件

注意:usedExports 才是 Tree Shacking,使用时会自动判断没使用的代码,并标记 unused harmony 的注解,要移除的话要另外使用 minify

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  ...
  optimization: {
    usedExports: true,
    minimize: true,
    minimizer: [
        new UglifyJsPlugin({
            uglifyOptions: {
                compress: { unused: true },
                mangle: false,
                output: {
                    beautify: true
                }
            },
        })
    ],
  }
};
posted @ 2023-05-05 17:00  小短腿奔跑吧  阅读(159)  评论(0编辑  收藏  举报