不学还真不行系列(1)--webpack

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

我想很多人对于webpack都是不陌生的,比较前端三大框架都广泛使用到了webpack这个工具,但是学webpack有必要么,我个人也是持怀疑态度的,毕竟vue用的那么爽好像没怎么用到webpack这样的工具,但是有一点是毫无疑问的,那就是面试会问呀!面试会问呀!会问呀!呀!告诉我你有别的选择么?

目录

为什么需要webpack

安装

入口和出口

loader

模式


为什么需要webpack

说到这儿肯定要扯历史了,我们之前写 html ,js, css的方法其实很简单,写个html,里面去引大量的CSS和JS文件,这就带来了很大的麻烦,首先是js文件的引用顺序就很讲究,如果你写过flask,典型的例子就是jquery和bootsrap的引用顺序.就算你把所有的js写到一个文件中,又会出现很难维护的问题,况且这种面向过程的方法已经渐渐不适合当前的大环境.

因此webpack就有了其存在的意义,它可以打包你的js代码,同时又不仅仅局限于js代码,它可以让你使用类似common.js, es6import,amd,cmd等模块化的方法.

借快地方解释 cmd和amd的区别,也是不学真不行系列,我们知道自从js跳出浏览器之后,node.js广泛采用common.js的模块化组织方法,后来amd和cmd规范进一步做出了改进,此处借用此网站的代码,对于 common.js:

// Module/1.0
var a = require("./a");  // 依赖就近
a.doSomething();

var b = require("./b")
b.doSomething();

对于amd写法: 

扫描二维码关注公众号,回复: 7595144 查看本文章
define(["a", "b"], function(a, b){ // 依赖前置
    a.doSomething();
    b.doSomething();
})

对于cmd写法:

define(function(require, exports, module){
    var a = require("a");
    a.doSomething();
    var b = require("b");
    b.doSomething();    // 依赖就近,延迟执行
})

可以看到三者的不同主要在于下载时间和执行时间上,common.js是使用时下载执行,而amd是提前下载并执行,cmd则做到了提前下载,使用时执行.

当然历史的车轮总是滚滚向前的,webpack的出现成功的把所有的模块化标准囊括进来:

这里主要把webpack的核心功能过一下:

安装

对于这种工具当然是不推荐全局安装的了:

npm install webpack-cli -D

这样查看版本的时候我们就要使用npx了:

npx webpack -v

入口和出口

学webpack其实就是学怎么配置呀,那么工程自然要有一个入口的,进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的.

既然有入口,自然需要一个出口,出口即表示生成的文件放在哪里,取什么名字之类的:

const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};

上面demo规定了入口文件和出口文件地址和名字.

loader

这是webpack核心的东西了,也是最多最烦人的,首先说 loader是干嘛的,很简单,我们使用vue的时候要打包的可不仅仅只有js文件,vue文件,css甚至jpg等各种各样的文件都是要打包的.而借助各种各样的loader,我们可以很简单的完成这样的打包.

 loader的内容之多,三四篇也是讲不完的,大家需要的时候直接去对应地址找api即可.

模式

这个部分就很好理解了,如果你不配置mode的话,会默认给你配置为"production",效果就是我们熟悉的一行代码,变量等都是很简单的名字,相信大家都在dist里面看见过,因为production是放在生产环境之中的,自然可读性就不那么重要了.

还有一种development模式,我相信不用多说大家也知道是干嘛的了.

这篇文章主要让大家对webpack和模块化有一个大概的了解,不会牵扯更多的更深入的问题,主要希望能解决一些没有学过webpack的人的一些疑问.

如果想更深入去官网吧!

猜你喜欢

转载自blog.csdn.net/weixin_43870742/article/details/102486835