±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜAngular
2 Ó¦ÓóÌÐòÓ¦ÓÃµÄ 8 ¸ö×é³É²¿·Ö,ÒÔ¼°Ã¿¸ö²¿·ÖÊÇÈçºÎÏ໥¹¤×÷µÄ£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ²©¿Í¼ÒÔ°,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼ÍƼö¡£ |
|
±³¾°Óë¸ÅÄ
AngularJS2 ÊÇÒ»¿î¿ªÔ´JavaScript¿â£¬ÓÉGoogleά»¤£¬ÓÃÀ´ÐÖúµ¥Ò»Ò³ÃæÓ¦ÓóÌÐòÔËÐС£
AngularJS2 ÊÇ Angular 1.x µÄÉý¼¶°æ±¾£¬ÐÔÄÜÉϵõ½ÏÔÖøµÄÌá¸ß£¬ÄܺܺõÄÖ§³Ö
Web ¿ª·¢×é¼þ¡£
AngularJS2 ·¢²¼ÓÚ2016Äê9Ô·ݣ¬ËüÊÇ»ùÓÚES6À´¿ª·¢µÄ¡£
Angular2.xÓëAngular1.x µÄÇø±ð
Angular2.xÓëAngular1.x µÄÇø±ðÀàËÆ Java ºÍ JavaScript »òÕß˵ÊÇÀ×·æÓëÀ×·åËþµÄÇø±ð£¬ËùÒÔÔÚѧϰAngular2.xʱ´ó¼ÒÐèÒª×öºÃÖØÐÂѧϰһÃÅÓïÑÔµÄÐÄÀï×¼±¸¡£
¿ª¹¤Ç°µÄ×¼±¸¹¤×÷
ѧϰAngularJS2ǰ£¬ÄãÐèÒª¾ß±¸»ù±¾µÄǰ¶Ë»ù´¡£ºHTML¡¢CSS¡¢JavaScript¡£´ËÍâÄ㻹ÐèÒªÁ˽â
NPM ¼° TypeScript¡£
Angular 2 ¼Ü¹¹
Angular 2 Ó¦ÓóÌÐòÓ¦ÓÃÖ÷ÒªÓÉÒÔÏ 8 ¸ö²¿·Ö×é³É£º
1¡¢Ä£¿é (Modules)
2¡¢×é¼þ (Components)
3¡¢Ä£°å (Templates)
4¡¢ÔªÊý¾Ý (Metadata)
5¡¢Êý¾Ý°ó¶¨ (Data Binding)
6¡¢Ö¸Áî (Directives)
7¡¢·þÎñ (Services)
8¡¢ÒÀÀµ×¢Èë (Dependency Injection)
ÏÂÃæ¿´Ã¿¸ö²¿·ÖÊÇÈçºÎÏ໥¹¤×÷µÄ£º

Ä£°å (Templates)ÊÇÓÉ Angular À©Õ¹µÄ HTML Óï·¨×é³É£¬×é¼þ (Components)ÀàÓÃÀ´¹ÜÀíÕâЩģ°å£¬Ó¦ÓÃÂß¼²¿·Öͨ¹ý·þÎñ
(Services)À´Íê³É£¬È»ºóÔÚÄ£¿éÖдò°ü·þÎñÓë×é¼þ£¬×îºóͨ¹ýÒýµ¼¸ùÄ£¿éÀ´Æô¶¯Ó¦Óá£
½ÓÏÂÀ´¶ÔÒÔÉÏ 8 ¸ö²¿·Ö·Ö¿ª½âÎö£º
1.Ä£¿é
Ä£¿éÓÖÒ»¿é´úÂë×é³É£¬¿ÉÓÃÓÚÖ´ÐÐÒ»¸ö¼òµ¥µÄÈÎÎñ¡£
Angular Ó¦ÓÃÊÇÓÉÄ£¿é»¯µÄ£¬ËüÓÐ×Ô¼ºµÄÄ£¿éϵͳ£ºNgModules¡£
ÿ¸ö Angular Ó¦¸ÃÖÁÉÙÒªÓÐÒ»¸öÄ£¿é(¸ùÄ£¿é)£¬Ò»°ã¿ÉÒÔÃüÃûΪ£ºAppModule¡£
Angular Ä£¿éÊÇÒ»¸ö´øÓÐ @NgModule ×°ÊÎÆ÷µÄÀ࣬Ëü½ÓÊÕÒ»¸öÓÃÀ´ÃèÊöÄ£¿éÊôÐÔµÄÔªÊý¾Ý¶ÔÏó¡£
¼¸¸öÖØÒªµÄÊôÐÔÈçÏ£º
declarations £¨ÉùÃ÷£© - ÊÓͼÀàÊôÓÚÕâ¸öÄ£¿é¡£ Angular ÓÐÈýÖÖÀàÐ͵ÄÊÓͼÀࣺ
×é¼þ ¡¢ Ö¸Áî ºÍ ¹ÜµÀ ¡£
exports - ÉùÃ÷£¨ declaration £©µÄ×Ó¼¯£¬¿ÉÓÃÓÚÆäËüÄ£¿éÖеÄ×é¼þÄ£°å ¡£
imports - ±¾Ä£¿é×é¼þÄ£°åÖÐÐèÒªÓÉÆäËüµ¼³öÀàµÄÄ£¿é¡£
providers - ·þÎñµÄ´´½¨Õß¡£±¾Ä£¿é°ÑËüÃǼÓÈëÈ«¾ÖµÄ·þÎñ±íÖУ¬ÈÃËüÃÇÔÚÓ¦ÓÃÖеÄÈκβ¿·Ö¶¼¿É±»·ÃÎʵ½¡£
bootstrap - Ó¦ÓõÄÖ÷ÊÓͼ£¬³ÆÎª¸ù×é¼þ£¬ËüÊÇËùÓÐÆäËüÓ¦ÓÃÊÓͼµÄËÞÖ÷¡£Ö»ÓиùÄ£¿éÐèÒªÉèÖÃ
bootstrap ÊôÐÔÖС£
Ò»¸ö×î¼òµ¥µÄ¸ùÄ£¿é£¬eg:
import{NgModule}from'@angular/core';
import{BrowserModule}from'@angular/platform-browser'; @NgModule({imports: [BrowserModule],
providers: [Logger], declarations: [AppComponent], exports: [AppComponent], bootstrap: [AppComponent]})exportclassAppModule{} |
½ÓÏÂÀ´Í¨¹ýÒýµ¼¸ùÄ£¿éÀ´Æô¶¯Ó¦Ó㬿ª·¢¹ý³Ìͨ³£ÔÚ main.ts ÎļþÖÐÀ´Òýµ¼ AppModule
£º
import{platformBrowserDynamic}from'@angular /platform-browser-dynamic';
import{AppModule}from'./app.module';
platformBrowserDynamic(). bootstrapModule(AppModule); |
2.×é¼þ(Components)
×é¼þÊÇÒ»¸öÄ£°åµÄ¿ØÖÆÀàÓÃÓÚ´¦ÀíÓ¦ÓúÍÂß¼Ò³ÃæµÄÊÓͼ²¿·Ö¡£
×é¼þÊǹ¹³É Angular Ó¦ÓõĻù´¡ºÍºËÐÄ£¬¿ÉÓÃÓÚÕû¸öÓ¦ÓóÌÐòÖС£
×é¼þÖªµÀÈçºÎäÖȾ×Ô¼º¼°ÅäÖÃÒÀÀµ×¢Èë¡£
×é¼þͨ¹ýһЩÓÉÊôÐԺͷ½·¨×é³ÉµÄ API ÓëÊÓͼ½»»¥¡£
´´½¨ Angular ×é¼þµÄ·½·¨ÓÐÈý²½£º
´Ó @angular/core ÖÐÒýÈë Component ÐÞÊÎÆ÷
½¨Á¢Ò»¸öÆÕͨµÄÀ࣬²¢Óà @Component ÐÞÊÎËü
ÔÚ @Component ÖУ¬ÉèÖà selector ×Ô¶¨Òå±êÇ©£¬ÒÔ¼° template Ä£°å
3.Ä£°å(Templates)
AngularÄ£°åµÄĬÈÏÓïÑÔ¾ÍÊÇHTML¡£
ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓÃÄ£°åÀ´¶¨Òå×é¼þµÄÊÓͼÀ´¸æËß Angular ÈçºÎÏÔʾ×é¼þ¡£ÒÔÏÂÊÇÒ»¸ö¼òµ¥ÊÇʵÀý£º
<div>ÍøÕ¾µØÖ· : {{site}}</div>
4.ÔªÊý¾Ý(Metadata)
ÔªÊý¾Ý¸æËß Angular ÈçºÎ´¦ÀíÒ»¸öÀà¡£
¿¼ÂÇÒÔÏÂÇé¿öÎÒÃÇÓÐÒ»¸ö×é¼þ½Ð×÷ Component £¬ËüÊÇÒ»¸öÀֱ࣬µ½ÎÒÃǸæËß Angular ÕâÊÇÒ»¸ö×é¼þΪֹ¡£
Äã¿ÉÒÔ°ÑÔªÊý¾Ý¸½¼Óµ½Õâ¸öÀàÉÏÀ´¸æËß Angular Component ÊÇÒ»¸ö×é¼þ¡£
ÔÚ TypeScript ÖУ¬ÎÒÃÇÓà װÊÎÆ÷ (decorator) À´¸½¼ÓÔªÊý¾Ý¡£
eg£º
@Component({
selector : 'mylist', template : '<h2>²ËÄñ½Ì³Ì</h2>' directives : [ComponentDetails]
}) export class ListComponent{...} |
@Component ×°ÊÎÆ÷ÄܽÓÊÜÒ»¸öÅäÖöÔÏ󣬲¢°Ñ½ôËæÆäºóµÄÀà±ê¼Ç³ÉÁË×é¼þÀà¡£
Angular »á»ùÓÚÕâЩÐÅÏ¢´´½¨ºÍչʾ×é¼þ¼°ÆäÊÓͼ¡£
@Component ÖеÄÅäÖÃÏî˵Ã÷£º
selector - Ò»¸ö css Ñ¡ÔñÆ÷£¬Ëü¸æËß Angular ÔÚ ¸¸¼¶ HTML ÖÐѰÕÒÒ»¸ö
<mylist> ±êÇ©£¬È»ºó´´½¨¸Ã×é¼þ£¬²¢²åÈë´Ë±êÇ©ÖС£
templateUrl - ×é¼þ HTML Ä£°åµÄµØÖ·¡£
directives - Ò»¸öÊý×飬°üº¬ ´Ë Ä£°åÐèÒªÒÀÀµµÄ×é¼þ»òÖ¸Áî¡£
providers - Ò»¸öÊý×飬°üº¬×é¼þËùÒÀÀµµÄ·þÎñËùÐèÒªµÄÒÀÀµ×¢ÈëÌṩÕß¡£
5.Êý¾Ý°ó¶¨(Data binding)
Êý¾Ý°ó¶¨ÎªÓ¦ÓóÌÐòÌṩÁËÒ»ÖÖ¼òµ¥¶øÒ»Öµķ½·¨À´ÏÔʾÊý¾ÝÒÔ¼°Êý¾Ý½»»¥£¬ËüÊǹÜÀíÓ¦ÓóÌÐòÀïÃæÊýÖµµÄÒ»ÖÖ»úÖÆ¡£
ͨ¹ýÕâÖÖ»úÖÆ£¬¿ÉÒÔ´ÓHTMLÀïÃæÈ¡ÖµºÍ¸³Öµ£¬Ê¹µÃÊý¾ÝµÄ¶Áд£¬Êý¾ÝµÄ³Ö¾Ã»¯²Ù×÷±äµÃ¸ü¼Ó¼òµ¥¿ì½Ý¡£
ÈçͼËùʾ£¬Êý¾Ý°ó¶¨µÄÓï·¨ÓÐËÄÖÖÐÎʽ¡£Ã¿ÖÖÐÎʽ¶¼ÓÐÒ»¸ö·½Ïò¡ª¡ª´Ó DOM
À´¡¢µ½ DOM È¥¡¢Ë«Ïò£¬¾ÍÏñͼÖеļýÍ·ËùʾÒâµÄ¡£

angular2ÈëÃÅ£¬¾ÍÕâһƪ¾Í¹»ÁË
²åÖµ: ÔÚ HTML ±êÇ©ÖÐÏÔʾ×é¼þÖµ¡£
<h3>
{{title}} <img src="{{ImageUrl}}"> </h3> |
ÊôÐÔ°ó¶¨: °ÑÔªËØµÄÊôÐÔÉèÖÃΪ×é¼þÖÐÊôÐÔµÄÖµ¡£
<img [src]="userImageUrl">
ʼþ°ó¶¨: ÔÚ×é¼þ·½·¨Ãû±»µã»÷ʱ´¥·¢¡£
<button (click)="onSave()">±£´æ</button>
Ë«Ïò°ó: ʹÓÃAngularÀïµÄNgModelÖ¸Áî¿ÉÒÔ¸ü±ã½ÝµÄ½øÐÐË«Ïò°ó¶¨¡£
<input [value]="currentUser.firstName"
(input)="currentUser.firstName=$event. target.value"
> |
6.Ö¸ÁDirectives£©
AngularÄ£°åÊǶ¯Ì¬µÄ ¡£µ± Angular äÖȾËüÃÇʱ£¬Ëü»á¸ù¾ÝÖ¸Áî¶Ô DOM ½øÐÐÐ޸ġ£
Ö¸ÁîÊÇÒ»¸ö´øÓÐ"Ö¸ÁîÔªÊý¾Ý"µÄÀà¡£ÔÚ TypeScript ÖУ¬ÒªÍ¨¹ý @Directive
×°ÊÎÆ÷°ÑÔªÊý¾Ý¸½¼Óµ½ÀàÉÏ¡£
ÔÚAngularÖаüº¬ÒÔÏÂÈýÖÖÀàÐ͵ÄÖ¸Á
ÊôÐÔÖ¸ÁÒÔÔªËØµÄÊôÐÔÐÎʽÀ´Ê¹ÓõÄÖ¸Áî¡£
½á¹¹Ö¸ÁÓÃÀ´¸Ä±äDOMÊ÷µÄ½á¹¹
×é¼þ£º×÷ΪָÁîµÄÒ»¸öÖØÒª×ÓÀ࣬×é¼þ±¾ÖÊÉÏ¿ÉÒÔ¿´×÷ÊÇÒ»¸ö´øÓÐÄ£°åµÄÖ¸Áî¡£
<li *ngFor="let
site of sites"></li>
<site-detail *ngIf="selectedSite"></site-detail> |
*ngFor ¸æËß Angular Ϊ sites ÁбíÖеÄÿ¸öÏîÉú³ÉÒ»¸ö <li>
±êÇ©¡£
*ngIf ±íʾֻÓÐÔÚÑ¡ÔñµÄÏî´æÔÚʱ£¬²Å»á°üº¬ SiteDetail ×é¼þ¡£
7.·þÎñ(Services)
Angular2ÖеķþÎñÊÇ·â×°ÁËÄ³Ò»ÌØ¶¨¹¦ÄÜ£¬²¢ÇÒ¿ÉÒÔͨ¹ý×¢ÈëµÄ·½Ê½¹©ËûÈËʹÓõĶÀÁ¢Ä£¿é¡£
·þÎñ·ÖΪºÜ¶àÖÖ£¬°üÀ¨£ºÖµ¡¢º¯Êý£¬ÒÔ¼°Ó¦ÓÃËùÐèµÄÌØÐÔ¡£
ÀýÈ磬¶à¸ö×é¼þÖгöÏÖÁËÖØ¸´´úÂëʱ£¬°ÑÖØ¸´´úÂëÌáÈ¡µ½·þÎñÖÐʵÏÖ´úÂ븴Óá£
ÒÔÏÂÊǼ¸ÖÖ³£¼ûµÄ·þÎñ£º
ÈÕÖ¾·þÎñ
Êý¾Ý·þÎñ
ÏûÏ¢×ÜÏß
˰¿î¼ÆËãÆ÷
Ó¦ÓóÌÐòÅäÖÃ
ÒÔÏÂʵÀýÊÇÒ»¸öÈÕÖ¾·þÎñ£¬ÓÃÓÚ°ÑÈÕÖ¾¼Ç¼µ½ä¯ÀÀÆ÷µÄ¿ØÖÆÌ¨£º
export class
Logger {
log(msg: any) { console.log(msg); }
error(msg: any) { console.error(msg); }
warn(msg: any) { console.warn(msg); } } |
8.ÒÀÀµ×¢Èë
¿ØÖÆ·´×ª£¨Inversion of Control£¬ËõдΪIoC£©£¬ÊÇÃæÏò¶ÔÏó±à³ÌÖеÄÒ»ÖÖÉè¼ÆÔÔò£¬¿ÉÒÔÓÃÀ´¼õµÍ¼ÆËã»ú´úÂëÖ®¼äµÄñîºÏ¶È¡£ÆäÖÐ×î³£¼ûµÄ·½Ê½½Ð×öÒÀÀµ×¢È루Dependency
Injection£¬¼ò³ÆDI£©£¬»¹ÓÐÒ»ÖÖ·½Ê½½Ð"ÒÀÀµ²éÕÒ"£¨Dependency
Lookup£©¡£
ͨ¹ý¿ØÖÆ·´×ª£¬¶ÔÏóÔÚ±»´´½¨µÄʱºò£¬ÓÉÒ»¸öµ÷¿ØÏµÍ³ÄÚËùÓжÔÏóµÄÍâ½çʵÌ壬½«ÆäËùÒÀÀµµÄ¶ÔÏóµÄÒýÓô«µÝ¸øËü¡£Ò²¿ÉÒÔ˵£¬ÒÀÀµ±»×¢Èëµ½¶ÔÏóÖС£
ÔÚ´«Í³µÄ¿ª·¢Ä£Ê½ÖУ¬µ÷ÓÃÕ߸ºÔð¹ÜÀíËùÓжÔÏóµÄÒÀÀµ£¬Ñ»·ÒÀÀµÒ»Ö±ÊÇÃÎ÷Ê£¬¶øÔÚÒÀÀµ×¢ÈëģʽÖУ¬Õâ¸ö¹ÜÀíȨ½»¸øÁË×¢ÈëÆ÷(Injector)£¬ËüÔÚÈí¼þÔËÐÐʱ¸ºÔðÒÀÀµ¶ÔÏóµÄÌæ»»£¬¶ø²»ÊÇÔÚ±àÒëʱ¡£ÕâÖÖ¿ØÖÆ·´×ª£¬ÔËÐÐ×¢ÈëµÄÌØµã¼´ÊÇÒÀÀµ×¢ÈëµÄ¾«»ªËùÔÚ¡£
Angular ÄÜͨ¹ý²é¿´¹¹Ô캯ÊýµÄ²ÎÊýÀàÐÍ£¬À´µÃÖª×é¼þÐèÒªÄÄЩ·þÎñ¡£ ÀýÈ磬 SiteListComponent
×é¼þµÄ¹¹Ô캯ÊýÐèÒªÒ»¸ö SiteService:
constructor(private
service: HeroService) { } |
µ± Angular ´´½¨×é¼þʱ£¬»áÊ×ÏÈΪ×é¼þËùÐèµÄ·þÎñÕÒÒ»¸ö×¢ÈëÆ÷£¨ Injector £© ¡£
×¢ÈëÆ÷ÊÇÒ»¸öά»¤·þÎñʵÀýµÄÈÝÆ÷£¬´æ·Å×ÅÒÔǰ´´½¨µÄʵÀý¡£
Èç¹ûÈÝÆ÷Öл¹Ã»ÓÐËùÇëÇóµÄ·þÎñʵÀý£¬×¢ÈëÆ÷¾Í»á´´½¨Ò»¸ö·þÎñʵÀý£¬²¢ÇÒÌí¼Óµ½ÈÝÆ÷ÖУ¬È»ºó°ÑÕâ¸ö·þÎñ·µ»Ø¸ø
Angular ¡£
µ±ËùÓеķþÎñ¶¼±»½âÎöÍê²¢·µ»ØÊ±£¬ Angular »áÒÔÕâЩ·þÎñΪ²ÎÊýÈ¥µ÷ÓÃ×é¼þµÄ¹¹Ô캯Êý¡£ Õâ¾ÍÊÇÒÀÀµ×¢Èë
¡£
|