博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack最简单的入门教程里bundle.js之运行单步调试的原理解析
阅读量:2437 次
发布时间:2019-05-10

本文共 1160 字,大约阅读时间需要 3 分钟。

读这篇文章的朋友,请确保对webpack有最基础的认识。

您可以阅读我前一篇文章:Webpack 10分钟入门 来在本地运行一个Webpack的hello world项目。

我这里可以在回顾一下这个web pack的hello world项目。

用webpack打包之后,项目文件夹里包含了这些资源:

webp

index.html的源代码很简单,就包含了一个webpack打包后生成的bundle.js文件:

webp

那么运行时,Hello,Jerry的字符串是如何通过bundle.js打印出来的呢?

这就是本文要阐述的内容。我们可以从bundle.js第一行设置断点,然后开始调试:

webp

webp

webp

webp

把我们web工程里定义的两个module注入到 webpack_require .m里:

webp

因为我们在webpack.config.js里定义的入口模块为main.js:

webp

在bundle.js里此处进行运行时加载:return  webpack_require ( webpack_require .s = "./main.js");

webp

webpack_require 函数本来就是在bundle.js里定义的:

webp

首先检查main.js是否已经装载在内存里了:

webp

对于我这个例子,显然没有,所以从头开始装载main.js.首先创建一个对象,id为./main.js:

webp

然后执行这个module的函数,即我们实现在main.js里的javascript代码。当然经过webpack的加工,main.js里的代码已经通过eval的方式嵌入到bundle.js里了。

webp

原始的main.js代码:

webp

上述代码被webpack转换之后,main.js里的源代码被替换成了 webpack_require :

webp

从这里也能看出webpack递归处理module的思路,从webpack.config.js定义的entry module,即main.js出发,在main.js遇到需要require其他mobule的地方,递归进入 webpack_require :

webp

require("print.js")的执行过程,就是把print.js里定义的print函数本身,赋给module的exports属性:

webp

print.js module装载完毕之后,就可以执行了。

webp

webp

注意第2行代码执行完毕后,html页面就出现了期望的字符:

webp

webp

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

webp

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24475491/viewspace-2216990/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24475491/viewspace-2216990/

你可能感兴趣的文章
InsideJVM(3)--Method area(方法区) (转)
查看>>
RAC警示录-----各位兄弟补充
查看>>
关于oracle的dbconsole
查看>>
中文版Windows XP 的新增功能(转)
查看>>
Web Application 開 發 利 器 - WebSnap(三) (转)
查看>>
跟我学 安装Windows Vista Bata2实录(转)
查看>>
Windows Vista IIS 7.0开启方法(转)
查看>>
Windows Vista六大版本详细介绍(转)
查看>>
Vista系统完整备份功能(转)
查看>>
Windows XP 中注册表内容的导入和导出(转)
查看>>
Windows Vista新的“复制”对话框(转)
查看>>
前沿技术 之 CORBA2 (转)
查看>>
前沿技术 之 CORBA (转)
查看>>
我对C++中虚函数、纯虚函数在实现多态中作用的一点浅薄认识 (转)
查看>>
VB中实现窗体自动隐藏 (转)
查看>>
Object Pascal中String类型的内幕探讨 (转)
查看>>
More Effective C++ 条款28(中) (转)
查看>>
前沿技术 之 CORBA 3 (转)
查看>>
EJB2.0系统中什么时候使用messaging或者RMI/IIOP (转)
查看>>
改变文件属性 (转)
查看>>