习惯用脚手架的你, 了解Webpack这些知识点吗? (三)

简介: 大概准备春招两个月了, 也没找到坑位埋自己, 来看看webpack

处理资源文件#


看完本节, 你将了解:

  1. 三种处理资源文件的方式
  • 第一种处理方式 file-loader

使用file-loader处理资源文件, 参考链接 <https://www.npmjs.com/package/file-loader >

安装命令: 


npm install file-loader --save-dev


参照上面链接中的示例配置, 为webpack.config.js中添加file-loader相关的模块

示例:


rules: [         
      {
                test: /\.(png|jpe?g|gif)$/i,
                use: [
                    {
                        loader: 'file-loader',
                        options:{
                            // 指定webpack打包后, 输出的路径
                            name: 'static/images/[name].[ext]',
                            // 这个publicPath规定的路径, 就是webpack运行项目后, 所有的资源文件url的最前面的公共部分
                            publicPath: '/',
                        }
                    },
                ],
            }
      ]


注意点: 如果不添加publicPath的话, 将出现下面的问题



  • 第二种处理方式

参考链接: https://www.npmjs.com/package/url-loader


url-loader的优点, 会针对不同图片做不同的压缩

安装命令


npm install url-loader --save-dev


同样是在webpack.config.js中添加配置


{
                test: /\.(png|jpg|gif)$/i,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            // url-loader和file-loader的工作原理相似, 当资源的大小小于limit指定的值时, 资源将被替换成base64编码的数据植入html或者 css中
                            limit: 80,
                            name: 'static/images/[name].[ext]',
                            // 这个publicPath规定的路径, 就是webpack运行项目后, 所有的资源文件url的最前面的公共部分
                            publicPath: '/',
                        },
                    },
                ],
            }


url-loader的特点如下:

  1. 当资源size < limit值时, 将使用base64对资源进行加密处理
  2. 当资源size > limit值时, 和file-loader相似, 将图片本身输出到指定的目录中


  • 第三种处理方式


比如项目中引用了字体文件, 直接写死在index.html模板中, 而不需要使用file-loader或者url-loader进行压缩之类webpack的处理和生成的操作, 那么可以使用下面的插件, 直接进行文件的copy


参考链接: https://www.npmjs.com/package/copy-webpack-plugin


命令:


npm install url-loader --save-dev


参考webpack.config.js如下:


const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
  plugins: [
       new CopyPlugin([
            {   // 将项目根路径下的static目录中的内容, 拷贝到dist/static/images中
                from: path.resolve(process.cwd(),'static/'),
                to: path.resolve(process.cwd(),'dist/static/images中')
            },
        ]),
  ],
};


添加Babel-loader#


为什么要使用babel-loader?


我们都是到, 浏览器只认识html css 原生js , 后续js发展的很快, ES5 ES6出世了, 但是不少浏览器根本不支持ES6的语法, 比如 import export 对象/函数 等等

如何使用?


参考链接: https://www.npmjs.com/package/babel-loader


安装命令:


npm install -D babel-loader @babel/core @babel/preset-env webpack


示例:


rules: [
  // the 'transform-runtime' plugin tells Babel to
  // require the runtime instead of inlining it.
  {
    test: /\.m?js$/,
    exclude: /(node_modules|bower_components)/,
    use: {
      loader: 'babel-loader',
      options: {
        presets: ['@babel/preset-env'],
        plugins: ['@babel/plugin-transform-runtime']
      }
    }
  }
]


webpack让前端项目独立占用一个端口运行#


通过这小节你将知道:

  1. webpack 通过什么让前端项目独立运行
  2. 如何安装这个插件
  3. 如何配置进webpack, 让webpack使用它
  4. 在那个配置文件中对devs-server进行更多的配置


参考连接: https://www.npmjs.com/package/webpack-dev-server


安装命令:


npm install webpack-dev-server --save-dev


修改npm的配置文件, 添加dev选项



这也就是为啥, 通过脚手架构建的开发环境, 能npm run dev运行起来

并且, 项目运行起来后, 我们做出的任何修改, 都会热加载进来, 时时更新, 无须重启

在webpack.config.js中添加devServer模块

如:



一般在开发时. 这个配置肯定是需要定制的, 如果在这里模拟前后端联调, 就在这个模块配置mock数据的地址


devServer: {
   change xxx-api/login => mock/login
    detail: https://cli.vuejs.org/config/#devserver-proxy
  },


或者是真的在前后端联调, 因为端口不同将出现跨域, 在这里配置代理服务器的地址


// 参考: https://www.webpackjs.com/configuration/dev-server/#devserver-proxy
devServer: {
   proxy: 'http://localhost:8089'
},


比如, 自动打开啊等等, 更多的配置 参考链接


https://www.webpackjs.com/configuration/dev-server/

相关文章
|
21天前
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
2月前
|
前端开发 JavaScript Shell
「offer来了」从基础配置到高级配置,16大知识点带你巩固webpack知识体系
该文章系统地总结了Webpack从基础配置到高级配置的16个关键知识点,包括Loader与Plugin的工作机制、源代码映射(Source Map)的使用、模块划分策略、性能优化技巧等内容,并提供了实际配置示例帮助理解和应用。
「offer来了」从基础配置到高级配置,16大知识点带你巩固webpack知识体系
|
3月前
|
前端开发 JavaScript API
|
JavaScript 前端开发 数据库
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-3
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
104 0
|
缓存 移动开发 JSON
【跳槽必备】2023webpack常问面试知识点总结
【跳槽必备】2023webpack常问面试知识点总结
62 0
|
6月前
|
前端开发 JavaScript 开发者
Webpack知识点总结
Webpack知识点总结
|
Web App开发 JavaScript 前端开发
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-2
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
79 0
|
存储 JavaScript 前端开发
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-1
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
84 0
|
前端开发 应用服务中间件 nginx
简单几步,将React项目脚手架Webpack换成Vite⚡⚡,附带性能比较和思考
简单几步,将React项目脚手架Webpack换成Vite⚡⚡,附带性能比较和思考
|
数据安全/隐私保护
【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(四)发布脚手架(下)
【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(四)发布脚手架(下)