Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从姐妹文件Node.JS导入函数_Javascript_Node.js_Import_Require - Fatal编程技术网

Javascript 从姐妹文件Node.JS导入函数

Javascript 从姐妹文件Node.JS导入函数,javascript,node.js,import,require,Javascript,Node.js,Import,Require,我希望用一种非抽象的方式来解释这一点。我有一个问题,我相信我正在推进节点的边界,因为似乎没有太多关于这个特定主题的文档 首先,这是我的文件布局 //main.js var 1 = require('1.js'); var 2 = require('2.js'); 第一个文件的目的是将两个子文件加载到进程中 //1.js console.log('Test'); module.exports = function msgUSR(text){ console.log(text); } 这个文

我希望用一种非抽象的方式来解释这一点。我有一个问题,我相信我正在推进节点的边界,因为似乎没有太多关于这个特定主题的文档

首先,这是我的文件布局

//main.js
var 1 = require('1.js');
var 2 = require('2.js');
第一个文件的目的是将两个子文件加载到进程中

//1.js
console.log('Test');
module.exports = function msgUSR(text){
  console.log(text);
}
这个文件的目的是创建一个导出,这个导出很明显可以导入Main.js,但是,我有一种情况,我需要将一个函数从1.js导入2.js,而不需要将整个文件重新加载到内存中

比如说

//2.js
var msgUSR = require('1.js');
msgUSR('blah');
这个设置的问题是,当您需要1.js时,它会重新加载整个文件,包括任何不是导出的代码

我怎么能只导入文件的导出而不加载不相关的代码呢

谢谢大家!!我知道有人能解决这个问题

编辑: 我知道这里的代码不会复制任何有用的数据。我的观点是,如何在父文件已经需要的另一个JS文件中要求函数。我需要能够从姐妹文件调用函数,而不是在两个不同的文件中编写完全相同的两个长而大的函数。 这就是为什么这是一个问题。 如果在父级需要该文件之后需要该文件,“Test”将出现两次,象征性地表示还将加载其他复杂代码。 从这个问题中我希望得到的结果是,我可以以这样一种方式要求该文件,以便只从中导入函数。 再次感谢。

这个设置的问题是,当您需要1.js时,它会重新加载 整个文件,包括任何非导出的代码

当您
需要
某些内容时,文件将加载一次,然后缓存

我怎么能只导入文件的导出而不加载 无关代码

一旦文件已经需要,您就不必重新加载它,因为
节点将使用缓存版本

require
功能通常有5个步骤:

  • 解析:查找文件的路径
  • 加载:确定文件内容的类型
  • 包装:为文件指定其私有范围。这使require和module对象都成为我们所需的每个文件的本地对象
  • 评估:这是VM最终对加载的代码所做的
  • 缓存:这样当我们再次需要这个文件时,我们就不会再重复所有步骤了

  • 它会重新加载整个文件,但不会。您发布的代码将导致一个
    测试
    ,因此不清楚问题出在哪里。我发布的代码将导致加载两个测试。。您在发布之前是否尝试过该代码?我猜你没有,因为
    var 1=require('1.js')
    不正确。这个问题没有包含任何内容。你描述的东西是不可能的,除非你使用缓存损坏技术。Node.JS不仅会重新缓存数据,“Test”会出现两次,因为它已经被第二次加载了。在我的实际项目中,我有一些复杂的代码,无法再次加载,但是,我需要一个从1.js到2.js的函数。