問題タブ [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.

0 投票する
3 に答える
4049 参照

node.js - node.js-ライブプロセスへの評価

誰かが既存のnode.jsREPLを使用して自分のためにこのようなものを設定しましたか?私はそれを行うための迅速な方法を考えていませんでした。

私が今日それをする方法はemacsとこれを使うことです: https ://github.com/ivan4th/swank-js

このモジュールは次のもので構成されています。

  1. emacsへのSLIME-jsアドオンは、js2-modeと組み合わせて、関数defの本体のどこかにCMxを発行するだけで、関数の文字列を.に送信します。

  2. Node.jsで記述されたSwank-jsサーバー(はい、ローカルマシンからリモートプロセスに直接評価できます)-評価した関数の文字列を受け取り、実際に評価します

  3. ブラウザを使用してそのサーバーの別のポートに接続し、そのブラウザでDOMを操作できるようにする全体(これは非常に素晴らしいですが、関連性はありません)

私のソリューションはemacs側でSLIME-jsを使用しており、app.jsファイルにrequire('swank-js')があります

今..私は私の解決策または他の可能なものに関していくつかの問題と質問があります:

Q1:これはやり過ぎですか?誰かがnanoから彼のライブプロセスにものを評価する秘密の方法を持っていますか?

Q2:swank-jsの評価方法を変更する必要がありました。次のような黒魔術を使用しました。

私が理解している限り、これはグローバル変数を新しいコンテキストにコピーするだけであり、evalを実行しても、元の関数定義は変更されません-SOOO..私は単純な「eval」とITWORKSを使用しています。

これについて何かコメントはありますか?

Q3:関数を再評価するには、それがGLOBAL関数である必要があります-すべての関数定義をグローバル(clojureのような)として持つのは悪い習慣ですか?これを行う別の方法があると思いますか?

0 投票する
2 に答える
55075 参照

javascript - RequireJS:単一の「クラス」を含むモジュールを定義する方法は?

それぞれが独自のJavaScriptファイルに実装されているJavaScript「クラス」がいくつかあります。開発の場合、これらのファイルは個別にロードされ、本番の場合、それらは連結されますが、どちらの場合も、ロード順序を手動で定義する必要があります。BがAを使用する場合は、BがAの後に来るようにします。CommonJS Modules / AsynchronousDefinitionを使用して、この問題を自動的に解決します。

それぞれが1つのクラスをエクスポートするモジュールを定義するよりも、これを行うためのより良い方法はありますか?そうでない場合、モジュールがエクスポートするものにどのように名前を付けますか?以下の例のように、クラス「Employee」をエクスポートするモジュール「employee」は、私には十分に乾燥しているとは感じません。

0 投票する
7 に答える
29865 参照

javascript - RequireJS / AMDで循環依存を処理する方法は?

私のシステムでは、開発中にブラウザにそれぞれ個別のファイルがロードされ、本番用に連結された多数の「クラス」があります。Gロードされると、次の例のように、グローバルオブジェクトのプロパティを初期化します。

私自身のグローバルオブジェクトを使用する代わりに、James Burkeの提案に基づいて、各クラスを独自のAMDモジュールにすることを検討しています。

問題は、以前は従業員と会社の間に宣言時の依存関係がなかったことです。宣言は任意の順序で配置できましたが、今ではRequireJSを使用すると、依存関係が導入されます。これは(意図的に)循環しているため、上記のコードは失敗します。もちろん、では、最初の行をaddEmployee()追加すると機能しますが、このソリューションは、開発者である私がこの新しく作成された循環依存関係を認識して何かを行う必要があるため、RequireJS/AMDを使用しない場合よりも劣ると思います。var Employee = require("Employee");

RequireJS / AMDでこの問題を解決するためのより良い方法はありますか、それとも私はRequireJS / AMDを設計されていないものに使用していますか?

0 投票する
2 に答える
1514 参照

node.js - アップロードしたファイルをhttpで投稿するにはどうすればよいですか?

エクスプレスアプリでこれに相当する方法を教えてください。つまり、Facebookにファイルを投稿します。

私は以下を使用して、リポジトリの例からファイルをアップロードしています。

0 投票する
7 に答える
40091 参照

javascript - 「バニラ」Javascript ライブラリを Node.js にロードする

Node.js サーバーで使用したい機能を備えたサードパーティの Javascript ライブラリがいくつかあります。(具体的には、私が見つけた QuadTree JavaScript ライブラリを使用したいと考えています。)しかし、これらのライブラリは単純な.jsファイルであり、「Node.js ライブラリ」ではありません。

exports.var_nameそのため、これらのライブラリは、Node.js がそのモジュールに期待する構文に従っていません。私が理解している限り、それは、あなたがそうするmodule = require('module_name');module = require('./path/to/file.js');、公的にアクセス可能な関数などを持たないモジュールになってしまうことを意味します.

私の質問は、「任意の JavaScript ファイルを Node.js にロードして、その機能を書き換えなくても利用できるようにするにはどうすればよいexportsですか?」ということです。

私は Node.js に非常に慣れていないので、それがどのように機能するかについての理解に明らかな穴がある場合はお知らせください。


編集: 物事をさらに調査すると、Node.js が使用するモジュールの読み込みパターンは、実際にはCommonJSと呼ばれる Javascript ライブラリを読み込むために最近開発された標準の一部であることがわかりました。これはNode.js のモジュール ドキュメント ページに記載されていますが、今まで見逃していました。

私の質問に対する答えは、「あなたのライブラリの作成者が CommonJS インターフェースを書き始めるまで待つか、それとも自分でやるか」ということになるかもしれません。

0 投票する
2 に答える
1701 参照

javascript - Getting started with Yabble--browser-side CommonJS module loading

Is anyone familiar with Yabble or other browser-side CommonJS loaders?

I'm experimenting with Node.js and would very much like to create Javascript modules which can be used interchangeably on the server side and the client side. This may end up being more a "because it's awesome" kind of thing more so than "because it's practical and useful" kind of thing.

As such, I'm basically trying to get the CommonJS require() method to work on the browser-side, which is exactly what Yabble is supposed to do. I don't really know where to start with it though. I can't seem to find any documentation other than what's found in Yabble's Github readme, and that's not helping much.

Essentially all I've done is put this in an HTML page...

#xA;

But anytime I call the require() function all I get a Synchronous require() is not supported. exception thrown.

Can someone help me get started? Where am I supposed to load yabble.js where am I supposed to call require? Is there a special way to run my Javascript modules?

0 投票する
2 に答える
692 参照

javascript - Node.js で読み込まれたモジュールのパスを決定する

Node.js で、モジュールがロードされたファイルシステムの場所を特定する方法はありますか?

Node.js がどのディレクトリ コンテキストで実行されているかという意味ではありませprocess.cwd()。メモリ内にあるモジュールについて特定のことを知りたいです。

たとえば、Pythonでは次のことができます...

osこれは、モジュールがファイルシステムのどこにあるかを示しています。Node.jsで似たようなことをする方法はありますか?


注:以前の質問をしたときにこの質問をしようとしていましたが、表現が不十分で、別の質問への回答を得ることになりました。

0 投票する
2 に答える
2621 参照

javascript - アーキテクチャ クエリ.. Node.js を使用したサービス/メッセージ バスの構築

したがって、外部デバイスからのメッセージのストリームを提供するさまざまなデータソースがあるという状況です。シリアルポートでメッセージを送信するものもあれば、UDP を介して送信するものもあれば、Telnet を介して送信するものもあります。小さな Node.js を構築したいこれらの各ソースからメッセージを受信するシステム。全部で約20のソース。

これらのメッセージを中継したいさまざまな場所があり、クライアントが telnet 経由で接続してこれらのメッセージを受信できるようにしたいと考えています。

「サービスバス」とか「メッセージバス」と呼んでもいいと思います。

現時点では、それをどのように構造化するかについてのアイデアを蹴っているだけです。すべてを実行する1つの巨大なnode.jsファイルは必要ありません..

各「レシーバー」をメインのnode.jsファイルの外部.jsファイルに配置したい..以下の私のアプローチはOKですか、私のアプローチに改善できる点はありますか?

メイン Node.js ファイル

2 つの「レシーバー」を取り込みます。これらのそれぞれが、データソースからの受信メッセージを処理します。

pagerreceiver.js - サンプル メッセージ レシーバー

シリアル ポートからメッセージを受信します。

これは node.js システムを分割する適切な方法でしょうか? javascript に関するコメントもありがたく受け取りました。また、node.js でメッセージ バスを構築するために考慮すべき他のアーキテクチャ アプローチに関するコメントは、非常に役に立ちます。

読んでくれてありがとう、

ダンカン。

0 投票する
1 に答える
447 参照

javascript - CommonJS と関数

CommonJS 標準に準拠した Backdraft ローダーを使用しています。すべてがどのように機能するかを理解しようとしていますが、アドバイスが必要です。

タイムスタンプを取得したいとしましょう。これを行うとします。

次に、単純なrequireを実行して実行してみます:

今私が得るのは、タイムスタンプ関数が評価された時点から3回同じタイムスタンプです。define() は自動的に閉鎖を行いますか、それとも何が起こっていますか?

私は関数型プログラミングを学んでいるので、再利用できるこれらの小さな関数の実行方法を理解していないことが私の努力を妨げています:)

0 投票する
3 に答える
35202 参照

javascript - nodeJSrequire.pathsは問題を解決します

私は比較的ファイルを要求しようとしていますが、不思議なことに次のことが起こっています

これはうまく機能し、/Users/marcos/Desktop/Taper/lib/utils.js

これはそうではありませんが、まったく同じファイルを指している必要があります。

./この場合、パスをロードするために まだ使用できない理由は誰でも知っています。

結果:

とりあえず?

前もって感謝します