node.js中的require使用详解

代码注释里已经描述的非常的清晰,这里就不多废话了,直接奉上代码:

代码如下:

/*在node中,可以使用require()函数来加载模块.
 * require函数使用一个参数,参数值可以带有完整路径的模块的文件名,也可以为模块名.当使用node中提供的模块时,在require函数中只需要指定模块名即可.
 * */
//建立一个页面2.js;代码如下
var name="思思博士";
exports.name=name;
//建立一个页面1.js;代码如下
var two=require("./2.js");
console.log(two.name);
//输出结果:思思博士

/*
 * 在node中所有的脚本文件都是一个模块文件,因此1.js也是一个模块文件,又由于该文件是在命令行窗口中通过node命令被直接运行的,因此在node中该模块文件被定义为应用程序的主模块
 * 可以用如下的方法检测出当前的模块是否是主模块
 * */
if(module===require.main){
    console.log("当前模块时主模块");
}
//输出结果:当前模块时主模块

//2.js代码
var name="思思博士";
console.log(name);
exports.name=name;

//1.js代码:
var two=require("./2.js");
var two=require("./2.js");
//虽然引用了2次,但是只是执行了1次console.log(name)的输出.

/*require.resolve(str)
 * 在node中,可以使用这个函数来查询某个模块文件的带有完整绝对路径的文件名.
 * */
var url=require.resolve("./2");
console.log(url);
//输出结果:E:\node\gys\2.js

/*require.cache
 * 在node中,这个属性代表了所有已被加载模块的缓存区.
 * */

var two=require("./2.js");
var cache=require.cache;
console.log(cache);
/*输出结果:
 * { 'E:\\node\\gys\\1.js':
 { id: '.',
 exports: {},
 parent: null,
 filename: 'E:\\node\\gys\\1.js',
 loaded: false,
 children: [ [Object] ],
 paths:
 [ 'E:\\node\\gys\\node_modules',
 'E:\\node\\node_modules',
 'E:\\node_modules' ] },
 'E:\\node\\gys\\2.js':
 { id: 'E:\\node\\gys\\2.js',
 exports: { name: '思思博士' },
 parent:
 { id: '.',
 exports: {},
 parent: null,
 filename: 'E:\\node\\gys\\1.js',
 loaded: false,
 children: [Object],
 paths: [Object] },
 filename: 'E:\\node\\gys\\2.js',
 loaded: true,
 children: [],
 paths:
 [ 'E:\\node\\gys\\node_modules',
 'E:\\node\\node_modules',
 'E:\\node_modules' ] } }
 * */

//2.js代码
var name="思思博士";
console.log(name);
//1.js代码
//当使用delete关键字删除缓存区中缓存的某个模块对象后,下次加载该模块时将重新运行该模块中的代码.使用代码:

var two=require("./2.js");
var two1=require("./2.js");
console.log("删除前")
delete require.cache[require.resolve("./2.js")];
console.log("删除后");
var two2=require("./2.js");
/*
 * 输出结果:
 * 思思博士
 * 删除前
 * 删除后
 * 思思博士
 * */

小伙伴们是否清楚了node.js中require的使用方法了呢,如有疑问,请留言。

(0)

相关推荐

  • Node.js中的require.resolve方法使用简介

    前言 网上关于NodeJs的论述很多,此处不多说.个人认为,NodeJs的编程思想和客户端Javascript保持了一种理念,没有什么变化,只是增加了"require()"函数,因此只要学好require函数,剩下的问题就是如何更好的使用API了.本文则主要介绍了Node.js中的require.resolve方法,下面来看看详细介绍吧. 简单的说,在 Node.js 中使用 fs 读取文件的时候,经常碰到要拼一个文件的绝对路径的问题 (fs 处理相对路径均以进程执行目录为准). 之前

  • 简单模拟node.js中require的加载机制

    一.先了解一下,nodejs中require的加载机制 1.require的加载文件顺序 require 加载文件时可以省略扩展名: require('./module'); // 此时文件按 JS 文件执行 require('./module.js'); // 此时文件按 JSON 文件解析 require('./module.json'); // 此时文件预编译好的 C++ 模块执行 require('./module.node'); // 载入目录module目录中的 package.js

  • node.js使用require()函数加载模块

    详细说明均以写在注释之中,这里就不啰嗦了,小伙伴们自己详细看吧,千万别吧注释当成空气了. 复制代码 代码如下: /*在node中,可以使用require()函数来加载模块.  * require函数使用一个参数,参数值可以带有完整路径的模块的文件名,也可以为模块名.当使用node中提供的模块时,在require函数中只需要指定模块名即可.  * */ //建立一个页面2.js;代码如下 var name="思思博士"; exports.name=name; //建立一个页面1.js;代

  • Node.js中require的工作原理浅析

    几乎所有的Node.js开发人员可以告诉你`require()`函数做什么,但我们又有多少人真正知道它是如何工作的?我们每天都使用它来加载库和模块,但它的行为,对于我们来说反而是一个谜. 出于好奇,我钻研了node的核心代码来找出在引擎下发生了什么事.但这并不是一个单一的功能,我在node的模块系统的找到了module.js.该文件包含一个令人惊讶的强大的且相对陌生的核心模块,控制每个文件的加载,编译和缓存.`require()`,它的横空出世,只是冰山的一角. module.js 复制代码 代

  • node.js require() 源码解读

    2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式. 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS 格式. 这种格式的核心就是 require 语句,模块通过它加载.学习 Node.js ,必学如何使用 require 语句.本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制. 一.require() 的基本用法 分析源码之前,先介绍 requir

  • node.js中的require使用详解

    代码注释里已经描述的非常的清晰,这里就不多废话了,直接奉上代码: 复制代码 代码如下: /*在node中,可以使用require()函数来加载模块.  * require函数使用一个参数,参数值可以带有完整路径的模块的文件名,也可以为模块名.当使用node中提供的模块时,在require函数中只需要指定模块名即可.  * */ //建立一个页面2.js;代码如下 var name="思思博士"; exports.name=name; //建立一个页面1.js;代码如下 var two=

  • 在Node.js中使用Javascript Generators详解

    Generators是Javascript的一种协同程序( coroutine 简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配以星号符号形式如function* ,函数内有些特征关键词如yield 和yield*. function* generatorFn () { console.log('look ma I was suspended') } var generator = generatorFn() // [1] setTimeout(functio

  • node.js中的事件处理机制详解

    EventEmitter类 在Node.js的用于实现各种事件处理的event模块中,定义了一个EventEmitter类.所有可能触发事件的对象都是一个集成了EventEmitter类的子类的实例对象,在Node.js中,为EventEmitter类定义了许多方法,所有与对象的事件处理函数的绑定及解除相关的处理均依靠这些方法的调用来执行. EventEmitter类的各种方法 event:代表事件名 listener:代表事件处理函数 中括号内的参数代表该参数为可选参数 方法名与参数 描述 a

  • Node.js中的child_process模块详解

    前言 本文主要给大家介绍了关于Node.js中child_process模块的相关内容,在介绍child_process模块之前,先来看一个例子. const http = require('http'); const longComputation = () => { let sum = 0; for (let i = 0; i < 1e10; i++) { sum += i; }; return sum; }; const server = http.createServer(); ser

  • Node.js中的事件驱动编程详解

    在传统程编程模里,I/O操作就像一个普通的本地函数调用:在函数执行完之前程序被堵塞,无法继续运行.堵塞I/O起源于早先的时间片模型,这种模型下每个进程就像一个独立的人,目的是将每个人区分开,而且每个人在同一时刻通常只能做一件事,必须等待前面的事做完才能决定下一件事做什么.但是这种在计算机网络和Internet上被广泛使用的"一个用户,一个进程"的模型伸缩性很差.管理多个进程时,会耗费很多内存,上下文切换也会占用大量资源,这些对操作系统是个很大的负担,而且随着进程数的递增,会导致系统性能

  • node.js命令行教程图文详解

    本文先介绍原生的node.js实现命令行交互,了解原生的api,然后通过commander.js和inquirer.js实现一个完整的交互命令行工具. 项目地址 process (进程) process对象是一个全局变量,它提供了当前node.js进程的信息并对其控制.因为其是一个全局变量所以无需在文件中引入. 需要用到的几个api process.argv process.cwd() process.stdin process.stdout process.stdin.resume() pro

  • Node.js基础模块babel使用详解

    目录 安装配置 使用babel 实际例子 类的转化 babel-polyfill 前言: 由于ES6到ES7增加了很多新的语法,新特性的出现使得大家都希望通过新语法来提升自身的开发效率,但在之前的最新的node可能也没有百分之百的支持ES2017的新特性,而且开发者在开发环境和生产环境中的版本一般是不同的,所以新特性的代码可能不能完美的运行在线上环境中,为了解决难题,babel提供一系列的api来将新特性的语法转化成低版本环境中能够运行的代码 安装配置 babel是由一系列的组件构成,所以我们在

  • 开箱即用的Node.js+Mysql模块封装实现详解

    目录 前言 正文 项目目录 sql.js dbconfig.js db.js 增 删 改 查一个 查全部 paramList 如何使用 搞定 前言 最近在写毕设,采用的是学弟+自己的技术栈,运用Vue3+ElementPlus搞前端,Node.js express做后端,毕竟,java那东西确实不在我技术栈里. 于是乎,我抱着能CV就不要自己敲的心态,前去了某C站,C回了一个封装好了看上去存在可用性的基础sql模块,结果,踩了大坑. 痛定思痛,我采用了学弟+腾讯会议的debug方式,于事发当天下

  • node.js连接mongoose数据库方法详解

    目录 创建项目命令 连接mongoose数据库 配置跨域 运行 创建项目命令 express --view ejs 项目名 进入项目,我们需要npm i 下载配置文件 有时候会出先端口已经被占用的情况,我们可以在bin目录下www文件中修改端口 连接mongoose数据库 我们创建一个新的文件夹,然后在文件夹下创建一个连接mongoose数据库的文件,代码如下 var mongoose=require('mongoose') mongoose.connect('mongodb://127.0.0

  • Node.js+Express配置入门教程详解

    Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好.Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好.Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型

随机推荐