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

时间:2021-04-27 13:36:09

标签: javascript node.js autoload

我是一名终身 LAMP 开发人员,并且习惯于在需要时使用自动加载器加载类,但直到那时才开始,但现在正在学习 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 个答案:

答案 0 :(得分:2)

您不会使用自动加载器,因为它没有 - 与 PHP 完全不同。在 PHP 中,有一个全局符号表——一个类名意味着什么,不管它在哪里使用。因此,如果您调用类 CarModel,则可以全局引用该名称。当您按名称引用它时,自动加载器可以找到该文件。这由 PSR-4(自动加载器)提供帮助,它根据名称空间和名称指定在何处查找类文件。

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

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

还有一个反对意见:如果可以预加载,为什么还要延迟加载文件?与 PHP 应用程序不同,Node.js 进程通常是长时间运行的,因此启动阶段可以根据需要进行尽可能多的时间——因为这样你最终会一直使用已经加载的代码,而不是进行昂贵的文件系统调用,如果用户尝试做一些新的事情。

相关问题