問題タブ [commonjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
titanium - AppceleratorおよびCommonJSモジュール(キャッシングおよび循環参照)
つまりね:
CommonJSの方法でモバイル(iPhone / Android)アプリケーションをモジュール化しています。そこに驚きはありません。しかし、頭を動かすことができないことが1つあります。
CommonJSを使用すると、STATICプライベート変数を作成できます。これにより、シングルトンを簡単に作成できます。これは、少なくとも、require()
dを取得するファイルの内容が一度だけ読み取られ、その後、エクスポートオブジェクト(一度だけ初期化される)が毎回返されるためだと思います。
しかし、以下に示すように循環参照を作成すると、含まれているモジュール内のコードが毎回実行されます。
待ってください...
面白いことに、この質問を書いているときrequire()
に、次の呼び出しが始まる前に終了する呼び出しがないことに突然気付きました(したがって、スタックオーバーフローを以下に示します)。
私が順調に進んでいるかどうかについて何か考えはありますか?ここは午前5時を過ぎているので、私に関する限り、すべての賭けはオフになっています:D。
例:
このコードを参照してください。シングルトンを定義しています。
私はrequire()
このファイルをそのようにしています:
出力は次のとおりです。
それでは、なぜ次のような循環参照が機能しないのですか?(私はすでにこれを自分で答えたかもしれません、あなたが望むならそれについてコメント/答えてください)。
app.js
Pinapple.js
Banana.js
出力は次のとおりです。
javascript - CommonJS を使用して Spine で Stylus を要求するにはどうすればよいですか?
Spine アプリで Stylus が提供するJavaScript APIを使用したいと考えています。
これを行うには、Stylus が必要です。
Stylus は Hem の依存関係であるため、index.coffee でそれを要求しようとしました。
しかし、これはエラーになりました:
次に、package.jsonにStylusを個別に含めてみました
そして私のslug.jsonで
しかし、これによりサーバーログにエラーが発生しました:
Stylus を要求し、Spine でその API を利用するにはどうすればよいですか?
javascript - CommonJSモジュールのJava7+ Rhino 1.7R3サポート?
CommonJSをJava7とRhino1.7R3で動作させるためのサポートが必要です。
Rhino 1.7R3は、CommonJSモジュールをサポートしています。
また、Java7にはRhino1.7R3がバンドルされています。org.mozilla.javascript.commonjs
残念ながら、Java 7のRhinoは変更されたバージョンであり、次のパッケージは含まれていません。
javax.script
次のように、APIを介してRhino1.7R3のCommonJSのサポートを使用したいと思います。
(ScriptEngineManager
実際にRhino 1.7R3エンジンを使用していることを確認しました。)おそらく、クラスパスに次の依存関係を追加するだけでよいと思いました。
CommonJS(具体的には)がrequire()
機能し始めます。しかし、そうではありません。使おうとするrequire()
と
CommonJSサポートを利用できるようにJava7をRhino1.7R3のフルバージョンで動作させるにはどうすればよいですか?
編集:私はまったく同じトピックを扱っている次の質問を見つけました:
健全性チェック:Rhinoにはrequire関数がありませんよね?
回答者は、限定されたRhino1.7R3をCommonJSRhino 1.7R3に置き換えることは可能かもしれないと示唆していますが、それをどのように行うかについては述べていません。それが私がここで求めていることです。
node.js - CoffeeScriptとNodeJS:複数のクラスをエクスポートするにはどうすればよいですか?
Dog
いくつかのクラス、たとえば、をエクスポートしたいと思いCat
ます。これを実行する1つの方法は次のとおりです。
クラス名を2回入力せずに、同様のことを行うにはどうすればよいですか?
javascript - WinJS.Promise が期待どおりに機能しない
Windows 8 JavaScript アプリで作業していますが、WinJS.Promise が期待どおりに機能しません。これが私の非同期メソッドです...
そして、これが私がそれを呼んでいるものです...
これはボタンクリックです。ボタンをクリックした後、ステータス div が「作業中」と非常に短く言うことを期待しますが、5 秒間「無料」と言い、5 秒の遅延が完了すると最後に「完了」と言うでしょう。代わりに、UI スレッドが 5 秒間ブロックされ、ステータス div に「free」と表示されます。
ステータスを「free」にする行まで実行が戻ると思っていたのですが、デバッグするとその前にpromise関数にヒットしていることが分かります。そのため、ステータスは 5 秒後に「完了」に設定され、その後「無料」に設定されます。言い換えれば、私の非同期関数は単に非同期的に動作していません。
asynchronous - モジュールの非同期の問題-チタン
モジュール(mapview、network、geolocationsなど)を作成しようとしていますが、非同期の問題に直面しています。たとえば、geolocation.jsがあります。
//現在の位置情報サービスを使用する許可をユーザーに求めます
//現在の場所を取得します(1回起動します)
Titanium.Geolocation.getCurrentPosition(function(e){
}
app.jsから呼び出したい:var location = require('/ geolocation'); var latlon = location.getLocation(); ただし、getCurrentの位置は非同期であるため、「return lat+lon」を使用するとnullになります。コールバックを試しましたが、getLocationの値を返すことができません。この非同期関数を管理する一般的な方法はありますか?
android - Titanium:commonjsモジュール内にモジュールが必要です
ネイティブまたはWebモジュールの代わりにCommonJSモジュールを作成できることを発見しました(Titaniumフォルダーを見て、ti.cloudモジュールを検索してください)。しかし、それを説明する私が見つけることができるドキュメントはありません...
そこで、Titaniumフォルダー「commonjs」内に独自のCommonJSモジュールを追加し、「require」を使用してアプリケーションにインポートしようとしました。それは魅力のように実行されます。
ここで、CommonJSモジュールに他のファイルをいくつか追加し、モジュール内でモジュールが相互に参照するようにします。
たとえば、私のアプリには次のものがあります。
- main.js
- ui
- CommonView.js
この構造では、main.jsが私のメインモジュールであり、モジュールCommonView(require('./ ui / CommonView'))を要求しようとするメソッドcreateCommonView()がありますが、コンパイラーはモジュールが見つからないと文句を言います。
相互に参照する複数のモジュールでCommonJSモジュールを作成するにはどうすればよいですか?
正確には、これらのモジュールをプロジェクト内にコピーしたくありません。すべてのプロジェクトで利用できるように、それらをTitaniumフォルダーに保持したいと思います。
javascript - Closure Compiler は CommonJS モジュールをビルドできますか
Google Closure Compilerを使用してCommonJSモジュールのセットを構築したいと考えています。これは箱から出して行うことができますか?または、CommonJS モジュールを Closure Compiler で使用できるようにする簡単な変換はありますか?
javascript - Node.js およびクライアントと連携する CommonJS 構造を使用する Backbone.js アプリケーション
Javascript モジュールを必要とすることができる CommonJS 構造を使用して、BackboneJS アプリケーションで記述する方法を検討しています。このアプリケーションは、ノードを使用してクライアント側またはサーバー側で動作する可能性があります。
私はrequirejsやその他の同様のオプションを調べましたが、私の意見では本当に面倒に見える特定の方法でアプリを作成する必要があります.
また、コードと必要なモジュールを取り、欠落している (必要な) メソッドを含む単一の js ファイルに結合するbrowserifyとwebmakeも調べました。すべてが巧妙なアイデアですが、クライアント側のコードは少し面倒です。
commonJS 形式で記述されたコードを取り、ブラウザーと互換性のあるすべての必要なモジュールをコンパイルし、心配することなくブラウザーで使用できる Javascript ファイル (またはいくつか) を吐き出すことができるようなものはありますか?欠落しているrequireメソッドについて? バックボーン アプリケーションに合わせて調整されたソリューションは、さらに優れています。
javascript - CommonJSモジュールを定義するときのfn.call(this)とfn()
CommonJSモジュールは、次のイディオムを使用して定義されているのが一般的です。
私はちょうど30分を同僚と話し合って、なぜ彼らがでクロージャーを呼び出すのかを話し合っていcall(this)
ます。これによりthis
、クロージャ内の値は、グローバルオブジェクトに設定されるのではなく、呼び出し元から継承されます。ただし、これをNode.jsでテストした場合this
、モジュール内の値は、次のようにロードして実行した場合でも、常にグローバルオブジェクトでした。
コンソールにオブジェクトが表示されることを本当に期待していましたbar
が、実際にはグローバルオブジェクトが表示されます。その後、Underscore.jsなどのモジュールがWebコンテキストでも使用されていることが原因である可能性があることに気付きました。ただし、その場合は<script>タグがロードされるためthis
、とにかく常にグローバルオブジェクトと等しくなります。
何が得られますか?この構成を使用する理由は確かにありますが、モジュールがNode.jsで使用されているか、Webページで使用されているかにかかわらず、この特定のケースで実際的な違いはわかりません。
更新:明確にするために、これが違いを生む可能性のあるいくつかのケースを考えることができます。たとえば、私が言う場合:
(元の例を修正してくれた@Pointyに感謝します。)
モジュール内のクロージャは、が呼び出されたときに評価されることを期待します。つまり、モジュール内require()
の値はグローバルオブジェクトにバインドされ、「バー」のメンバーとして呼び出されてthis
もコンソールに書き込まれます。 foo()
" 物体。ただし、この例でも、コンソールに「bar」オブジェクトが表示されています。私はそれthis
が私が期待したように閉鎖に縛られていないと思いますか?
一言で言えば、Underscore.jsのようなモジュールが、Node.jsまたはWebページのいずれかで、fn.call(this)
だけでなくで呼び出されたクロージャーにラップされているために、異なる動作をする1つの例を探しています。fn()