2011-08-12 8 views
10

मेरा वर्तमान कार्य किसी विशेष DOM के लिए केंद्रीकृत टेम्पलेट्स उत्पन्न करना और प्रदान करना है - इस उदाहरण के लिए मान लें कि यह एक रूप है।nodejs या envjs - गतिशील jquery tmpl

असल में मैं प्रत्येक फॉर्म तत्व (लेबल से, इनपुट में, div wrappers तक) लेना चाहता हूं और उन्हें व्यक्तिगत templates के रूप में सहेजना चाहता हूं।

वहां से हमारे पास एक यूआई होगा जहां हमारे निर्माता इन रूपों को एक साथ जोड़ सकते हैं। एक बार जब वे निर्णय लेते हैं कि वे अपने फॉर्म को कैसे तैयार करना चाहते हैं (डीओएम ऑर्डर और संरचना वास्तव में इस परियोजना के लिए महत्वपूर्ण है। यह सीएसएस-केवल समाधान नहीं हो सकता है), हमारे प्लेटफॉर्म पक्ष पर एक स्क्रिप्ट एक JSON ऑब्जेक्ट को सहेज लेगी जो निर्धारित करेगी टेम्पलेट नामों के आधार पर डीओएम की संरचना जिसे मैं बाद में पेज लोड पर संदर्भित कर सकता हूं।

मुझे लगता है कि जेएसओएन ऑब्जेक्ट को नोड सर्वर पर भेजना या किसी भी तरह से इस वेब को 'बिल्ड' करने के लिए एनवीजे का उपयोग करना होगा और उसके बाद इसे कोडइग्निटर व्यू में शामिल करने के लिए एक PHP चर को असाइन करना होगा। इसे Google द्वारा अनुक्रमित किया जा सकता है।

मुझे पता है कि JQuery envjs के साथ मूल रूप से काम करता है और मुझे पता है कि JQuery plugin for node है, लेकिन हां, यह मेरा पहला सर्वर-साइड जेएस प्रोजेक्ट है और यह बहुत बड़ा होता है। मैं कमांड लाइन के माध्यम से अपनी स्थानीय मशीन पर काम कर रहा envjs प्राप्त करने में सक्षम था, लेकिन एक साधारण काम को पूरा करने में अच्छा 10-30 सेकंड लगते हैं। अगर envjs जाने का तरीका है, तो मैं इसे पृष्ठभूमि में कैसे चला सकता हूं और स्क्रिप्ट्स इसका संदर्भ दे सकती हैं? शायद टोमकैट पर एक envjs servlet करने के लिए PHP कर्ल?

एक चेतावनी मेरा स्थानीय देव है WAMP (आईटी हमें स्थानीय यूनिक्स मशीन नहीं देगा) लेकिन हमारे परीक्षण और उत्पादन वातावरण दोनों लैंप हैं। मेरे पास एक निजी लैंप सर्वर है जिसका मैं परीक्षण कर सकता हूं कि यह यहां जाने का एकमात्र तरीका है, लेकिन मेरे व्यक्तिगत सर्वर पर कोडिंग कंपनी सामान मुझे कुछ गर्मी में ला सकता है।

दुर्भाग्य से मेरे पास सभी संभावनाओं का शोध करने और कोशिश करने/विफल होने का समय नहीं है क्योंकि मैं आमतौर पर अपने समय पर नई तकनीकों के साथ होता हूं। विचार, मार्गदर्शन, कोड उदाहरण - कुछ भी जो मुझे यह तय करने में मदद कर सकता है कि इसका दृष्टिकोण कैसे प्राप्त किया जाए, इसकी सराहना की जाएगी।

+4

Envjs सहायता और समुदाय नोड है कि पास कहीं भी नहीं है। नोड खिड़कियों के लिए तैयार नहीं है। सबसे अच्छा शर्त है कि अपने WAMP स्टैक पर लिनक्स वीएम चलाएं और नोड का उपयोग करें। (फिर नोड और PHP के बीच टीसीपी संचार करें) – Raynos

+0

यहां तक ​​कि एमएस ने खिड़कियों के लिए पोर्ट नोडज करने का निर्णय लिया है। इसका मतलब है कि नोड के पास महान अवसर और समर्थन है। मुझे लगता है कि नोडज आपके लिए अधिक रिश्तेदार होंगे। टेम्पलेट इंजन के लिए जेड को उपयोगी, सरल और शक्तिशाली लगते हैं। –

+0

धन्यवाद @ पाशा - मैं tmpl के साथ फंस गया हूं हालांकि यह पहले से ही हमारे ढांचे में उपयोग किया जाता है। – AlienWebguy

उत्तर

9

संक्षिप्त उत्तर: नोड का उपयोग करें। अभी इसका इस्तेमाल करें। असल में, यहां नवीनतम मूल विंडोज़ .exe का एक लिंक है जो किसी निर्भरता के साथ स्टैंडअलोन है: http://nodejs.org/dist/v0.5.4/node.exe

लंबा उत्तर: env.js एक शानदार प्रोजेक्ट है। यह जेएस में एक जेएस पर्यावरण simulates। यह अन्य वातावरण और सामान में चला सकता है। जो भी हो, इससे कोई फर्क नहीं पड़ता।

Node.js एक जेएस होस्ट वातावरण है जो V8 के शीर्ष पर चलता है। वी 8 सबसे तेज जेएस पर्यावरण है, क्रोम शक्तियां इत्यादि है। नोड खुद ही देशी सिस्टम पर्यावरण के लिए है जो ब्राउज़र के लिए नियमित जेएस है: डेवलपर उपयोग और सुविधा की चौड़ाई की आसानी से एक चुड़ैल में मिश्रित एपीआई का एक शक्तिशाली संयोजन सेट।

ब्राउज़र पर आप वीडियो, ऑडियो, उपयोगकर्ता इनपुट इत्यादि पर नियंत्रण प्राप्त करते हैं, जिससे जावास्क्रिप्ट में डोम एक्सटेंशन के माध्यम से। सर्वर पर नोड के साथ (या सिर्फ अपने कंप्यूटर, इसमें नियमित सर्वर उपयोग से परे बहुत सारे अनुप्रयोग हैं) आपको सभी प्रकार के आईओ: http/udp सर्वर और क्लाइंट्स के लिए अविश्वसनीय समर्थन मिलता है जो आपके लिए बॉयलरप्लेट काम करते हैं, फ़ाइल I/ओ, नेटवर्क और फ़ाइल I/O को संभालने के लिए प्रबंधित डेटा स्ट्रीम, स्पॉन तक पहुंच और बच्चे या कांटा प्रक्रियाओं के साथ संवाद, और जावास्क्रिप्ट बाइटकोड को संकलित और सहेजने/चलाने के लिए V8 के कंपाइलर तक सीधे पहुंच।

डीओएम के संबंध में, डोम के कम से कम एक पूर्ण (एचटीएमएल) कार्यान्वयन नोड और एकाधिक आंशिक वाले के लिए है। कम से कम YUI, jQuery, और MooTools जिन्हें मैं जानता हूं, किसी भी स्रोत से डीओएम बनाने के लिए एक डोम लाइब्रेरी के शीर्ष पर नोड में त्रिभुज रूप से चलाया जा सकता है, जिसे आप ब्राउज़र में चाहते हैं, और फिर इसे HTML या जो कुछ भी क्रमबद्ध करें।

https://github.com/tmpvar/jsdom डोम कार्यान्वयन है जो नोड (या किसी भी जावास्क्रिप्ट पर्यावरण पर विश्वास करता है) पर चलता है।

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); 

कुछ अन्य libs कि एक निर्णय

7

कुछ ऐसे मुद्दे जो विचार करने लायक हैं।

Envjs और NodeJS के बीच मतभेदों को विशाल कर रहे हैं। Envjs एक नकली ब्राउज़र वातावरण है जो डिफ़ॉल्ट रूप से राइनो द्वारा कार्यान्वित किया जाता है। यह ध्यान रखना महत्वपूर्ण है कि कोई भी (और डेवलपर्स) एनोडजेस के साथ एनवीजे को लागू कर सकता है। दूसरी ओर NodeJS Googles वी 8 इंजन है, जो बहुत शक्तिशाली है के लिए एक evented जावास्क्रिप्ट माहौल है और देखते हैं एक लॉट उपलब्ध

आप क्या कहा है, यह लग रहा है जैसे आप एक jQuery teml का निर्माण करने के लिए देख रहे हैं से मॉड्यूल के क्लाइंट-साइड पर उपयोगकर्ताओं के इंटरैक्शन के आधार पर, ऐसा कुछ खत्म हो रहा है।

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

जो तुम फिर कुछ JSON ढंग से क्रमानुसार और पुन: पेश करने के लिए एक सर्वर के लिए भेज (जो आप जाहिरा तौर पर किया है) कर सकते हैं। यह सर्वर-साइड पर है कि आप मार्गदर्शन के लिए देख रहे हैं कि आप deserialized टेम्पलेट को कैसे निष्पादित कर सकते हैं।

इस खास बिंदु मैं अत्यधिक नोड jqtpl मॉड्यूल जो जो काफी एक बड़ी निम्नलिखित https://github.com/kof/node-jqtpl

भी है अगर आप की क्षमता के लिए है NodeJS को jQuerys टेम्पलेट इंजन के एक बंदरगाह है साथ NodeJS की सिफारिश करेंगे में; मैं यह देखना चाहता हूं कि आप जेएसओएन में टेम्पलेट को सुरक्षित रूप से कैसे क्रमबद्ध करते हैं, क्योंकि मैं इसे सबसे कठिन हिस्सा मानता हूं।

+0

नोड के साथ संयोजन में "प्लगइन्स" शब्द का सुझाव है कि आप नोड का उपयोग नहीं करते हैं। – Raynos

+3

क्षमा करें "मॉड्यूल" तो (थोड़ा कठोर था), और क्यों नोड विंडोज़ के लिए तैयार नहीं है क्योंकि दस्तावेज़ीकरण स्पष्ट रूप से बताता है कि ऐसा कैसे करें? https://github.com/joyent/node/wiki/Installation – martin