使用Node.js的PHP-Like Autoloader

问题描述 投票:2回答:1

我正在慢慢地从PHP转换到Node.js,并试图找到类似于composer dumpautoload的东西。感谢PSR-4,当在每个文件的开头使用此命令和简单的use语句时,很容易访问PHP中任何文件中的任何类。

npm似乎在管理包和依赖项方面表现出色,但在您自己的项目中具有相同的灵活性将避免创建require语句,如果文件更改路径,这些语句很容易中断。

我要找的例子 - 同一文件夹中的2个文件:

一些testClass.js(类文件)

var testClass = {
    sayHello: function () {
        console.log('this is a test');
    }
};

module.exports = testClass ;

通常这是你要放在另一个文件index.js文件中:

var testClass = require('./testClass');

testClass.sayHello();

但是想象一下你可以用一些应用程序或命令预先索引你所有的类(比如PHP的composer dumpautoload,只需运行它:

var testClass = require('testClass');

testClass.sayHello();

我找不到任何似乎可以实现这一目标的解决方案。

我错过了什么?

php node.js npm dependency-management autoloader
1个回答
2
投票

最简洁的答案是不

有关详细信息,请继续阅读:

目前requireimport目前的工作方式有两个主要挑战:

  1. 相对路径难以阅读,并且在使用具有相同名称的文件时会变得混乱。
  2. 开发人员必须严重依赖IDE来重构代码或查找文件在另一个文件中的位置。

虽然PHP似乎已经开发了自己的标准并且有点在自己的联盟​​中,即使有人会开发一个等效的解决方案来实现Node.js / JavaScript的相同,我们仍然需要良好的IDE支持。为了获得良好的IDE支持,这种类型的更改将:

  1. 需要透明并集成到IDE当前的工作方式。
  2. 是一个由社区本身驱动的变化(requireimport变化可以支持绝对路径)

herehttps://gist.github.com/branneman/8048520)有几个答案,它们似乎都破坏了IDE的支持(我只用WebStorm测试过):

  1. 使用别名或在路径前加上变量:打破IDE对自动完成和重命名/重构的支持。
  2. 使用NODE_PATH作为根路径:中断IDE对自动完成和重命名/重构的支持。
  3. 包装require以支持/:在重命名/重构时中断IDE支持。
  4. 创建新的自定义方法:中断IDE对自动完成的支持。

总的来说,鉴于IDE支持优先于代码可读性,看起来没有好的方法来使用Node.js实现对当前依赖关系管理的更改,而不需要社区支持这种更改。

© www.soinside.com 2019 - 2024. All rights reserved.