2015-08-24 12 views
5

कभी-कभी मैं कोणीय के कुछ पहलू के साथ (स्थानीय नोड स्क्रिप्ट में) प्रयोग करना चाहता हूं - उदा। सेवाएं, डीआई, आदि - सामान जो ब्राउज़र या डोम के साथ कुछ लेना देना नहीं है। क्या ऐसा करने का कोई तरीका है? यानी कोणीय बुनियादी ढांचे के कुछ आधार हिस्से को लोड करें? अगर मैं सिर्फ एक नोड लिपि में ("कोणीय") की आवश्यकता होती है, यह शिकायत:कोणीय, ब्राउज़र के बिना?

ReferenceError: window is not defined 

जो समझ में आता है क्योंकि ब्राउज़र खिड़की के लिए कोणीय रहता है।

लेकिन ऐसा लगता है कि कोणीय के कुछ हिस्सों की तरह गैर-वेब अनुप्रयोगों के लिए उपयोग किया जा सकता है - हालांकि यह पूछने का मेरा कारण नहीं है। मैं बस अपनी समझ को बेहतर बनाने की कोशिश कर रहा हूं कोणीय और कभी-कभी जितना संभव हो उतना दूर/अनदेखा करते समय थोड़ा प्रयोग करना चाहता हूं।

+3

सैंडबॉक्स जैसे [plunker] (http://plnkr.co/edit/?p=catalogue) आदर्श हैं क्योंकि वे लिखते समय पुनः लोड रहते हैं और सेकंड में एक नया ऐप सेट कर सकते हैं – charlietfl

+0

कोणीय बिना काम किए काम करता है ब्राउज़र। ऐसा कुछ ऐसा है जो वे जेएस चलाने वाले गैर-ब्राउज़र क्लाइंट्स के लिए (मैंने कहीं पढ़ा है) को संबोधित करने की योजना बना रहे हैं, लेकिन अभी तक नहीं –

उत्तर

3

कोणीय के साथ प्रयोग के लिए सबसे अच्छा window की वजह से और अन्य एपीआई कोणीय पर निर्भर करता है, एक ब्राउज़र में किया जाता है।

हालांकि, यदि आप नोड के साथ कोणीय का उपयोग करने पर मृत सेट हैं, तो आप vm मॉड्यूल में देख सकते हैं जो अनिवार्य रूप से आपको eval कोड को विशिष्ट स्टैंड-इन ऑब्जेक्ट के साथ प्रॉक्सी ग्लोबल ऑब्जेक्ट के रूप में देता है। उदाहरण:

const vm = require('vm'); 
const fs = require('fs'); 

const test = fs.readFileSync('./test.js', 'utf-8'); 

const windowProxy = { 
    document: { 
     createElement: function() { 
      return { 
       setAttribute: function() {}, 
       pathname: '' 
      } 
     }, 
     querySelector: function() {}, 
     addEventListener: function() {} 
    }, 
    location: { 
     href: '' 
    }, 
    addEventListener: function() {} 
}; 
windowProxy.window = windowProxy; 

vm.createContext(windowProxy); 

vm.runInContext(test, windowProxy); 

कम से कम शिकायत किए बिना आपको कोणीय लोड करने देगा। निस्संदेह आपको अधिक त्रुटियों का सामना करना पड़ेगा, और लापता ब्राउज़र एपीआई के स्वयं को पॉलीफिल करना होगा।

तुम भी एक और अधिक मजबूत परीक्षण वातावरण के लिए PhantomJS में लग सकता है, हालांकि यह है कि अब नोड होगा।

संबंधित मुद्दे