带你了解 webPack_小小的星芒的博客-程序员秘密

技术标签: webpack  vue  前端  

学习webPack的作用

如果你从事前端工作,那你一定用过或者听说过webPack,现在最流行的三个前端框架(Vue.js, React.js, AngluarJS)都与webPack紧密相连,如果想让我们前端技术有一个质的提升,那你不得不了解学习webPack,否则你向前端进步的脚步会受到阻碍,

工作原理

将项目作为整体,通过给定的主文件(如: index.js)从主文件开始找到项目的所有依赖的文件,使用loaders处理她们,最后打包为一个或者多个,浏览器可以识别的javaScript文件,
注意:webpack只能打包commonJS的规范下的js文件

安装webPack

  1. 创建一个文件夹(webpack_demo)
  2. 全局安装webPack

npm install -g webpack

  1. 初始化项目
    打开控制台,进入我们刚才建立的文件夹,输入下面的命令行,这时候我们会看到 package.json文件

npm init

{
    
  "name": "webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "ybb",
  "license": "ISC"
}

  1. 建立配置文件

webpack.config.js就是webPack的配置文件,这个文件需要我们手动建立在项目的根目录下。
webpack.config.js主要分为5大模块:

module.exports = {
entry: {}, //入口文件
output: {}, // 出口文件
module:{}, // 模块
plugins: {}, // 插件
devServer:{} // webpack开发服务功能
}

webpack.config.js配置

这里才是我们今天的重点之重,webpack的所有的知识点都在这里,必须画重点了,接下来让我们一起了解webpack各个配置的具体作用

入口文件配置项–entry

入口配置项里面放的文件,表示我们从哪里开始打包我们的文件,
entry有三种方式:

  • 第一种: 表示文件只有一个入口index.js文件,即只打包一个index.js文件
    module.exports = {
    
      entry:{
    
        index: './index' 
      }
    }
  • 第二种: 打包多个同级文件,会被打包到同一个文件里面
    module.exports = {
    
      entry:['./index1','./index2']
    }
  • 第三种: 打包多页面,会被打包到不同的文件里面
    module.exports = {
    
      entry:{
    
      index1: './index1',
      index2: './index2'
	  }
    }

出口文件配置项–output

出口文件的配置项,表示打包后的文件所在的地方
这里面有三个参数:

  • path:表示打包后的文件所在位置,图例是放在dist文件夹下面
  • filename:表示打包后文件的名字,【name】表示源文件的名字,一搬会用到【chunkhash】表示版本,当文件发生变化的时候chunkhash变化,否则不变
  • publicPath: 打包后引入js文件路径会统一加个./
    module.exports = {
    
	    output:{
    
	      path: path.resolve(__dirname, 'dist'),
	      filename: '[name].bundle.js',
	      publicPath: './' 
	    }
    }

模块配置项–module

模块主要是解析css和图片转换压缩等功能,其实说白了就是处理非js文件,将文件转化为webpack可以处理的有效模块。
值得注意下:之前webpack配置加载器的时候使用loaders,但是现在使用rules,所以下面主要对rules进行讲解
module一般有一下几个配置项

  • test: 用于匹配文件的扩展名,进而识别应该被loader转化的文件。 【必填】
  • use: loader的名称,执行顺序从后向前 【必填】
  • include: 手动添加必须处理的文件,可以加快webpack的搜索速度,用于优化loader 【可选】
  • exclude:手动添加需要排除的文件,和include一样都可以优化loader【可选】
  • loader:它和use一样都是表示loader的名字,区别是一个是use是数组可以加载多少,而loader只加载一个
   module.exports = {
    
    module:{
    
         rules: [{
    
   			test: /\.css$/,  // 匹配后缀为.css的文件
   			use: ['style-loader', 'css-loader'], 
   			include: path.resolve(__dirname, src), //  加载src目录下的js文件
   			exclude: path.resolve(__dirname, 'node_modules')// 排除node_modules 文件
   		] 
       }
   }

插件–plugins

用于扩展webpack的功能,引入项目需要的插件

   module.exports = {
    
    plugins:{
    
         new HappyPack({
    
           id: 'js',
           cache: true,
           loaders: ['babel-loader?cacheDiretory=true'],
           ThreadPool: happThreadPool
          })
       }
   }

开发服务器功能 – devServer

用于监听你的代码的修改,并自动刷新显示修改后的结果,devServer是一个本地开发服务器,基于node.js构建。它有以下配置项:
contentBase: 本地服务器加载的页面所在的目录

  • host:设置服务器Ip
  • compress: 表示服务端压缩是否开启
  • port:配置服务器端口号
  • inline: 表示是否实时刷新
   module.exports = {
    
    devServer:{
    
         contentBase: path.resolve(__dirname, 'dist'), //加载dist文件夹下面的文件
         host: 'localhost', 
          compress: true, // 开启服务器压缩
           port: 1717, // 端口号是1717
           inline: true // 实时刷新
       }
   }

以上是本人对webpack的简单的认识,如有不足的地方,望提醒

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43589225/article/details/90703513

智能推荐

python下载网页里面所有的图片-Python实现批量下载图片的方法_weixin_37988176的博客-程序员秘密

#!/usr/bin/env python#-*-coding:utf-8-*-'#Filename:download_file.pyimport os,sysimport reimport urllibimport urllib2base_url = 'xxx'array_url = list()pic_url = list()inner_url = list()def get_array_ur...

修复bug的12个关键步骤_开发bug修复流程_c1782746138的博客-程序员秘密

boss:那么,你需要多长时间来修复这个bug?    没有经验的程序员:给我一个小时?最多两个小时?我能马上搞定它!    有经验的程序员:这么说吧,钓到一条鱼要多久我就要多久?!  要多少时间才能修复bug,事先是很难知道的,特别是如果你和这些代码还素不相识的话,情况就更加扑朔迷离了。James Shore在《The Art of Agile 》一书中,明确指出要想修复问题得先知道

Excel 2007 中保存文件时可以选择的文件类型_宋哥的博客-程序员秘密

在 Excel 2007 中保存文件时,有几种文件类型可供选择。Excel 工作簿(*.xlsx)      如果工作簿不包含宏或 Microsoft Visual Basic for Applications (VBA) 代码,请将该工作簿保存为这种文件类型。如果尝试将工作簿保存为 Excel 工作簿,而该文件中包含宏命令或 VBA 项目,则 Excel 2007 将警告您将从该文件中删

导出Excel方式汇总-- 第二种利用oledb进行读取,需要安装AccessDatabaseEngine插件。_c#使用accessdatabaseengine导出表格_zhouganqing的博客-程序员秘密

第二种:利用oledb进行读取,需要安装AccessDatabaseEngine插件。注意:          1、插件版本根据win系统分为32位和64位。          2、需要在服务器放置一份模板,用来进行文件复制--(也可以通过代码直接创建一个空Excel文件)               总之就是必须服务器有这个文件存在,然后把Excel文件当做数据库进行操作。 ...

shell脚本替换文件中字符_weixin_34194379的博客-程序员秘密

1、将当前目录下包含jack串的文件中,jack字符串替换为tomsed -i "s/jack/tom/g" `grep "jack" -rl ./`2、将某个文件中的jack字符串替换为tomsed -i "s/jack/tom/g" test.txt转载于:https://www.cnblogs.com/wangcp-2014/p/5483785.html...

随便推点

进程管理四(进程的同步与互斥一)_多个进程必须互斥访问的资源称为_Dream_Ryoma的博客-程序员秘密

在操作系统中引入进程实现并发后,虽然提高了资源的利用率和系统的吞吐量,但由于进程的异步性,也会给系统造成混乱,尤其是在进程之间争用临界资源的时候。例如:多个进程去争用一台打印机,有可能使多个进程的输出结果交织在一起,难以区分;而多个进程去争用共享变量、表格、链表时,有可能导致数据处理出错。进程同步和互斥的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的各进程之间能有效地共享资源和相...

动态规划算法解决二维背包问题_二维动态规划背包问题_虚心学习进步的博客-程序员秘密

动态规划算法解决二维背包问题http://www.360doc.com/content/13/1209/19/14357424_335780208.shtml一个旅行者有一个最多装j公斤,容积k的背包,现在有n种物品,每件的重量分别是w1,b1,w2,b2,w3,b3,......,wn,bn.    每件的价值分别为v1,v2,...,vn.若的每种物品的件数足够多. 求旅行者能获得的最...

texworks注释掉多行latex代码。_texworks 注释多行_xiaotao_1的博客-程序员秘密

1,先选中多行latex代码。 2,按ctrl+shift+]。就可以注释掉多行了。ps:ctrl+shift+[ 是取消注释。

计算机网络协议(一)_计算机网络协议有哪些_php_kevlin的博客-程序员秘密

Http协议状态码1**:信息类状态码,表示接受的请求正在处理临时响应并需要请求者继续执行操作的状态代码2**:成功状态码,表示请求正常处理完毕3**:重定向,表示要完成请求,需要进一步操作。4**:客户端错误,请求可能出错,妨碍了服务器的处理5**:服务器端本身错误,常见状态码:200:请求被成功处理,请求所希望的响应头或者数据体将随此响应返回。204:服务器成功处理请求,但不返回任何实体内容2...

dell跳过开机硬件检测_dell笔记本,开机弹出未知的硬件错误“unknowharderror”,开机F12进入自带的检测工具检测,显示..._weixin_39992417的博客-程序员秘密

{"optioninfo":{"dynamic":"true","static":"true"},"simplifiedDisplay":"detailCard","newCard":[{"ifIcon":"icon","icon":"censor","iconImg":"","contentLink":"https://ai.aliyun.com/vi/censor","title":"视频审核...

(一)MFC读取并显示一幅位图图像,并获取鼠标点击位置的像素坐标和灰度值_获取鼠标所点处的颜色值mfc_金萨巴的博客-程序员秘密

      题目是老师布置的一道作业题,要求用C或C++完成,但不能用VTK/Opencv等软件包,经过很多摸索之后实现了该功能,后续可能还有其他功能要实现,所以先写一篇博客记录下,一方面是方便自己以后使用,另一方面是给其他人做个参考,少走一些弯路。说不定以后学弟学妹们就看到了这篇博客(猜猜我是哪个学校的?)一、作业要求要求读取一幅位图图像,即BMP位图,并显示该图像在对话框内。鼠标点击该...

推荐文章

热门文章

相关标签