当前位置: 首页 > news >正文

初识 webpack

前端为什么需要WebPack?

现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决SCSS,Less……新增样式的扩展写法的编译工作。所以现代化的前端已经完全依赖于WebPack的辅助了。

现在最流行的三个前端框架,可以说和webpack已经紧密相连,框架官方都推出了和自身框架依赖的webpack构建工具。

  • React.js+WebPack
  • Vue.js+WebPack
  • Angluar+WebPack

从此可以看出,无论你前端走那条线,你都要有很强的Webpack知识,才能祝你成为这个框架领域的大牛。

什么是WebPack?

WebPack可以看做是模块打包机:它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Sass,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。在3.0出现后,Webpack还肩负起了优化项目的责任。

这段话有三个重点:

  • 打包:可以把多个Javascript文件打包成一个文件,减少服务器压力和下载带宽。
  • 转换:把拓展语言转换成为普通的JavaScript,让浏览器顺利运行。
  • 优化:前端变的越来越复杂后,性能也会遇到问题,而WebPack也开始肩负起了优化和提升性能的责任。

我们可以从下图再次了解一下WebPack的作用:

clipboard.png

安装WebPack

具体安装方法:

用win+R打开运行对话框,输入cmd进入命令行模式。然后找到你想开始项目的地方,输入下方代码:

mkdir webpack_demo
cd webpack_demo

第一句是建立一个文件夹,第二句是进入这个文件夹。这个文件夹就是我们的项目文件目录了,文件夹建立好后,可以通过下面命令安装WebPack。

需要注意的是,你在执行下一步时必须安装node,可以通过 node -v来查看node安装情况和版本,如果没有安装,要先安装node才可以继续进行。

//全局安装
npm install -g webpack

项目目录

全局安装完成后,我们还要进行一个项目目录的安装。在用npm安装前,我们先要进行一下初始化,初始化的主要目的是生成package.json文件(这是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等等,如果你对此文件还不了解,可以看看node 的相关知识)。

在命令行输入:

npm init

输入完成后,npm终端会问你关于项目的名称,描述……一堆内容,如果你不考虑发布到npm上,这些内容都不重要,而且我们后期还可以用文本的形式修改这些内容。现在我们只要一路回车就完成了初始化。这时用dir命令已经可以看到生成的package.json文件了。

输入下面命令进行项目目录的安装:

npm install --save-dev webpack

这里的参数–-save是要保存到package.json中,dev是在开发时使用这个包,而生产环境中不使用。

开发环境and生产环境:

开发环境:--save-dev 在开发时需要的环境,这里指在开发时需要依赖的包。
生产环境:--save 程序开发完成,开始运行后的环境,这里指要使项目运行,所需要的依赖包。

查看webpack版本

安装好后,会想知道你现在webpack版本,在工作中交流时,也会经常问到你,你的打包版本是什么?这时候我们可以用下面的命令进行查看。

webpack -v

出现了版本号,说明你的webpack安装成功了。

相关文章:

  • ASP .Net Core 使用 Dapper 轻型ORM框架
  • C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
  • 如何使用公司打印机打印双页
  • JetBrains激活
  • [EWS]查找 文件夹
  • Mongodb主从配置
  • 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型
  • c语言数据类型(一)
  • VS中 Duplicate items are not supported by the Resources parameter 解决方法
  • SaaS与本地部署该如何闯出属于自己的路?
  • 记录下sparkStream的做法(scala)
  • JavaScript总结1
  • EXTJS学习系列提高篇:第二十三篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--显示列表第二篇...
  • caffe源码 全连接层
  • [Spark][Python][RDD][DataFrame]从 RDD 构造 DataFrame 例子
  • 「面试题」如何实现一个圣杯布局?
  • 【刷算法】从上往下打印二叉树
  • 5、React组件事件详解
  • Android Volley源码解析
  • Docker: 容器互访的三种方式
  • Invalidate和postInvalidate的区别
  • JS学习笔记——闭包
  • passportjs 源码分析
  • PermissionScope Swift4 兼容问题
  • python学习笔记-类对象的信息
  • Spring声明式事务管理之一:五大属性分析
  • vue自定义指令实现v-tap插件
  • 从输入URL到页面加载发生了什么
  • 关于Flux,Vuex,Redux的思考
  • 区块链技术特点之去中心化特性
  • 驱动程序原理
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 消息队列系列二(IOT中消息队列的应用)
  • 怎样选择前端框架
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​你们这样子,耽误我的工作进度怎么办?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #图像处理
  • (libusb) usb口自动刷新
  • (pytorch进阶之路)扩散概率模型
  • (安卓)跳转应用市场APP详情页的方式
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)fiber的基本认识
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三分钟)速览传统边缘检测算子
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Sublime Text3配置Lua运行环境
  • .htaccess配置常用技巧
  • .net 流——流的类型体系简单介绍
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NetCore 如何动态路由