发布于2021-06-07 21:27 阅读(791) 评论(0) 点赞(27) 收藏(2)
目录:什么是Webpack、安装Webpack、使用Webpack
本质上,Webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当Webpack处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要地每个模块,然后将所有这些模块打包成一个或多个bundle。
Webpack是当下最热门]的前端资源模块化管理和打包工具,它可以将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分离,等到实际需要时再异步加载。通过loader转换,任何形式的资源都可以当做模块,比如CommonsJS、AMD、ES6、 CSS、JSON、CoffeeScript、LESS 等。
伴随着移动互联网的大潮,当今越来越多的网站已经从网页模式进化到了WebApp模式。它们运行在现代浏览器里,使用HTML5、CSS3、ES6 等新的技术来开发丰富的功能,网页已经不仅仅是完成浏览器的基本需求; WebApp通常是一个SPA (单页面应用) ,每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的JS代码,这给前端的开发流程和资源组织带来了巨大的挑战。
前端开发和其他开发工作的主要区别,首先是前端基于多语言、多层次的编码和组织工作,其次前端产品的交付是基于浏览器的,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源,并且保证他们在浏览器端快速、优雅的加载和更新,就需要一个模块化系统,这个理想中的模块化系统是前端工程师多年来一直探索的难题。
模块化的演进:
①script标签
<script src="module1.js"></script>
<script src="module2.js"></script>
<script src="module3.js"></script>
<script src="module4.js"></script>
这是最原始的JavaScript文件加载方式,如果把每一个文件看 做是一个模块,那么它们的接口通常是暴露在全局作用域下,也就是定义在window对象中,不同模块的调用都是一个作用域。
这种原始的加载方式暴露了一些显而易见的弊端:
Ⅰ全局作用域下容易造成变量冲突。
Ⅱ文件只能按照
require("module");
require("../module.js");
export.doStuff = function() {};
module.exports = someValue;
优点:
缺点:
实现:
③AMD
Asynchronous Module Definition规范其实主要是一个接口的define(id?,dependencies?,factory)。它要在声明模块的时候指定所有的依赖dependencies,并且还要当做形参传到factory中,对于依赖的模块提前执行。
define("module",["dep1", "dep2"], function(d1, d2) {
return someExportedValue;
});
require(["module", "../file.js"], function(module, file) {});
优点:
缺点:
实现:
④CMD
Commons Module Definition规范和AMD很相似,尽量保持简单,并与CommonsJS和NodeJS的Modules规范保持了很大的兼容性。
define(function(require, exports, module) {
var $ = require("jquery");
var Spinning = require("./spinning");
exports.doSomething = …;
module.exports = …;
});
优点:
缺点:
实现:
⑤ES6模块
ECMAScript6标准增加了JavaScript语言层面的模块体系定义。ES6模块的设计思想,是尽量静态化,使编译时就能确定模块的依赖关系,以及输出和输入的变量。CommonsJS和AMD模块,都只能在运行时确定这些东西。
import "jquery";
export function doStuff() {}
module "localModule" {}
优点:
缺点:
实现:
开发人员期望的模块系统:可以兼容多种模块风格,尽量可以利用已有的代码,不仅仅只是JavaScript模块化,还有CSS、图片、字体等资源也需要模块化。
Webpack是一款模块加载器兼打包工具,它能把各种资源,如JS、JSX、ES6、SASS、LESS、图片等都作为模块来处理和使用。
安装:
npm install webpack -g
npm install webpack-cli -g
测试安装成功:
webpack -v
webpack-cli -v
配置:
创建webpack.config.js配置文件
module.exports = {
entry: " ",
output: {
path: " ",
filename: " "
},
module: {
loaders: [
{test: /\.js$/, loader: " "}
]
},
plugins: {},
resolve: {},
watch: true
}
直接运行webpack命令打包。
1)创建项目。
2)创建一个名为modules的目录,用于放置JS模块等资源文件。
3)在modules下创建模块文件,如hello.js,用于编写JS模块相关资源。
//暴露一个方法:sayHi
exports.sayHi = function () {
document.write("<div>Hello WebPack</div>");
}
4)在modules下创建一个名为main.js的入口文件,用于打包时设置entry属性。
//require导入一个模块,就可以调用这个模块中的方法了
var hello = require("./hello");
hello.sayHi();
5)在项目目录下创建webpack.config.js配置文件,使用webpack命令打包。
module.exports = {
entry: "./modules/main.js",
output: {
filename: "./js/bundle.js"
}
};
6)在项目目录下创建HTML页面,如index.html,导入WebPack打包后的JS文件。
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue</title>
</head>
<body>
<script src="dist/js/bundle.js"></script>
</body>
</html>
7)在编写控制台(IDEA)中执行webpack,如果失败的话,就使用管理员权限运行即可。
8)运行HTML查看效果。
说明:
# 参数 --watch用于监听变化
webpack --watch
原文链接:https://blog.csdn.net/manong3041/article/details/117525105
作者:hhbnn
链接:http://www.phpheidong.com/blog/article/89813/823afdeaccf27b932689/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!