2012-07-04 19 views
8

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां एक अन्य डेवलपर ने एम्बर.जेएस फ्रेमवर्क का उपयोग करके अकेले स्टैंड स्टैंड क्लाइंट-साइड के रूप में यूआई विकसित किया है।क्या रेजर इंजन और ember.js मिलकर काम कर सकते हैं?

मुझे इस काम को एएसपी.नेट एमवीसी 3 प्रोजेक्ट में स्थानांतरित करने के लिए कहा गया है।

समस्या यह है कि, ember.js वाक्यविन्यास में ब्रेसिज़ और डबल ब्रेसिज़ का उपयोग करता है, और ऐसा लगता है कि एमवीसी 3 द्वारा उपयोग किए जाने वाले रेज़र इंजन में हस्तक्षेप होता है।

क्या मैं सोच रहा हूं कि 2 प्रौद्योगिकियां (एएसपी एमवीसी 3 और एम्बर.जेएस) एक साथ काम नहीं कर सकती हैं?

+0

पर सभी परियोजनाओं को माइग्रेट कर दिया जाएगा, आपने इसे एएसपी.NET एमवीसी में क्यों स्थानांतरित करने के लिए कहा था? ऐप के साथ आज कोई समस्या है क्योंकि यह आज मौजूद है? –

+0

यह ग्राहक से एक आवश्यकता है। वे मुख्य रूप से .NET/.NET MVC का उपयोग कर एक कंपनी हैं। यूआई मुख्य रूप से PHP पृष्ठभूमि के साथ एक डेवलपर द्वारा किया गया था। बिना टिप्पणी के दिए गए -1 का सामना करने के लिए –

+0

+1। –

उत्तर

-1

आप अपने एम्बर टेम्पलेट्स को लपेटने के लिए http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx में विस्तृत ब्लॉक का उपयोग करने में सक्षम होना चाहिए ताकि वे सही तरीके से उपलब्ध हों।

ने कहा कि आप वास्तव में ऐसा करके अपने ग्राहकों की आवश्यकताओं को पूरा नहीं कर रहे हैं। एक सामान्य एएसपी.NET एमवीसी डेवलपर को अभी भी इस कोड बेस के साथ काम करने के लिए ember.js सीखना होगा। क्या तुम सच में करना चाहिए मॉडल से पृष्ठों, आंशिक दृश्य आदि बनाने की तरह ASP.Net MVC अवधारणाओं का उपयोग कर इसे फिर से लिखने है

+0

वास्तव में नहीं।आप एएसपी.नेट एमवीसी के साथ एक ही व्यवहार को फिर से लिख नहीं सकते क्योंकि यह एक सर्वर-साइड फ्रेमवर्क है जो इसलिए इनपुट के रूप में केवल http अनुरोध प्राप्त करता है। दूसरी ओर Ember.js क्लाइंट-साइड फ्रेमवर्क है जो ब्राउज़र ईवेंट प्राप्त करता है और इस प्रकार उपयोगकर्ता इंटरैक्शन के लिए अधिक परिष्कृत प्रतिक्रिया दे सकता है। क्लाइंट-साइड और सर्वर-साइड एमवीसी के बीच एक अच्छी तुलना के लिए देखें: [लिंक] (http://emberjs.com/guides/ember_mvc/) –

+0

एएसपी.नेट एमवीसी और एम्बर का उपयोग करने के कारणों का उपयोग करने के कारण हैं। "एएसपी.नेट एमवीसी अवधारणाओं का उपयोग करके" चीजें लिखना शायद वह नहीं हो सकता है जो उसका ग्राहक चाहता है। सिर्फ इसलिए कि उन्हें सर्वर-साइड तकनीक के रूप में एएसपी.नेट एमवीसी का उपयोग करने की आवश्यकता है, इसका मतलब यह नहीं है कि वह अब क्लाइंट-साइड फ्रेमवर्क का लाभ उठा सकता है और एम्बर का उपयोग करके "ग्राहक की आवश्यकताओं को पूरा करने" को रोक नहीं सकता है। –

1

लघु उत्तर: हाँ, किसी भी js पुस्तकालय asp.net MVC के साथ काम कर सकते

हालांकि, अगर आपको कुछ सिंटैक्स समस्याएं हैं तो विशिष्ट दृश्य-प्रतिपादन इंजन (रेजर, वेब-फॉर्म, स्पार्क इत्यादि) वाक्यविन्यास का विश्लेषण जेएस लाइब्रेरी के साथ समानांतर में किया जाना चाहिए।

उदाहरण के लिए, jQuery एलियास के रूप में $ संकेत का उपयोग करता है, जिसे प्रतिस्थापित किया जा सकता है। इस संदर्भ को देखें - Replace “$”(dollar Sign) with “JQuery”

हालांकि, यदि यह काम नहीं करता है तो आप शायद अपने व्यू-इंजन पर फिर से विचार कर सकते हैं।

3

एक दृष्टिकोण होने संसाधन फ़ाइल (resx) में हैंडल टेम्पलेट्स होगा और उन्हें एंबर में जोड़ने के लिए इस के समान एक गुमनाम समारोह में:

<script type="text/javascript" src="path/to/ember.js"> 
<script type="text/javascript" src="path/to/your/app.js"> 
<script type="text/javascript"> 
    (function() { 
     Ember.TEMPLATES["your template name"] = Ember.Handlebars.compile('<%= template as string from the resource file goes here %>'); 
    })(); 

    App.initialize(); 
</script> 

यह होना चाहिए इससे पहले कि आप कहते हैं अपने आवेदन की initialize विधि

संसाधन फ़ाइल भी एक अच्छा विचार जब आपके पास है बहु भाषा समर्थन

+1

सर्वर-साइड पर प्रीकंपिल्ड टेम्पलेट्स का समर्थन करने के लिए, मैं csharp-ember-handlebars लाइब्रेरी (NuGet के माध्यम से स्थापित) का उपयोग करने की अनुशंसा करता हूं ताकि आपको रेज़र, हैमल, एएसपीएक्स या किसी भी व्यू इंजन के साथ कोई संघर्ष न हो। यहां एक नमूना वेब एपीआई tempalte (डब्ल्यूआईपी) के साथ github https://github.com/Myslik/csharp-ember-handlebars में प्रोजेक्ट है – MilkyWayJoe

1

मैं जो ई का उपयोग करता ASP.NET MVC 4 आवेदन पर काम कर रहा हूँ मेबर भारी और कोई समस्या नहीं है।

डबल ब्रेसिज़ के मामले में बहुत आसान कामकाज है: बस @: का उपयोग करें। @: के बाद सब कुछ सादा पाठ के रूप में व्याख्या किया जाता है। तो, हैंडल अभिव्यक्ति के साथ इस उस्तरा मार्कअप मान्य होगा:

<ul> 
@if (Model.SomeCondition) 
{ 
    @:{{#each product in products}} 
    <li>{{product.name}}</li> 
    @:{{/each}} 
} 
</ul> 

अद्यतन: वर्तमान में मैं एंबर 1.6 उपयोग कर रहा हूँ - 1.9 संस्करण और एंबर डाटा 1.0.0 बीटा 8 - 1.0.0 बीटा 12 संस्करण एएसपी.नेट एमवीसी 5.2 के साथ - महान काम करता है। जल्द ही सभी परियोजनाओं को नवीनतम एम्बर 1.9, एम्बर डेटा और हैंडलबार्स 2.0