2015-05-13 12 views
6

Herkes bana söyleyebilir mi? İçe aktarılan Bileşen işlevinin önündeki '@' sembolü. Bu ES6 sözdizimi mi? Baktığım herhangi bir açısal olmayan ES6 projesinde kullanıldığını görmedim.Angular 2 @Component ES6'nın sözdizimi kısmı mı?

import {Component} from ... 
@Component({}) 

Here is a example

+1

Bilmiyordum. Dokümanlara işaret edebilir misiniz lütfen? Bu ne işe yarıyor? – Bergi

+0

Ayrıca şunu da buldum ... Açıklamalar, mevcut kodumuza meta bilgileri eklemenin bir yoludur. Bu ek açıklamalar aslında ES6 tarafından desteklenmez, ancak dil uzantısı olarak geliştirilmiştir ve bu projede kullanılan Traceur transpiler tarafından dikkate alınır. Ancak ek açıklamaları kullanmak zorunda değiliz. Belirtildiği gibi, bunlar sadece ES5'e aktarılır ve daha sonra basitçe çerçeve tarafından kullanılır. http://blog.thoughtram.io/angular/2015/03/27/building-a-zippy-component-in-angular-2.html – screenm0nkey

cevap

5

Kısa cevap: Hayır

@ sözdizimi bir şerh tanımlar - bu Eğik en AtScript, daha sonra TypeScript birleştirilecek hangi tanıtıldı. Gördüğüm kadarıyla, .NET dillerindeki ek açıklamalara benzerler.

Açıklamalar standart ES6'nın bir parçası değildir; Onlar sadece TypeScript tarafından sağlanan bir dekorasyon. Not, Angular 2, Aurelia'nın yaptığı gibi, TypeScript ek açıklamalarının kullanımını destekler.

Şu anda bir bağlantı sağlayamıyorum, ancak ES6'nın özelliklerini ve dil bileşenlerini ayrıntılı olarak açıklayan kaynaklar var.

18

@ sözdizimi, şu anda 1. aşamada olan (teklif aşaması) es7 için yeni bir taslağın parçasıdır. Onlar dekoratörler denir.

Dekoratörler, tasarım zamanında sınıfları ve özellikleri ek açıklama ve açıklama yapabilir. Daha fazla bilgi için

bkz: https://github.com/wycats/javascript-decorators


Not: sizin için sadece optional[]=es7.decorators (WebPack olarak) ya da yapılandırma ayarlayarak stage:1 için

5

etkinleştirerek Babel kullanarak, dekoratör kullanabilirsiniz Kayıtları, aynı davranışı ES6'da yalnızca TypeScript açıklamasını şu şekilde çevirebilirsiniz:

import {Component, ...} from 'angular2/core'; 
export class myAppOrDirective { 
    static get annotations() { 
     return [ 
      new Component({ 
       selector: 'my-app-or-directive' 
      }), 
      new View({ 
       template: `<div>Hello!</div>` 
      }) 
     ]; 
    } 
}