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建议加载文件模块的时候始终添加文件后缀名,不要省略。

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

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

相关文章
|
运维 安全 数据建模
阿里云免费SSL证书和收费版SSL证书有什么区别?
阿里云提供免费与收费SSL证书,前者有效期仅3个月,适合个人网站或测试使用;后者有效期至少1年,具备更高安全等级、良好兼容性及OCSP验证稳定性等优势,适用于企业网站,尤其政府、金融等领域建议选用OV或EV型证书以确保数据与身份认证安全。详细了解与报价请访问SSL证书官方页面。
1622 2
|
11月前
|
供应链 安全 网络安全
区块链技术与网络安全:机遇与挑战
区块链技术与网络安全:机遇与挑战
425 2
|
jenkins 持续交付
使用 Jenkinsfile 实现流水线即代码 (Pipeline as Code)
【8月更文第31天】在现代软件开发实践中,持续集成(CI)和持续部署(CD)已经成为不可或缺的一部分。Jenkins 是一个非常流行的 CI/CD 工具,它支持多种方式来定义构建流程,其中“流水线即代码”(Pipeline as Code)是一种将构建逻辑版本化并纳入源代码管理的方法。这种方式不仅使得构建流程更加透明,也方便团队协作和版本控制。
1000 0
|
Web App开发 前端开发
canvas系列教程04 —— 渐变、阴影、路径、状态、Canvas对象、图形重叠模式
canvas系列教程04 —— 渐变、阴影、路径、状态、Canvas对象、图形重叠模式
841 0
|
JavaScript 前端开发 Java
115.【SpringBoot(IDEA)+Vue(Vscode)前后端交互】(一)
115.【SpringBoot(IDEA)+Vue(Vscode)前后端交互】
1256 0
|
存储 SQL 安全
【绝密攻略】Flask应用如何抵御黑客入侵?七大安全技巧助你构建固若金汤的Web防线!
【8月更文挑战第31天】安全性是Web应用开发中的关键部分。Flask作为一款轻量级且高度可定制的框架,虽灵活但需开发者确保应用安全。本文介绍如何通过具体措施加固Flask应用,包括更新依赖项、启用CSRF保护、使用HTTPS、安全存储密码、防止SQL注入及清理用户输入等。通过示例代码展示如何在实际开发中应用这些策略,帮助提升应用安全性,为用户提供更可靠的服务。
505 0
|
Java 缓存
response.setHeader用法总结
response.setHeader用法总结
|
Web App开发 前端开发
canvas详解02-样式和颜色控制
canvas详解02-样式和颜色控制
393 1
|
机器学习/深度学习 JSON 自然语言处理
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
|
开发者 Python
Python中的正则表达式:re模块详解与实例
Python中的正则表达式:re模块详解与实例
478 0