Webpack加载模块有哪些方法

这次给大家带来Webpack加载模块有哪些方法,Webpack加载模块的注意事项有哪些,下面就是实战案例,一起来看一下。

两个简单的源文件

为了方便分析 webpack 加载模块的原理,我们准备了两个文件:

hello.js

const hello = { say: arg => {  console.info('hello ' + arg || 'world'); }};export default hello;

登录后复制

index.js

import Hello from './hello';Hello.say('man');

登录后复制

index.js 作为入口文件,引用了 hello.js 模块。

Webpack 打包

在命令行执行 webpack index.js bundle.js 对入口文件进行打包,生成 bundle.js ,大体结构为(为了方便阅读,我删除了部分多余的代码):

Webpack加载模块有哪些方法

可以看到,最终生成的文件以 (function (modules) {})([模块1, 模块2]) 的方式启动,我们定义的模块被包装成一个个匿名函数,然后以数组的形式传递个一个匿名函数 function (modules) {},在这个匿名函数中定义了一个 webpack_require() 函数,用来加载模块,最后,通过 return webpack_require(webpack_require.s = 0); 来加载第一个模块 index.js

webpack_require() 函数

该函数接收一个 moduleId 作为参数,这个参数就是各个模块在数组中的索引,

function webpack_require(moduleId) {  /******/  /******/ // Check if module is in cache  /******/  if (installedModules[moduleId]) {   /******/   return installedModules[moduleId].exports;   /******/  }  /******/ // Create a new module (and put it into the cache)  /******/  var module = installedModules[moduleId] = {   /******/   i: moduleId,   /******/   l: false,   /******/   exports: {}   /******/  };  /******/  /******/ // Execute the module function  /******/  modules[moduleId].call(module.exports, module, module.exports, webpack_require);  /******/  /******/ // Flag the module as loaded  /******/  module.l = true;  /******/  /******/ // Return the exports of the module  /******/  return module.exports;  /******/ }

登录后复制

其中 installedModules 是用来缓存执行过的模块。通过 modules[moduleId].call() 来执行模块,最后返回模块的 exports。

模块接受的参数

以 hello.js 模块为例

 (function (module, webpack_exports, webpack_require) {  "use strict";  const hello = {   say: arg => {    console.info('hello ' + arg || 'world');   }  };  /* harmony default export */  webpack_exports["a"] = (hello);  /***/ })

登录后复制

webpack 会向模块传递 module, webpack_exports, webpack_require 三个参数,前两个是用来导出模块内的变量,第三个参数为前面介绍的 webpack_require() 的引用,用来导入其它

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

node.js部署启动后台运行forever步奏详解

正则表达式中的B和使用步骤详解

以上就是Webpack加载模块有哪些方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2757547.html

(0)
上一篇 2025年3月8日 07:57:38
下一篇 2025年3月8日 07:57:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Webpack加载模块方法汇总

    这次给大家带来Webpack加载模块方法汇总,Webpack加载模块的注意事项有哪些,下面就是实战案例,一起来看一下。 1在js中只有两种作用域 a:全局作用域 b:函数作用域 在ES6之前,js是没有块级作用域。 首先来解释一下什么是没有…

    2025年3月8日 编程技术
    200
  • webpack实战案例详解

    这次给大家带来webpack实战案例详解,webpack实战的注意事项有哪些,下面就是实战案例,一起来看一下。 webpack实战 查看所有文档页面:全栈开发,获取更多信息。 快马加鞭,加班加点,终于把这个文档整理出来了,顺便深入地学习一番…

    编程技术 2025年3月8日
    200
  • 前端中页面渲染优化方法总结

    这次给大家带来前端中页面渲染优化方法总结,前端中页面渲染优化的注意事项有哪些,下面就是实战案例,一起来看一下。 为什么做优化 经典问题:白屏时间过长,用户体验差产生的原因:网络问题、关键渲染路径(CRP)问题 怎么做优化 如何做好优化呢,网…

    2025年3月8日 编程技术
    200
  • AJAX对服务器返回XML的处理方法

    这篇文章主要介绍了ajax对服务器返回xml的处理方法,实例分析了ajax的实现技巧及针对xml返回数据的处理方法,需要的朋友可以参考下 本文实例讲述了AJAX对服务器返回XML的处理方法。分享给大家供大家参考。具体分析如下: 在AJAX …

    编程技术 2025年3月8日
    200
  • webkit-font-smoothing字体抗锯齿渲染使用案例详解

    这次给大家带来webkit-font-smoothing字体抗锯齿渲染使用案例详解,webkit-font-smoothing字体抗锯齿渲染使用的注意事项有哪些,下面就是实战案例,一起来看一下。 Webkit在自己的引擎中支持了这一效果 -…

    编程技术 2025年3月8日
    200
  • java+jquery处理xml数据的方法

    这篇文章主要介绍了java+jquery处理xml数据的方法,实例分析了ajax处理xml数据的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了java+jquery处理xml数据的方法。分享给大家供大家参考。具体实现方法如…

    编程技术 2025年3月8日
    200
  • JS常用数组遍历方法实例对比

    这次给大家带来JS常用数组遍历方法实例对比,JS常用数组遍历方法的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 这一篇与上一篇 JS几种变量交换方式以及性能分析对比 属于同一个系列,本文继续分析JS中几种常用的数组遍历方式以及各自…

    2025年3月8日
    200
  • 使用webpack搭建ReactApp案例详解

    这次给大家带来使用webpack搭建ReactApp案例详解,使用webpack搭建ReactApp的注意事项有哪些,下面就是实战案例,一起来看一下。 npm install -g create-react-appcreate-react-…

    2025年3月8日
    200
  • 如何处理webpack打包体积大文件

    这次给大家带来如何处理webpack打包体积大文件,如何处理webpack打包体积大文件的注意事项有哪些,下面就是实战案例,一起来看一下。 优化对比 :   未优化前:index.html引入一个main.js文件,体积2M以上。   优化…

    编程技术 2025年3月8日
    200
  • 如何正确的使用webpack中热刷新与热加载

    这次给大家带来如何正确的使用webpack中热刷新与热加载,使用webpack中热刷新与热加载的注意事项有哪些,下面就是实战案例,一起来看一下。 从脚手架发现热刷新、热加载的差异 相信大部分的vue开发者都是从vue-cli开始的,很多初学…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论