現在、インスタンス変数を共有したいと考えています。たとえば、データベースに接続するには、main.js でデータベースがインスタンス化された後、データベースを使用する他のモジュールがデータベースを再度インスタンス化する必要があります。
例: main.js
リーリーユーザー.js
リーリー現時点では、redisApi 変数が未定義であることを示すエラー メッセージが報告されます。
しかし、変数の初期化に eval を使用するように切り替えた後は、状況が異なりました。
メイン.js
リーリー現時点では、他のモジュールは redisApi 変数を共有できます。
なぜ eval でこれができるのでしょうか? 誰か説明できますか?
ここでは、Node.js のモジュールがどのようにロードされるかを理解する必要があります。
リーリーブラウザと同様に、Node.js の実行環境には DOM ウィンドウ オブジェクトに似たグローバル オブジェクトがあります。
同様に、
コードの説明を直接見てください:
それをあなたのコードと比較することでそれを理解することができます。実際に効果があるのは、
redisApi = new RedisApi();
,eval (
`let redisApi;`);
によって宣言された変数が別の独立したスコープにあり、実際にはアクセスできないということです。これは es6 のオリジナルのテキストからの引用です。このように設定されているため、結果は得られますが、この方法でプレイすることは一般的に推奨されません。