深入解析:Node.js的安装与模块加载原理

更新:11-13 名人轶事 我要投稿 纠错 投诉

大家好,关于深入解析:Node.js的安装与模块加载原理很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!

console.log(全局.a); //undefined 这是因为a是模块下定义的变量,不是全局变量

(i)全局变量和什么是模块

在NODE里面全局变量不是window了而是global

一个文件就是一个模块,同时每个模块都有自己的作用域.

我们用var声明的变量并不是全局的而是属于当前模块下面的

var a=100;

控制台.log(a); //100

全局.a=200;

控制台.log(a); //还是100

console.log(global.a) //是200

一些看似全局其实属于当前模块的变量

__filename 解析后当前文件的绝对路径。其实这个变量是属于当前模块的(也就是属于各个文件的)

控制台.log(__文件名);

(ii)模块加载机制-require方法

require("模块路径");

需要("./2.js");

require方法中的路径可以填写相对路径和绝对路径

当前模块在硬盘中的绝对路径

require("D:phpStudyWWWNodeindex.js"); //没问题(绝对路径) require("./2.js") ;这里一定要注意,不能写成require("2.js"),因为它会加载Node的核心模块,即,从node_models中找到它。因此,如果加载自己编写的模块,必须找到父目录,然后获取同级目录。

模块的文件查找机制:

首先根据加载的模块文件名进行搜索——如果没有找到,js文件会自动添加到模块文件名中进行搜索。如果还没有找到,则会在文件名中添加.json后缀进行搜索。如果没有找到,则会在文件名中添加.node后缀进行搜索。如果没有找到,会直接弹出错误。

模块之间想调用变量怎么办?

模块中var定义的变量的作用域是当前模块,不能被外部模块直接访问。如果一个模块访问另一个模块定义的变量,有两种方法: 方法:(不推荐) 使用该变量作为全局对象的属性,使其成为全局变量。当前模块是4(4.js)

为模块5中的全局对象添加属性global.a=100;

需要("./5.js");

控制台.log(a); //100 方法二: 使用一个模块对象module 对象(也在模块范围内,不是全局的) module 来保存并提供一些与当前模块相关的信息(可以使用console.log(module))打印出来。模块对象中有一个子对象,就是exports。我们可以使用这个对象来提供对模块中局部变量对象的外部访问。模块5

var a=100;

module.exports.a=a;

模块4

//require("./5.js") 返回值是加载模块中的exports

var m5=require("./5.js");

控制台.log(m5.a); //100;

exports与module.exports区别

导出用于变量,该方法不需要使用新对象。

module.exports.applies 到新的对象。这样,一个新的加载页面就可以创建一个新的对象。

var People=require("./People.js");

var xiaoming=new People("小明");

console.log(xiaoming.name);在模块作用域中,还有一个内置的模块对象——exports——其实就是module.exports5模块

变量a=100;

console.log(module.exports===导出); //真的;

出口.a=a; Exports 和module.exorts 指向同一点。使用时尽量不要破坏两者的指向关系。模块.exports=[1,2,3]; //像这样直接操作module.exports。此时exports与module.exports的指向关系已经断开。

用户评论

情深至命

终于决定学习 Node.js 了,这篇正好可以帮到我!

    有18位网友表示赞同!

仰望幸福

Node.js 安装挺简单的,但是模块加载确实有点难懂啊

    有15位网友表示赞同!

Edinburgh°南空

以前用的只有前端 JS,现在想深入一点试试后端开发 。

    有7位网友表示赞同!

终究会走-

感觉学习 Node.js 真是一条通往后端开发的大门!

    有16位网友表示赞同!

毒舌妖后

这篇文章是不是讲的是 npm 的安装和使用呢?

    有19位网友表示赞同!

有一种中毒叫上瘾成咆哮i

我一直对 Node.js 模块加载机制很好奇,今天来了解一下!

    有8位网友表示赞同!

坏小子不坏

希望这篇文章能详细解释下 CommonJS 和 ESM 的区别!

    有7位网友表示赞同!

歆久

看了眼 GitHub 回顾下 Npm 也有很多贡献啊!

    有14位网友表示赞同!

各自安好ぃ

要学习 Node.js 就得掌握模块加载机制,太重要了 !

    有13位网友表示赞同!

雁過藍天

Node.js 是个好用的工具,但是安装和配置总是把我难住了

    有6位网友表示赞同!

坠入深海i

之前用过一些前端框架,现在想试试看纯 Node.js 开发 。

    有10位网友表示赞同!

失心疯i

这篇文章的标题真是点明主题了,很清晰!

    有13位网友表示赞同!

绝版女子

想搭建一个后端 API,Node.js 是个不错的选择啊!

    有13位网友表示赞同!

作业是老师的私生子

希望能看到关于安装不同版本的Node.js 的经验分享!

    有6位网友表示赞同!

海盟山誓总是赊

学习新的编程语言总是让人兴奋!

    有13位网友表示赞同!

哭花了素颜

感觉 Node.js 很适合快速开发小型应用 。

    有17位网友表示赞同!

良人凉人

之前一直用 PHP 编写后端程序,现在想尝试 Node.js

    有6位网友表示赞同!

情字何解ヘ

看看这篇文章能否帮我解决 Node.js 模块冲突的问题!

    有16位网友表示赞同!

灵魂摆渡人

学习Node.js 的一个好起点!

    有6位网友表示赞同!

【深入解析:Node.js的安装与模块加载原理】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

上一篇:Struts2框架下载及安装指南 下一篇:逆风飞扬:一段青春的逆袭之旅