web-dev-qa-db-ja.com

angularを標準のWebテクノロジーに置き換える

1.5年後に出荷される製品の最新のブラウザーでECMA 6を使用するという贅沢なプロジェクトに取り組んでいます。したがって、Angular 2が利用できない(ECMA 6になる)ので、今すぐWebコンポーネントを使用しないでください。そして、その間に、Angular石器時代に戻らなくてもいいですか?

Angularを置き換えるには?

youmightnotneedjquery.com と呼ばれるこのサイトがあります。これは基本的に、最近のブラウザーが実際にjQueryが従来使用していたもののほとんどがどのように持っているかについてです。 Angularの場合は、そのようなものに興味があります。

私たちは主に4つのAngular機能を使用します。それらを置き換えるための私のオプションは何ですか?

  • 角度ディレクティブ->Webコンポーネント
  • Angular Modules->ECMA 6 Modules(まったく同じではありません)
  • 角経路-> ???
  • Angular 2-way databinding-> ???

PS。 AngularをBackboneやEmberのようなものに置き換えたくありません。標準のWebテクノロジーに置き換えたいのですが、小さなツールを使用してギャップを埋める必要がある場合は、考慮して下さい。

37
AlexStack

私は過去3週間で調査してきましたが、Angularが劇的な変化を遂げた後、多くの人々が代替案を考えていることがわかりました。幸いなことに、今後のW3C Webコンポーネント標準には実際に必要なものがすべて揃っており、現時点では Polymerプロジェクトからのポリフィル で機能します。だから質問に答えるために:

  • 角度ディレクティブ->Webコンポーネントpolyfill すべてのブラウザでサポートされるまで。
  • 角度モジュール->ECMA 6モジュール問題の一部が解決されましたHTMLインポート。ただし、ブラウザがサポートするまで Traceur を使用することもできます。
  • Angular Routes->そのためのコンポーネントがありますuse <app-router>
  • Angular 2-way databinding-> Polymer は、プレーンな標準Webコンポーネントの上に「マジック」レイヤーを追加します。これには data-binding を含む多くの機能が含まれます。

+さらにもっと

HTTPリクエストの数を減らすためにファイルを連結するビルドプロセスについて疑問がある場合は、 Addy OsmaniのVulcanizeに関する投稿 をご覧ください。スポイラー:今後のHTTP 2最適化では必要ないかもしれません。

多くのAngularプロジェクトは、レイアウトにTwitter Bootstrapを使用しています。 Polymerはそれを行うことができ、さらにGoogleの Paper elements でうまく機能します(完全にオプションですが、非常に素晴らしい)。

Webコンポーネント全般に慣れる必要がある場合は、以下にニースの記事を示します。 http://webcomponents.org/articles/

そして、ここに豊富なWebコンポーネントがあります。 http://customelements.io/ 新しいNPMになるかどうかはわかりませんが、リストコンポーネントはかなり印象的で成長しています。

AngularコンポーネントのAPIを公開するのは比較的複雑です。人々は link function から 発信するイベント までのあらゆる種類のメソッドを考え出しました。 ただし、Webコンポーネントは非常に簡単です コンポーネントを外の世界とやり取りすることで、公開するAPIやイベントは<audio>のような標準のHTMLタグとそれほど変わりません。

Angular と同じように、- Polymer with Dart も使用できます。

結論

全体として、以下の場合を除いて、Angularを使用する理由はありません。

  1. angularへの巨大なソースコードへの投資があり、すべてを標準のWebに移植したくない。 (Angular 2.0はとにかくコードを非推奨にするため、Angular 1. *で立ち往生しています。)
  2. チームは怠惰すぎて新しいテクノロジーを学ぶことができません(その場合、Webはとにかくこの態度に適したプラットフォームではない可能性があります)。

Angularはそれがやっていたことにぴったりで、独自の Hype cycle がありました。 Webコンポーネントは、Angularが対処しようとしていた多くの問題を解決します。おそらくAngularは、Webコンポーネントの概念実証としての役割を持っていました。しかし、次に進む時が来ました。 Webは毎日自分自身を再発明しており、 [誰かのチーズを動かす ]は避けられません。

Polymerがすべてに対する究極の答えであるとは言っていません。せいぜい数年で役に立たなくなる別のAngularですが、今はそれを学び、使用する良い機会です。 W3C標準しないでくださいdie 簡単にできますが、Polymerは多くなる傾向がありますそれらに近い。

RIP Angular 2009-2014

その™の要素がありますが新しいですその™のアプリがあります

45
AlexStack

TLDR:独自のフレームワークをロールする前に、ほぼAngular 2.0-compatable Angular 1.3アプリを書くことを真剣に検討してください。

Angularは多くのことを正しい方法で実行しているので、それを複製しようとしているので、基本的に組み合わせて独自のものをロールすることになります。ライブラリの寄せ集めです。エンジニアリング時間に莫大な投資がない限り、構築するフレームワークは次のようになります。

  • 簡単に文書化
  • ブラウザー間のメンテナンスの悪夢と(最悪の場合)
  • 新入社員が学ぶのが難しい

すでにやりたいことを実行するフレームワークがそこになかった場合、自分でロールするのは理にかなっていると思いますが、Angularを再作成しようとすると、次のようになります。

  • 製品の構築に費やされた可能性がある、専任チームによって既に行われた多くのエンジニアリング作業を引き受ける
  • 次のことを行う必要があるため、新入社員のオンボーディングがさらに困難になりました。
    • 他の場所で使用できるオープンソースフレームワークでスキルを伸ばす代わりに、自社開発のフレームワークを使用する意思がある候補者を見つける
    • フレームワークを使用するようにこれらの従業員をトレーニングします(ドキュメントが成熟していない場合は幸運を祈ります)

あなたの質問がAngularを置き換える方法を尋ねるのを知っていますが、あまりにも多くの企業が自分たちで独自にロールし、将来的にそれを支払うルートに行くのを見ました。繰り返しになりますが、予算にフレームワークを構築(および文書化、維持)するための大量のコアリソースが含まれており、タイムラインがタイトになり、プッシュが後で発生した場合、コーナーがカットされる可能性はないと考えますあなた自身が理にかなっているかもしれません。ただし、Angular 1.3アプリを簡単に移植できるように、Angular 1.3アプリの記述方法について真剣に検討する必要があります。 Angularルート。見逃しているコミュニティのサイズを見てください。
http://www.airpair.com/js/javascript-framework-comparison

4
Dan Caddigan