Node.jsを使用したPHPのようなオートローダー
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();
これを達成していると思われる解決策が見つかりませんでした。
何かが恋しかったですか?
答え :
解決策:
2020年12月に編集
Yarn2は、PHPのオートローダーを模倣しているように見えるPlug'n'Playという機能をリリースしました: https:/ / yarnpkg.com / features {- code-6} pnp
一部のパッケージに問題があることがわかっていますが、私はそれを自分でテストしていません。
簡単な答えは次のとおりです。いいえ
詳細については、続きを読んでください:
現在の方法require
またはimport
には2つの大きな課題があります作業:
- 相対パスは読みにくく、同じ名前のファイルを使用すると混乱する可能性があります。
- 開発者は、コードをリファクタリングしたり、別のファイル内でファイルがどこにあるかを見つけたりするために、IDEに大きく依存する必要があります。
PHPは独自の標準を開発し、独自のリーグに少し入っているようですが、Node.js / JavaScriptで同じものを実現するための同等のソリューションを誰かが開発したとしても、それでも優れたものが必要です。 IDEのサポート。優れたIDEサポートを得るには、このタイプの変更は次のいずれかになります。
- 透過的であり、IDEが現在機能する方法に統合する必要があります。
- コミュニティ自体によって推進される変更である(
require
またはimport
絶対パスをサポートできる変更)いくつかの答えがありますここ( https:/ / gist.github.com / branneman / 8048520 )そしてそれらはすべてIDEサポートを破っているようです(私はWebStormでのみテストしました):
- エイリアスの使用またはパスの前に変数を追加:オートコンプリートと名前変更/リファクタリングのIDEサポートを解除します。
- ルートパスとしてのNODE_PATHの使用:オートコンプリートと名前変更/リファクタリングのIDEサポートを解除します。
require
をラップして/
をサポート:名前を変更するときにIDEサポートを解除します{- code-6}リファクタリング。- 新しいカスタムメソッドの作成:オートコンプリートのIDEサポートを解除します。
全体として、IDEのサポートがコードの可読性よりも優先されることを考えると、Node.jsを使用して現在の依存関係管理に変更を実装するには、そのような変更の背後にコミュニティがなければ良い方法はないようです。
答え :
解決策:
PHPとまったく同じではありませんが、類似していて非常に便利です。私はこのパッケージが好きです。少し古いですが、間違いなく正しい方向です。
https://github.com/Specla/Autoloader
データベースモデルの場合、私のようにSequelizeを使用している場合は、かなり良いです。 https://github.com/boxsnake/sequelize-autoload
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。