2012-01-20 8 views
6

こんにちは私はこのようなベースパスを設定することができます。私は、例えば./app/foo/bar/にいると私は./app/foo.jsのためではなくnode_moduleフォルダまたは./app/foo/bar/foo.jsで検索でしょうその後、require('foo'); RequireJSを使用するスクリプトを持っているときbase : './app/'ので、これは時に便利来ます../../foo.jsの代わりに依存関係を見ることができるように、開発者としてはるかにクリーンな構造のような構造を持っています。Node.js require()とRequireJS? RequireJSと

require('foo'); 
require('foo/foo'); 
require('foo/bar/foo'); 

いうより:今

require('../../foo'); 
require('../foo'); 
require('./foo'); 

名を変更しないと、してみましょうどこでもFOOを持っていない、なぜあなたが言うことができるが、私はそれを持ってはるかにきれいになり./app/foo.js./app/foo/foo.js./app/foo/bar/foo.jsを持つことができます何らかの理由で私たちができないと言ってください...

RequireJSに対するノードのrequireメソッドで見られるもう1つの機能の欠如は、./app/super-sized-directory-name/という名前のディレクトリがある場合、パスマッピングを設定できることですそれはあなたの名前の変更をカバーしてRequireJSに、あなたがbrowserifyで別名を登録することができます

+1

[modul8](https://github.com/clux/modul8)はドメインを通じてこの機能をサポートしていますが、構文はノードに準拠していません。私はbrowserifyは相対ファイルパスのみをサポートすると信じています – Raynos

+0

@Raynosこんにちは!お返事をありがとうございます!私はその点をもっと明確にするために質問を変えました。一見するとモジュル8をブラウジングよりも複雑に見せます。私がブラウジングで好きなのは、スクリプトをコンパイルしてスクリプトをコンパイルして、コーヒーを受け入れます – panosru

+0

@Raynos私はmodul8をもう一度チェックし、それをもっと慎重に読んでいます。私はそれが非常にクールで、おそらく私が探しているものだと信じています!私は今それをテストします:) – panosru

答えて

2
--alias, -a Register an alias with a colon separator: "to:from" 
      Example: --alias 'jquery:jquery-browserify' 

...私は単に'big-dir' : 'super-sized-directory-name'を行うことができ、Node.jsの者は、これは私の知る限りでは可能ではない方法を必要とし、私は単純にrequire('./app/big-dir/foo')を使用することができます。

根本的な絶対パスについては、実際にはできません。前述のように、modul8にはこれを解決するための名前空間のメカニズムがあります。

私はあなたにfreenodeの#stackvmのSubStackを勧め、彼に直接尋ねます。

+0

browserifyまたはmodul8は非同期で動作しますか?そうでなければrequirejsは少なくともブラウザで使用されるモジュールに使用する権利が残っているように思えます。 – Bruiser

+1

@Bruiser彼らは非同期に動作します。つまり、ブロックされません。それらはすべてのモジュールをプリロードすることによって動作します – Raynos

+0

ノードプロジェクトでrequireを使用してbrowserifyを使用することをお勧めしますか? – Bruiser

0

Dojo FrameworkのAMD LoaderはRequireJSとAPI互換性があり、新しいマイクロカーネルを使用している場合、グローバル名前空間を汚染しないと私は信じています。

グローバルネームスペースにはrequire()define()しか存在しません。

のようにとにかくこれに対処する彼らの方法は何かをすることです:ドキュメントがhttp://dojotoolkit.org/reference-guide/1.8/dojo/node.html

0

nodejs requireとAMD defineモジュール間の「ブリッジ」を提供して使用uRequire、なしである

require(["dojo/node!util"], function(util){ 
    // Module available as util 
}); 

ホイールを改革する(これは2つの基準の上に構築される)。基本的には、AMDまたはcommonJS形式のモジュールを他の形式に変換するか、UMDを両方のnodejsでスムーズに実行します。&ブラウザ。

依存関係のパスをflexible path conventionsとも翻訳していますので、あなたの所在地に応じて'../../foo'または'bar/foo'のいずれかを指定できます。

AMDまたはUMDモジュールは、(AMD/requireJsまたは他のAMDローダを使用して)ブラウザに非同期にロードされ、ノード上で非同期require(['dep1', 'dep2'], function(dep1,dep2){...})もシミュレートされます。