実装 (node.js、rhino など) を検出する標準的な方法と、CommonJS でのその実装の理想的なバージョンはありますか。
そうでない場合、人々はそれを得るために何をしますか?
HTTP User-Agent
ブラウザの世界のヘッダーに似たものを考えています。
いいえ、ただし、ノード内にいるかどうかを検出できます。たとえば、次のようになります。
if (typeof process !== 'undefined') {
console.log('node!');
}
ノードであることを完全に確認したい場合:
if (typeof process !== 'undefined'
&& process && process.versions
&& process.versions.node) {
console.log('node version:', process.version);
}
他の環境についてはわかりません (Rhino は使用したことがありません)。
しかし、あなたの質問にさらに詳しく答えるために、Node には実装する CommonJS の厳密な「バージョン」がありません。Nodeは 、長い間 CommonJS 仕様に対応していません (完全な実装ではなかった最近の AMD 実装は別として)。