2015-05-29 7 views
20

अब एक सप्ताह के लिए ES6, JSPM & angular2 अध्ययन कर और मैं इस रेपो ES6-loaderक्या कोई यह समझा सकता है कि एएस 7 प्रतिबिंबित-मेटाडाटा क्या है?

पाया अगर हम नीचे स्क्रिप्ट पर index.html को देखो आप

System.import('reflect-metadata') 
    .then(function() { 
    return System.import('app/index'); 
    }) 
    .catch(console.log.bind(console)); 

देखेंगे यह JSPM के उपयोग कर रहा है systemjs polyfill ES6 के import प्राप्त करने के लिए।

प्रश्न: इस स्थिति में प्रतिबिंबित मेटाडाटा वास्तव में क्या करता है? npm reflect-meta जितना अधिक मैंने प्रलेखन पढ़ा, उतना कम मैं समझता हूं कि यह क्या करता है?

+0

सुनिश्चित नहीं हैं कि तुम क्या मतलब है index.html, अगर यह https://github.com/angular/quickstart/blob/master/ है index.html, तो प्रतिबिंबित-मेटाडाटा/Reflect.js एक लाइब्रेरी है जो बढ़ती है: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect जिसका उपयोग कभी-कभी किया जा रहा है कोड जो टाइपस्क्रिप्ट कंपाइलर (टीएससी) – dalvarezmartinez1

उत्तर

43

'reflect-metadata' एक पैकेज है जो ES7 के लिए एक प्रस्ताव है। यह मेटा डेटा को किसी वर्ग या फ़ंक्शन में शामिल करने की अनुमति देता है; अनिवार्य रूप से यह syntax sugar है।

उदाहरण। कोणीय 2 ES6:

@Component({selector: "thingy"}) 
@View({template: "<div><h1>Hello everyone</h1></div>"}) 
class Thingy{}; 

आप @Component और @View के बाद कोई अर्धविराम देखते हैं देख सकते हैं। ऐसा इसलिए है क्योंकि वे कक्षा में अनिवार्य रूप से चेन (मेटा) डेटा हैं।

function Thingy(){} 
Thingy.annotations = [ 
    new angular.ComponentAnnotation({ 
     selector: "thingy" 
    }), 
    new angular.ViewAnnotation({ 

     template: "<div><h1>Hello everyone</h1></div>" 
    }) 
]; 

आप देख सकते हैं @ प्रतीक एक वर्ग के एनोटेशन संपत्ति के बहुत बाहर सार और यह अधिक D.R.Y बनाता है:

अब कोणीय 2 ES5 में लेकिन में है कि एक ही कोड को देखने की सुविधा देता है।

यह एक कदम आगे लेना कोणीय टीम जानता है कि एनोटेशन नए उपयोगकर्ता के लिए थोड़ा सा सार है। इसके अलावा, ईएस 5 बस बहुत verbose है। जिसके कारण वे a.js बनाया जो बेहतर एनोटेशन के साथ इंटरफ़ेस कर देगा:

Video to understand this

+3

ग्रेट उत्तर थूकता है। धन्यवाद। –

+1

a.js क्या है? मेरी टिप्पणी लंबे समय तक पर्याप्त नहीं है –

+0

@gyozokudor a.js कोणीय 2 और es5 के लिए एक प्रोजेक्ट था। ऐसा लगता है कि आसिफ कोणीय 2 टीम ने इस परियोजना को बंद कर दिया होगा। –

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