2012-01-17 12 views
2

私はいくつかのRにNode.jsの上& Dをやっているし、これまでのところ、私はそれが好きで、私はいくつかを持っているために、私は可能性がどのように再利用するコードにだけ興味クライアントとサーバー間の共有コード。Node.jsの再利用可能なコード・サーバー・クライアント

その必要性の良い例は、私がNPMでインストールBACKBONE.JSだろう。

現在、私はこのようになりますディレクトリを持っている:

明らか
app.js 
    public/ 
    routes/ 
    views/ 
    node_modules/ 
    tests/ 

私はexpress.jsを使用し、すべての私のクライアント側のコードがcssimagesjsファイルが置かれているpublicフォルダの下にあります。

それでは、どのように私は、サーバーとバックの両方でそれを使用することができますバックボーンでモデルを持っているだろうか?

また、私はアプリケーションの構造化とモジュール化のためにRequire.jsでJavaScript AMDを使用していましたが、私はそれに慣れていて、require.jsがnpm経由で利用可能であることがわかりましたが、私はこのようなものを持っていたので、クライアント側でどのように使用するのかは分かりません:<script data-main="js/main" src="js/libs/Require/require.js">しかしrequire.jsはnpm経由でインストールされているのでパブリックフォルダの下にはありませんそれをロードする。

おかげ

+0

'パブリック/ models'、'パブリック/ collections'、 'パブリック/ views'を、必要としています。 requireを再利用する場合は、代わりにmodul8またはbrowserifyを使用することを検討してください。 – Raynos

+0

@Raynosの場合は、 'var Backbone = require( 'backbone');'モデルで、このJSファイルをロードしようとすると、例外は 'require'メソッドが定義されていないか、クライアント側でrequire.jsを使いこなすので、*ハイブリッド*モデルを持つことができるので、クライアント側とサーバ側の両方で使うことができますクライアント側でrequire.jsを使用すると、スクリプトが 'define([...])で始まるので、両側でrequireJSを使うことを考えていたのです。 – panosru

+1

ノードでrequireJSを使用しないでください。クライアント上browserify/modul8。?私が意味する、それがどのように悪い私は、真剣に、なぜいなくても、クライアント側でrequire.jsないことだ[OK]を – Raynos

答えて

1

パブリックフォルダからrequire.jsする(LN -s)シンボリックリンクを追加することができます。

私はあなただけのようにも公共の場でのバックボーンモデルを配置し、同じファイルをロードするために、サーバーとクライアント上のrequirejsの両方を使用することができると思います。

+0

私はサーバー上のrequirejsを避けるだけで、ノードの 'require'を使用します。 – Raynos

+0

本当に、あなたはrequirejsとnodeの両方でモジュールが動作するようにラッピングすることもできます。 – mtsr

+0

はい、できますが、お尻の痛みですが、単にrequireJSを使用せず、代わりにmodul8またはbrowserifyを使用してください。 – Raynos

0

これは多少遅いですが、クライアント側でbrowserifyを使用する代わりに、サーバー側でhttps://npmjs.org/package/defineを使用すると、AMDスタイルのモジュールを定義できますノードのは、ちょうど公共の場でのバックボーンのものを置く()

関連する問題