2011-08-12 2 views
10

私の現在の仕事は、特定のDOM用の集中テンプレートを生成して提供することです。この例では、単にフォームと呼んでいます。nodejsまたはenvjs - dynamic jquery tmpl

基本的には、各フォーム要素(ラベル、入力、divラッパー)を取り、個別にtemplatesとして保存したいと思います。

そこから、私たちのプロデューサーがこれらのフォームをまとめることができるUIがあります。フォームをレイアウトする方法を決めると(DOMオーダーと構造は実際にはこのプロジェクトでは重要ですが、CSSのみのソリューションではありません)、プラットフォーム側のスクリプトはJSONオブジェクトを保存します。後でロードするページで参照できるテンプレート名に基づいたDOMの構造

ここで理想的な解決策は、JSONオブジェクトをノードサーバーに送信するか、envjsを使ってこのDomを「ビルド」し、それをCodeIgniterビューに含めるPHP変数に割り当てることですそれはGoogleによって索引付けされることができます。

私はJQueryがネイティブにenvjsで動作していることを知っていますが、JQuery plugin for nodeがありますが、これは私の最初のサーバーサイドJSプロジェクトです。コマンドラインでローカルマシン上でenvjを動かすことができましたが、単純な作業を完了するのには10〜30秒かかります。 envjsを使用する方法がある場合は、バックグラウンドで実行するにはどうしたらいいですか? TomcatのenvjsサーブレットにPHPのカールがありますか?

私のローカル開発者はWAMPです(ITにはローカルのUNIXマシンはありません)が、テスト環境とプロダクション環境は両方ともLAMPです。私はそれが絶対的なここに行く唯一の方法だと私はテストすることができます個人的なLAMPサーバーがありますが、私の個人的なサーバー上の会社のものは、いくつかの熱で私を得ることができます。

残念ながら、私は自分の時間に新しい技術で普通のようにすべての可能性を研究し、試して失敗する時間がありません。アイデア、ガイダンス、コード例 - これにアプローチする方法を決定するのに役立つものは、大いに感謝します。

+4

Envjsは、ノードが持つどこでもサポートとコミュニティの近くにありません。ノードがウィンドウの準備ができていません。最善の策は、WAMPスタック上でLinux VMを実行し、ノードを使用することです。 (そして、ノードとPHPの間のTCP通信を行います) – Raynos

+0

MSはWindowsのためにnodejsを移植することを決めました。これは、ノードに大きな機会とサポートがあることを意味します。私はnodejsがより親密になると思います。テンプレートエンジンでは、Jadeを使い、シンプルでパワフルなものにしています。 –

+0

ありがとう@Pasha - 私はtmplに悩まされていますが、私たちのフレームワーク全体ですでに使用されています。 – AlienWebguy

答えて

9

短い答え:使用ノード。今すぐ使用してください。実際には、依存関係のないスタンドアロンの最新のネイティブWindows .exeへのリンクがあります:http://nodejs.org/dist/v0.5.4/node.exe

長い回答:env.jsは/素晴らしいプロジェクトでした。 jsのjs環境をシミュレートします。それは他の環境で実行することができます。どんなところでも、それは問題ではありません。

Node.jsは、V8の上で動作するjsホスト環境です。 V8は、そこにある最速のjs環境、Chromeの機能などです。ノード自体は、ネイティブシステム環境用です。ブラウザにはどのようなものがありますか:開発者の使いやすさと機能の幅の魔法使いでAPIの強力な組み合わせセット。

javascriptのDOM拡張機能を使用して、ビデオ、オーディオ、ユーザー入力などを制御できます。サーバー上のノード(または自分のコンピュータだけでは、通常のサーバーの使用以上のアプリケーションがたくさんあります)では、すべての種類のIO:http/udpサーバーとすべての定型作業を行うクライアント、ファイルI/O、前記ネットワークおよびファイルI/Oを処理するための管理されたデータストリーム、子プロセスまたはフォークプロセスとのスポーンおよび通信、およびV8のコンパイラへの直接アクセスを含み、javascriptバイトコードをコンパイルおよび保存/実行する。

DOMに関して、ノードと複数の部分的なDOMのための少なくとも1つのフル(html)実装があります。私が知っている少なくともYUI、jQuery、MooToolsは、DOMライブラリの上でノード内で実行することができ、ブラウザのように任意のソースからDOMを構築し、HTMLやその他のものにシリアル化することができます。

https://github.com/tmpvar/jsdomは、ノード(または私が信じるjavascript環境)で動作するDOM実装です。

https://github.com/tmpvar/jsdom/blob/master/example/browser/browser.jsは、ブラウザをエミュレートする例を示します。

var sys = require('sys'); 
var dom = require('../../lib/jsdom/level2/html').dom.level2.html; 
var browser = require('../../lib/jsdom/browser/index').windowAugmentation(dom); 

var document = browser.document; 
var window = browser.window; 

var el = document.createElement('div'); 
el.id = 'foo'; 
el.innerHTML = '<em>This is a test</em> This <strong class="odd">is another</strong> test '; 
document.body.appendChild(el); 

sys.puts(document.outerHTML); 

(ノードでの使用簡略化することや、私のフォーク:https://github.com/Benvie/dom.js)を決定

7

これは考慮する価値がある点です。

の違いは、EnvjsNodejsです。 EnvjsはRhinoによってデフォルトで実装されているシミュレートされたブラウザ環境です。 Nodejを使用してEnvjを実装できること(および開発者が持つこと)に注意することが重要です。一方Nodejsは非常に強力であるグーグルのV8エンジン、のためのイベント化Javascriptの環境であり、あなたが言ったことから、

利用可能なモジュールのロットがあるあなたはjQueryのtemlを構築するために探しているように、それが聞こえますユーザーとのやりとりに基づいてクライアント側では、そのようになります。あなたは、いくつかのJSON的にシリアライズし、(あなたが明らかに行われている)を再生するためにサーバーに送信することができます

<script id="dynamicTemplate" type="text/x-jquery-tmpl"> 
    {{tmpl "smallTemplate1"}} 
    <tr><td>key: ${value}</td></tr> 
</script> 

。サーバー側では、逆シリアル化されたテンプレートの実行方法のガイダンスを探しています。私は非常にあなたがする能力を持っている場合にもhttps://github.com/kof/node-jqtpl

を非常に大きく、次がありますnodejsにjQuerysテンプレートエンジンのポートですノードjqtplモジュールでNodeJSをお勧めします。この特定の時点で

。このテンプレートをJSONに安全にシリアル化する方法を見てみたいと思います。これは、これを最も困難な部分とみなしています。

+0

ノードと組み合わせた「プラグイン」という用語は、ノードを使用しないことを示唆しています。 – Raynos

+3

申し訳ありません "モジュール"(少し失礼)、なぜドキュメントは非常にはっきりと説明するようにWindowsの準備ができていないのですか? https://github.com/joyent/node/wiki/Installation – martin

関連する問題