【问题标题】:Node.js - To Load All Files, or Not To Load All Files, that is my questionNode.js - 加载所有文件,或不加载所有文件,这是我的问题
【发布时间】:2021-04-27 13:36:09
【问题描述】:

我是一名终身 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');

这是首选方法吗?

如果是,为什么?

为什么不使用自动加载器,只在需要时才加载文件?

我正在网上搜索,但没有找到任何可以清楚解释这一点的内容。如果您有文章对您有帮助,我们将不胜感激。

【问题讨论】:

  • 索引文件的本质是一次导出所有模型,同时仍然单独缩放和更新它们。这是 javascript 中的常见做法。
  • 感谢 dev_integral。

标签: javascript node.js autoload


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,这澄清了事情。这就像 .NET,所有内容都加载到内存中,因此在您使用应用程序时速度会更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多