我是一名终身 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');
这是首选方法吗?
如果是,为什么?
为什么不使用自动加载器,只在需要时加载文件?
我在网上搜索,但没有找到任何可以清楚解释这一点的内容。如果您有一篇有用的文章,我们将不胜感激。
答案 0 :(得分:2)
您不会使用自动加载器,因为它没有 - 与 PHP 完全不同。在 PHP 中,有一个全局符号表——一个类名意味着什么,不管它在哪里使用。因此,如果您调用类 CarModel,则可以全局引用该名称。当您按名称引用它时,自动加载器可以找到该文件。这由 PSR-4(自动加载器)提供帮助,它根据名称空间和名称指定在何处查找类文件。
在 JavaScript 中,情况并非如此。 有一个全局对象(Node.js 中的 global
,浏览器中的 window
),但是构造——函数、类等——不是全局的,没有什么可用它。例如,当您 require()
具有类实现的文件时,您实际上是在创建一个包含该文件的 exports
值的变量。所以:
还有一个反对意见:如果可以预加载,为什么还要延迟加载文件?与 PHP 应用程序不同,Node.js 进程通常是长时间运行的,因此启动阶段可以根据需要进行尽可能多的时间——因为这样你最终会一直使用已经加载的代码,而不是进行昂贵的文件系统调用,如果用户尝试做一些新的事情。