当前位置: 首页 > 知识库问答 >
问题:

node.js--加载所有文件,还是不加载所有文件,这是我的问题

红明德
2023-03-14

我是一个长期LAMP开发人员,并且习惯在需要时使用autoloader加载类,但直到那时才开始,但现在正在学习Node.js。许多示例显示了加载所有文件的文件夹中的index.js文件。

例如:模型

--- CarModel.js

--- TruckModel.js

--- MotorcylceModel.js

--- index.js - this file includes all the models in the folder.

在我的代码中,我使用

  const {CarModel} = require('./index');

这是首选方法吗?

如果是,为什么?

为什么不使用自动装载机,只在需要的时候加载文件呢?

我在网上搜索,但没有找到任何明确解释这一点的东西。如果你有一篇文章对你有帮助,我将不胜感激。

共有1个答案

燕光熙
2023-03-14

您不会使用自动装入器,因为没有自动装入器--这与PHP中完全不同。在PHP中,有一个全局符号表--一个类名意味着什么,不管它用在什么地方。因此,如果调用类CarModel,则可以全局引用该名称。当您通过名称引用它时,自动装入器可以定位该文件。这是由PSR-4(自动装入器)辅助的,它根据类文件的命名空间和名称指定在哪里找到类文件。

在JavaScript中,情况并非如此。有一个全局对象(node.js中的global,浏览器中的window),但结构--函数、类等--不是全局的,与它无关。例如,当require()具有类实现的文件时,实际上是在创建一个包含该文件的exports值的变量。所以:

  • 没有命名空间
  • 类和函数没有全局名称或限定名称

还有一个相反的论点:如果可以预加载,为什么还要延迟加载文件呢?与PHP应用程序不同,Node.js进程通常是长时间运行的,因此启动阶段需要多少就需要多少--因为这样您就会一直使用已经加载的代码,而不是在用户尝试执行新操作时进行昂贵的文件系统调用。

 类似资料:
  • 目前,我正在使用MongoCollection 前: 但我不知道FindIterable是加载所有文档并循环,还是只是加载光标并在稍后循环时获取文档?

  • 有人想要代码更为简洁,便把卸载文件代码修改为: Delete "$INSTDIR\*.*" 然后把多余的删除。以前也这样做过,但后来想到,如果某个菜鸟把我们打包的程序安装在了D盘根目录(或其他分区的根目录),而他又点击了卸载的话,真让人欲哭无泪啊——D盘下面的所有文件都没啦! 所以,安装目录中的文件还是老老实实写代码卸载吧。包括桌面上的快捷方式也不要这样卸载,否则卸载后桌面上会空无一物的! 不过

  • 问题内容: 我想在不知道文件名的情况下将所有图像加载到文件夹中,然后将它们存储到Integer向量中-在运行时。 实际上,我需要执行与本示例相同的操作:http : //developer.android.com/resources/tutorials/views/hello- gridview.html 但是在运行时却不知道文件名。 有什么帮助吗? 在您回答之后,我知道该怎么做…但是我不知道如何

  • 问题内容: 如何在node.js的文件夹中需要所有文件? 需要类似的东西: 问题答案: 给require给出文件夹的路径后,它将在该文件夹中寻找一个index.js文件。如果有一个,它会使用它,如果没有,它将失败。 如果您可以控制文件夹,那么创建一个index.js文件,然后分配所有“模块”,然后简单地要求就可以了。 yourfile.js index.js 如果您不知道文件名,则应该编写某种加载

  • 问题内容: 我有一个.jsp页面,其中有一个GUI表,该表显示来自Oracle数据库的记录。该表允许典型的分页行为,例如“ FIRST”,“ NEXT”,“ PREVIOUS”和“ LAST”。记录是从Java ResultSet对象获得的,该对象是从执行SQL语句返回的。 这个ResultSet可能很大,所以我的问题是: 如果我的ResultSet包含一百万条记录,但是我的表仅显示ResultS

  • 问题内容: 我想使用Java读取文件夹中的所有图像。 什么时候: 我按下Java应用程序中的按钮, 它应该: 在弹出窗口中询问目录的路径, 然后 从该目录加载所有图像, 然后 显示其名称,尺寸类型和尺寸。 如何进行? 我有用于读取图像以及文件夹中所有图像的代码,但是我上面所说的事情如何完成? 欢迎任何建议或帮助!请提供参考链接! 问题答案: 未经测试,因为未在装有JDK的计算机上进行测试,所以请耐