前端开发系列119-进阶篇之commonJS规范和require函数加载的过程
1.会默认调用require函数,其实是Module.prototype.require方法
2.Module._load 调用模块加载方法,最终返回的是module.exports
3.Module._resolveFilename 解析文件名参数,转换为绝对路径后按优先级默认尝试添加 .js .json .node
4.Module._cache 判断是否存在缓存,如果有缓存,那么就直接返回上次require的结果
5.如果没有缓存,那么就通过new Module 来创建模块(对象),主要的实例成员为id 和 exports
6.对新创建的模块进行缓存处理
7.尝试加载模块(Module.prototype.load)
8.Module._extensions 获取当前模块的扩展名并根据扩展名调用对应的方法
9.通过fs.readFileSync获取具体的内容
10.module._compile
11.将具体的内容包裹到函数中 (function (exports, require, module, __filename, __dirname) {})
12.执行函数fn.call(exports, exports, require, module, __filename, __dirname)
13.最终返回 module.exports;
前端开发系列119-进阶篇之commonJS规范和require函数加载的过程的更多相关文章
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- leaflet-webpack 入门开发系列一初探篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266烧录配置
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps
[Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...
- Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系 ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- Flutter 开发从 0 到 1(四)ListView 下拉加载和加载更多
在<APP 开发从 0 到 1(三)布局与 ListView>我们完成了 ListView,这篇文章将做 ListView 下拉加载和加载更多. ListView 下拉加载 Flutter ...
- webpack4 系列教程(四): 单页面解决方案--代码分割和懒加载
本节课讲解webpack4打包单页应用过程中的代码分割和代码懒加载.不同于多页面应用的提取公共代码,单页面的代码分割和懒加载不是通过webpack配置来实现的,而是通过webpack的写法和内置函数实 ...
- react开发中如何使用require.ensure加载es6风格的组件
其实用的babel,在浏览器端就应该可以加载,之前少了个default: require.ensure([],(require) => { let A = require('./a.js').d ...
随机推荐
- 从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程
引言:AI对话系统的时代机遇 在数字化转型浪潮中,聊天机器人已成为连接用户与服务的关键纽带.无论是客服系统中的7×24小时即时响应,还是智能家居中的语音交互,聊天机器人正在重塑人机交互方式.本文将通过 ...
- window下配置多个Git账号
三步完成配置一台电脑下多git账号配置 1.生成密钥 git客户端安排好后,打开git Bash,生成SSH key. ssh-keygen -t rsa -C "user1111@emai ...
- Sentinel源码—3.ProcessorSlot的执行过程
大纲 1.NodeSelectorSlot构建资源调用树 2.LogSlot和StatisticSlot采集资源的数据 3.Sentinel监听器模式的规则对象与规则管理 4.AuthoritySlo ...
- 康谋分享 | aiSim5激光雷达LiDAR模型验证方法(二)
aiSim中的LiDAR是一种基于光线追踪的传感器,能够模拟真实LiDAR发射的激光束,将会生成LAS v1.4标准格式的3D点云,包含了方位角.俯仰角和距离等. aiSim能够模拟LiDAR单态(M ...
- VTK 入门系列之二:为三维场景添加坐标轴
一.引言 在进行三维可视化开发时,我们常常希望能够清晰了解模型在空间中的位置.方向与比例关系.而最直观的辅助工具就是三维坐标轴(Axes).在 VTK 中,vtkAxesActor 提供了一种开箱即用 ...
- 没几个人需要了解的JDK知识,我却花了3天时间研究
目前国内发布自己JDK版本的几家公司: 腾讯和阿里是因为有Java应用和云业务,所以在优化发布自己的版本 华为也是因为Java应用和云业务,不过因为还有服务器业务,所以还有Java课题的跑分需求,如S ...
- GC垃圾收集时,居然还有用户线程在奔跑
之前面试被问到过"当GC垃圾收集时,是所有的用户线程都停止了吗?",这一篇我们来探究一下这个问题. 其实执行本地代码的线程仍然可以运行,那么这些线程一旦改变了对象中的引用关系或创建 ...
- 【工具】没有人能拒绝这三种PDF阅读方式!打造良好的夜间PDF阅读环境,解放你的双眼!White is too harsh!
方式一和二都适用于常规的浏览器, 方式三是最最好用的PDF阅读器推荐. 方式一:f12改css 步骤一:打开开发者工具(f12). 步骤二:点击选择PDF所在元素,在style里面加一行filter: ...
- JS高级用法:像大神一样玩转JavaScript
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- windows11 安装CUDA Toolkit,Python,Anaconda,PyTorch并使用DeepSeek 多模态模型 Janus-Pro识别和生成图片
一.概述 因为公司网络做了严格限制,必须使用账号登录,才能上网.必须是指定的ip地址和MAC地址设备才可以上网. windows11开启热点,安装第三方虚拟机软件,开启WSL2虚拟机都是被禁止的,否则 ...