角度はデザインパターンです

他の多数のフロントエンドフレームワークと同時に存在するAngular 2.0の迅速なアプローチにより、プロジェクトの新しいバージョンへの移行に関連する今後のコスト(時間とお金の両方)について多くの興奮が高まっています。 開発者は別の新しいフレームワークを学びたいと思っていますか?



正しくしましょう。 猫をお願いします。





いくつかの開発チームは、Angular 2.0で十分な時間を費やしました。これは私たちのものとほぼ同じです( 注:Ionicチーム )。 私たちは、Angular 2がまだプレアルファの状態にあったIonic 2の設計に戻り、Angular 1よりも優れた、より高速で標準に準拠した有望なモバイルWebフレームワークを手に入れたいと考えました。



Ionic 2での作業中に理解した最も重要なことは、Angular 2とAngular 1の高レベルの類似性であり、これを理解することで、Angular 1からAngular 2への切り替えがはるかに容易になります。実際、それ自体は新しいフレームワークではありません。 これは私たちが精通しており、私たちがとても愛している新しいAngular標準です。



1つのフレームワーク、多くの標準



Angularは、Angular 1、Angular 2、Angular Dartとともに、1つのES5標準に基づくフレームワークから、概念フレームワーク、または多くの標準を備えたデザインパターンに移行しました。



ES5、ES6 / TypeScript、およびDartの少なくとも3つの主要言語に基づいて、Angularスタイルでユーザーインターフェイスとフロントエンドアプリケーションを設計できますが、ES6 / TypeScriptは事実上のAngular標準になっています。



上記の各言語でAngularアプリケーションがどのように機能するかを詳しく見ると、多くの類似点に気づくでしょう。 例を見てみましょう。





スコープまたはコンテキストからプロパティを取得するには、次のようにします。



角度1:


<span> {{todaysDate | date}}</span>
      
      





角ダーツ:


 <span> {{todaysDate | date}}</span>
      
      





角度2:


 <span> {{todaysDate | date}}</span>
      
      







何か気づいたことがありますか? それらはまったく同じです! もっと複雑な例を試してみましょう。 曲のリストがあるとします:



Angular 1およびAngular Dartでは、これは次のようになります。


 <ion-list> <ion-item ng-repeat="song in songs" ng-click="openSong(song)"> {{song.artist}} - {{song.title}} <span ng-if="song.isFavorite"><i class="icon ion-heart"></i></span> </ion-item> </ion-list>
      
      





そしてAngular 2では(Ionic 2と一緒に):


 <ion-list> <ion-item *ngFor="#song of songs" (click)="openSong(song)"> {{song.artist}} - {{song.title}} <span *ngIf="song.isFavorite"><ion-icon name="heart"></ion-icon></span> </ion-item> </ion-list>
      
      







さて、さて、ここですでに多くの違いが見られます。 しかし、これらの違いは明確に定義されています。ng -repeatは 、アスタリスク*を持つngForに変わりました。これは、この要素をテンプレートとして指定するために使用されます(N回繰り返されます)。



ループは「 in 」ではなく「 of 」を使用してリスト値を取得します。 ES6およびTypeScriptにさらに近い。 Angular 2から、属性(つまり:ng-repeat、ng-if、ng-show)の書き込みにkebab-casingを使用しなくなりました( 注:ここでの書き込みの構文が「まあまあ」の場合)など)。 開発者は、より明確な名前に移行することにしました。 ( それについての詳細(eng)



Angular 1標準をAngular 2構文変換に適用すると、Angular 1およびAngular 2と概念的に同一のコードが得られます。Angularにすでに精通していると仮定すると、このコードを見てすぐに理解できます彼はそうします。



コンポーネントの例



ほとんどのAngularユーザーはAngular 2自体にテンプレートを見つけることができますが、Angular 1からのディレクティブ/コントローラのインストールに代わる新しいコンポーネントモデルには、さらに大きな変更が加えられています。



角度1の場合:


 .controller('HomeCtrl', function($scope) { //    }) .directive('profileImage', [function() { // ...    }])
      
      







Angular 2では、すべてがコンポーネントであるため、コンポーネントにコントローラーを含め、さらにディレクティブを含めるという単純な変換を適用できます。



Angular 2はTypeScriptおよびES6標準に準拠しているため、「コンポーネント」をテンプレートを含むことができるクラスとして定義します。 上記の例(Angular 1)と同様に、Angular 2のコードは次のようになります。



 import {Component} from 'angular2/core'; @Component({ selector: 'home', template: '<div> </div>' }) export class HomeComponent { }
      
      







そして、Angular 2のコンポーネントとしてのAngular 1のディレクティブ:



 @Component({ selector: 'profile-image', template: '<div>profile image</div>' }) export class ProfileImageComponent { }
      
      







しかし、スコープはどうですか?



Angular 1では、スコープは実際にはユーザーインターフェイスの特定の領域で利用可能な「コンテキスト」にすぎませんでした。 たとえば、 profileImageディレクティブは、現在のユーザーをスコープまたはコンテキストの一部として参照し、ユーザープロフィール画像をレンダリングします。



この概念は、Angular 2とまったく同じですが、ES6のクラスインスタンスデータの自然な概念を使用している点が異なります。 Angularは、通常のコンテキストシステムから標準ベースのアプローチに移行しました。 これは、JavaScriptがそれを可能にするために進化したためです(少しTypeScriptの装飾魔法により、コードがさらにきれいになります)。



 export class ProfileImageComponent { @Input() user; clickFace() { //      this.user,  ,   $scope.user    Angular 1 } }
      
      







Angular 2では、コンポーネントのデータを処理するために使い慣れた$スコープシステムを使用する必要がなくなりました。 ES6とTypeScriptのおかげで、今では無料で入手できます!



*もちろん、概念は大幅に簡素化されていますが、エンドユーザーにとっては本当に行動の自由です!



エントリーしきい値の削減



Angular 1のベテランは、Angular 1に対処するのがどれほど難しかったかを忘れがちです。私は、これらのあいまいな用語がどのようなものかを理解するために、多くの休みから1か月休憩を取らなければなりませんでした。彼らは本当に意味します。



Angularを初めて使用し、Angular 2から始める開発者は、Angular 2を習得するのに特別な知識を必要としません。 彼は、Angular 1のこれらの難解な用語をすべてスキップし、すぐにES6 / TypeScript仕様コードに飛び込むことができます。



さらに、使い慣れたモジュラーシステムがないため、Angular 2コードは残りのES6エコシステムと容易に連携し、サードパーティによるインストールとインポートが非常に簡単になります注:ここでは、側の誰かによるコードのサポートを意味し、サードパーティの開発者 )。



Angular 1の後に人生はありますか?



開発者がAngular 1構文からAngular 2構文に心理的な移行を行った後、彼らはすでにAngular 2を知っていることがわかると思います。両方の概念はほとんど同一であり、類似性はテンプレートとコンポーネントに限定されません。 ユーザーがパイプ 、依存性注入、サービスを深く掘り下げるとすぐに、多くの類似点が見つかります。



偶然の一致が非常に多いため、Angularに基づいているため、Ionic 2をIonic 1のように見せようとしました。 しかし、今では新しい、さらに良い実装だけです! これまでのところ、移行は非常に順調に進んでおり、ダストが落ち着いてAngular 2 APIが本当に安定した瞬間に、Angular 2がヒットになっていると楽観しています。



Angular 2は間違いなく最高のAngularです!



All Articles