require 加载模块时的注意点|学习笔记

简介: 快速学习 require 加载模块时的注意点

开发者学堂课程【Node.js 入门与实战:require加载模块时的注意点】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8296


require加载模块时的注意点

 

一、require 加载模块注意点

//情况一: require()的参数是一个路径

require( " ./index2.js")

/ /index2.js

1/ index2.json

//index2.node

// index2文件夹-> package.json -> main(入口文件 app.js -> index.js/index. json/index.node)->加载失败require( ./index2")

//情况二:require(的参数不是路径,直接就是一个模块名称

//-1.·先在核心模块中查找,是否有和给定的名字一样的模块。如果有,则直接加载该核心模块。

//require("http')

//2.如果核心模块中没有该模块那么就会认为这个模块是一个第三方模块(自定义模块)

//先会去当前js文件所在的目录下去找是否一个一node_modules文件夹

//require( "mime")

1. 所有模块第一次加载完毕后都会有缓存,二次加载直接读取缓存,避免了二次开销因为有缓存,所以模块中的代码只在第一次加载的时候执行一次  

//无论是加载文件模块、第三方模块还是核心模块,只要模块被加载过一次,就被缓存起来了(再次加载时,先判断缓存:如若缓存有则直接拿到。若没有,则直接用加载过程)以后再用,直接从缓存中取。避免损耗。

2. 每次加载模块的时候都优先从缓存中加载,缓存中没有的情况下才会按照node.js 加载模块的规则去查找//再次加载时,先判断缓存:如若缓存有则直接取。若没有,则直接用加载过程。

3. 核心模块在Mode. js 源码编译的时候,都已经编译为二进制执行文件,所以加载速度较快(核心模块加载的优先级仅次于缓存加载)

4. 核心模块都保存在lib目录下 //核心模块在源代码的lib目录下(大多用js写)

5试图加载一个和核心模块同名的自定义模块(第三方模块〉是会成功的+自定义模块要么名字不要与核心模块同名

+要么使用路径的方式加载 //我们加载时,加载时我们创建的模块与此模块重名,此模块便不会通过模块名称加载上。只能写路径来加载,让它根据路径查找。相反,核心模块不要通过路径加载,直接写模块名称

6、核心模块只能通过模块名称来加载(错误示例:require('./http');这样是无法加载核心模块 http的)

7、require()加载模块使用﹒/相对路径时,相对路径是相对当前模块,不受执行node 命令的路径影响  //在进行文件读写时./表示当时启动node命令的路径,但是在require加载模块时,./表示的是当前所在js文件所在的目录。

8建议加载文件模块的时候始终添加文件后缀名,不要省略。

//路径没有加后缀,怎么知道路径而不是自定义文件名?

因为只要是路径,就必须以相对或绝对路径开头,否则将被认为是模块名称

相关文章
|
jenkins 持续交付
使用 Jenkinsfile 实现流水线即代码 (Pipeline as Code)
【8月更文第31天】在现代软件开发实践中,持续集成(CI)和持续部署(CD)已经成为不可或缺的一部分。Jenkins 是一个非常流行的 CI/CD 工具,它支持多种方式来定义构建流程,其中“流水线即代码”(Pipeline as Code)是一种将构建逻辑版本化并纳入源代码管理的方法。这种方式不仅使得构建流程更加透明,也方便团队协作和版本控制。
1185 0
|
算法 PyTorch 算法框架/工具
论文解读:LaMa:Resolution-robust Large Mask Inpainting with Fourier Convolutions
论文解读:LaMa:Resolution-robust Large Mask Inpainting with Fourier Convolutions
1742 0
|
人工智能 自然语言处理
AI ppt生成器 Tome(二)
Tome 是一个AI PPT生成器,能根据用户输入自动生成内容和图片。用户可通过工具栏与AI对话来调整PPT,支持样式定制。优点包括:AI生成内容(支持中英文)、图片生成、多媒体嵌入及多语言输入。缺点:不支持导出下载和模板有限。
|
SQL 缓存 NoSQL
互联网电商大厂库存系统设计案例讲解
多人同时买一件商品时(假设库存充足),每个人几乎同时下单成功,给人一种并行感觉。但真实情况, 库存只是一个数值,无论是存在mysql数据库还是redis缓存,减值时都要控制顺序,只能串行来扣减,当然为保证安全性,会设计一些锁控制。
819 0
|
SQL 存储 安全
docker 安装sqlserver数据库并开启代理(保姆级)
docker 安装sqlserver数据库并开启代理(保姆级)
3124 0
|
前端开发 JavaScript
JS之MockJS快速入门(超详细)
JS之MockJS快速入门(超详细)
1758 0
JS之MockJS快速入门(超详细)
|
人工智能 安全 编译器
什么是Zig? Zig为什么成为最赚钱的语言? 编程语言Zig是什么? 编程语言Zig:简单、安全、高效的系统级编程语言
什么是Zig? Zig为什么成为最赚钱的语言? 编程语言Zig是什么? 编程语言Zig:简单、安全、高效的系统级编程语言
1327 0
|
存储 Unix Linux
|
XML 架构师 Java
Pb协议的接口测试
Protocol Buffers 是谷歌开源的序列化与反序列化框架。它与语言无关、平台无关、具有可扩展的机制。用于序列化结构化数据,此工具对标 XML ,支持自动编码,解码。比 XML 性能好,且数据易于解析。更多有关工具的介绍可参考官网。 Protocol Buffers官网:https://developers.google.com/protocol-buffers Protocol
|
JavaScript
[译] 使用 Node.js 提供百万的活跃 WebSocket 连接
仅使用消费级笔记本和一些 Wifi 资源便可提供大量的 WebSocket 服务
1218 0