对于Webpack相关知识的总结

Webpack 前端工程化---开始:


  • 当前 web 开发面临的问题:
  1. 文件依赖关系错综复杂;
  2. 静态资源请求效率低;
  3. 模块化支持不友好;
  4. 浏览器对高级 JS 特性兼容程度较低;
  • Webpack 概述:

Webpack :是一个流行的前端项目构建工具(打包工具),可以理解当前 Web 开发中所面临的困境;

Webpack 提供了有好的模块支持,以及代码压缩混淆处理JS 兼容问题性能优化等强大的功能,从而让程序员把工作的重心放在了功能实现上,提高开发效率;


  • 创建项目:

  1. 新建项目空白目录,并运行 npm init -y 命令,初始化包管理配置文件 package.json;
  2. 新建 src 源代码目录;
  3. 新建 src -> index.html 首页;
  4. 初始化首页基本的结构;
  5. 运行 npm install jquery -S 命令,安装 jQuery;
  6. 通过模块化的形式,实现列表隔行变色效果;
  • 在项目中安装和配置 webpack :(解决上面6中,JS兼容性问题):
  1. 运行 npm install webpack webpack-cli -D 命令,安装 webpack 相关的包;
  2. 在项目根目录中,创建名为 webpack.config.jswebpack 配置文件;
  3. webpack.config.js 的配置文件中,初始化如下基本配置;
     module.exports = {
    	  mode:'development'//mode 用来指定构建模式
      }		

     

  4. package.json 配置文件中的 scripts 节点下,新增 dev 脚本如下:

    "scripts":{
    	 "dev":"webpack"//script节点下的脚本,可以通过 npm run 执行
      }		

     

  5. 在终端中运行 npm run dev 命令,启动 webpack 进行项目打包;

  • 配置打包的入口与出口:
  1. webpack4.x 版本中默认约定:打包的入口文件为 src -- index.js; 打包的输出文件为 dist -- main.js;
  2. 如果要修改打包的入口与出口可以在 webpack.config.js 中新增如下配置信息:
    //导入node.js中专门操作路径的模块
        const path = require('path')  
    //__dirname项目根目录(双下划线) 
        module.exports = {
    //打包入口文件的路径
        entry:path.join(__dirname,'/src/index.js'),
        output:{	
        //输入文件的存放路径
        path:path,join(__dirname,'./dist'),
        //输出文件的名称
        filename:'bundle.js'
      }
    }

     

  • 配置webpack的自动打包功能:
  1. 运行 npm install webpack-dev-server -D 命令,安装支持项目自动打包的工具;
  2. 修改 package.json -- scripts 中的 dev 命令如下:
    "script":{
     //script节点下的脚本,可以通过npm run执行    
    "dev:"webpack-dev-server  
    }

     

  3. src -- index.html 中,script 脚本的引用路径,修改为 "/buldle.js";

  4. 运行 npm run dev命令,重新进行打包;

  5. 在浏览器中访问,查看自动打包效果;

  6. 注意: webpack-dev-server 会启动一个实时打包的 http 服务器; webpack-dev-server 打包生成的输出文件,默认放在项目根目录中,而且是虚拟的,看不见的;

  • 配置html-webpack-plugin生成预览页面:
  1. 运行 npm install html-webpack-plugin -D 命令,安装生成预览页面的插件;
  2. 修改 webpack.config.js 文件头部区域,添加如下配置信息:
    //导入生成预览页面的插件,得到一个构造函数
        const HtmlWebpackPlugin = require("html-webpack-plugin")
    //创建插件的实例对象	
        const htmlPlugin = new HtmlWebpackPlugin({	
    //指定要用到的模板文件	
        template:'./src/index.html',	
    //指定生成的文件的名称,该文件存在于内存中,在目录中	不显示	
        filename:'index.html'	
    })

     

  3. 修改 webpack.config.js 文件中向外暴漏的配置对象,新增如下配置节点:

    module.exports = {	
        //plugins数组是webpack打包期间会用到的一些插件列表	
        plugins:[htmlPlugin]	
    }

     

  • 配置自动打包相关的参数:
  1. 自动打包完成后,自己在浏览器弹出 index.html 页面
//package.json中的配置
//--open打包完成后自动打开浏览器页面
//--host配置IP地址
//--port配置端口	
"scripts":{	
	"dev":"webpack-dev-server --open --host 127.0.0.1 --port 8888"	
}

 

  • webpack中的加载器:


  • 概念:
  1. 通过 loader 打包非 js 模块:在实际开发过程中, webpack 默认只能打包处理以 .js 后缀名结尾的模块,其他非 .js 后缀名结尾的模块,webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错!
  2. loader 加载器可以协调 webpack 打包处理特定的文件模块,比如: less-loader 可以打包处理. less 相关的文件; sass-loader 可以打包 .scss 相关的文件; url-loader 可以打包处理 css url 路径相关的文件;
  • webpack中加载器的基本使用:
  • 打包处理 css 文件:
  1. 运行 npm i style-lader css-loader -D 命令,安装处理 css 文件的 loader;
  2. webpack.config.jsmodule--rules 数组中,添加 loader 规则如下:
    //所有第三方文件模块的匹配规则
    module:{		
    rules:[
    	{test:/\.css$/,use:['style-loader','css-loader']}
    	]
    }	
    //其中,test表示匹配的文件类型,use表示对应要调用的loader,
    use数组中指定的loader顺序是固定的;多个loader的调用顺序是:从后往前调用

     

  • 打包处理 less文件:

  1. 运行 npm i less-loader less -D 命令,安装处理 less 文件的 loader;
  2. webpack.config.js module--rules 数组中,添加 loader 规则如下:
    //所有第三方文件模块的匹配规则
    module:{ 
    rules:[
    {test:/\.less$/,use:['style-loader','css-loader','less-loader']}
    ]
    }

     

  • 打包处理 scss文件:

  1. 运行 npm i sass-loader node-sass -D 命令,安装处理 sass 文件的 loader;
  2. webpack.config.js module--rules 数组中,添加 loader 规则如下:
    //所有第三方文件模块的匹配规则
    module:{
    	rules:[
        {test:/\.sass$/,use:['style-loader','css-loader','sass-loader']}	
    ]
    }

     

  • 配置 postCSS 自动添加 css 的兼容前缀:

  1. 运行 npm i postcss-loader autoprefixer -D 命令;
  2. 在项目根目录中创建 postcss 的配置文件 postcss.config.js ,并初始化如下配置:
    //导入自动添加前缀的插件
    const autoprefixer = require('autoprefixer')
    module.exports = {
    	plugins:[autoprefixer]//挂载插件
    }

     

  3. webpack.config.js module--rules 数组中,修改 css loader 规则如下:

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

     

  • 打包样式表中的图片和字体文件:

  1. 运行 npm i url-loader file-loader -D 命令;
  2. webpack.config.js module--rules 数组中,添加 loader 规则如下:
    module:{		
    rules:[		
    	{test:/\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,use:'url-loader?limit=16940'}
    ]	
    }	
    //其中?之后是loader的参数项;
    //limit用来指定图片的大小,单位是字节(byte)	
    //只有小于limit大小的图片,才会被转为base64图片

     

  • 打包处理 js 文件中的高级语法:

  1. 安装 babel 转换器相关的包: npm i babel-loader @babel/core @babel/runtime -D;
  2. 安装 babel 语法插件相关的包:npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D;
  3. 在项目根目录中,创建 babel 配置文件 babel.config.js 并初始化基本配置如下:
    module.exports = {
    presets:['@babel/preset-env'],
    plugins:['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']
    }

     

  4. webpack.config.js module--rules 数组中,添加 loader 规则如下:

    //exclude为排除项,表示babel-loader不需要处理的node_modules中的js文件
    {test:/.\js$/,use:'babel-loader',exclude:/node_modules/}

     

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
webpack的重要知识点包括以下几个方面: 1. 模块化打包:webpack将前端的所有资源文件都视为模块,并根据模块的依赖关系进行静态分析,最终打包生成对应的静态资源。 2. 配置文件:webpack使用webpack.config.js文件来配置打包过程。在配置文件中可以设置入口文件、输出路径、加载器、插件等各种参数,以满足项目的需求。 3. 加载器:webpack通过加载器来处理各种类型的文件。常用的加载器有babel-loader用于处理ES6及以上的JavaScript代码,css-loader用于处理CSS文件,file-loader用于处理图片和字体文件等。 4. 插件:webpack的插件用于扩展其功能。常用的插件有HtmlWebpackPlugin用于生成HTML文件,CleanWebpackPlugin用于清理输出目录,MiniCssExtractPlugin用于提取CSS文件等。 5. 开发服务器:webpack-dev-server是一个开发服务器,它可以在内存中编译代码并提供资源,实现快速的开发和调试。 以上是webpack的一些重要知识点,它们可以帮助你更好地理解和使用webpack进行前端资源的构建和打包。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [webpack打包基础知识点与es6知识点.xmind](https://download.csdn.net/download/qq_43291759/13106867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Webpack重要知识点](https://blog.csdn.net/sinat_17775997/article/details/95167425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [webpack知识总结](https://blog.csdn.net/baidu_39067385/article/details/119428908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值