NodeJs notebook

本文详细记录了使用NodeJS时遇到的问题及答案,包括模块内部this的使用、require函数的工作原理、加载顺序等核心内容。通过实践代码展示了如何自定义require函数,并深入解析了NodeJS的模块加载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习了一段时间比较火的NodeJS,  记录一下我的问题和我理解的答案。

 

1.  为什么一个module中的this 不是global对象 而是 exports ? require是怎么实现的?

我试着用javascript  实现一个自己require 函数, 输入代码字符串,得到一个exports对象

 

 

function myRequire(content){
    var exports = {};
    function run(){
        eval(content);
    };
    run.call(exports);
    return exports;
}
var script =
    "exports.add = function(a,b){return a+b;};" +
        "console.log(this);";
var add = myRequire(script).add;
console.log(add(2,2));
 

2012年6月7日

 

2.  require 函数的加载顺序?

绝对和相对路径加载:   如果没有写明扩展名, 按  .js  -->  .node (已编译node插件) 用 dlopen加载

只是模块名:  核心模块(lib/) --> 各级目录中的 node_modules  (就近原则)

                             如果已经在node_modules ,  而且没有找到的话 , 只找上层node_modules 目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值