提问者:小点点

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


我是一个长期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个答案

匿名用户

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

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

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

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