aurelia.ioの方法を拡張します
キーテイクアウト
-
最新のJavaScriptフレームワークであるAurelia.ioは、開発者がHTMLでカスタム要素と属性を作成し、Webアプリケーションの柔軟性と機能を強化できるようにします。
Aurelia.ioのカスタム属性を使用して、既存のプラグインをラップしたり、一般的なバインディングのショートカットを提供したり、直接コードアクセスなしで既存のHTML要素を変更したりできます。これにより、既存の要素に新しい機能を簡単に追加できます。
Aurelia.ioで新しい要素を作成するには、要素のクラスとそのHTML表現のビューを定義することが含まれます。これにより、カスタムの動作と構造を備えたまったく新しい要素を作成し、コードの再利用とモジュラー設計を改善できます。
- aurelia.ioは、一連の単純な規則を使用して、必要なコードの量を減らし、開発者に優しいものにします。また、他のJavaScriptライブラリやフレームワークとの互換性を提供し、Web開発の柔軟性を高めることができます。
- 老犬を教えるHTMLの新しいトリックは、今日の現代のJavaScriptフレームワークの主要な焦点です。 WebComponentsなどの潜在的な標準に従ったり、カスタムディレクティブを作成したり、既存のクラスを拡張することにより、選択したフレームワークがHTMLのマークアップ自体を拡張する手段を提供する可能性が高くなります。 Brad Barrowによって書かれた以前の記事で、あなたは新しいプレーヤーであるAureliaに紹介されました。この記事では、Bradの記事とコードに基づいて、Aureliaの慣習をフォローしてカスタム要素とカスタム属性を作成する方法を示します。 この記事の完全なコードはGitHubリポジトリで見つけることができ、ここで構築するもののデモを見ることができます(アプリが初期化するのに時間をかけてください)。 なぜマークアップが必要なのか?
- アクションにまっすぐジャンプする前に、まず新しいコンポーネントを作成するための潜在的なユースケースを理解しましょう。そのために、下の図に示すように、紹介例を概念的に見てみましょう。ビューモデル(VM)とビューで表される2ページがあり、面白い写真とGIFビデオを表示しています。それらのそれぞれには、画像とテキストブロックを含む投稿をレンダリングする繰り返しリストがあります。
これは簡単な例では問題ではないかもしれませんが、システムが成長し、ますます多くの要件が収集されるにつれて大きな欠点に変わる可能性があります。カスタム属性を使用して既存の要素を強化する
面白いページの各投稿にポップオーバーを提供するリクエストを受け取ると想像してください。それを行うために、必要なデータ属性を配置することにより、Bootstrapの機能をMarkupに直接簡単に配線できます。しかし、他のページでも突然それを行う必要がある場合はどうでしょうか?カスタム属性を宣言することで機能を提供することで、私たちの生活をずっと楽にすることができます。これらは、次のシナリオに特に役立ちます:
- 既存のプラグインをラップ スタイルやクラスなどの一般的なバインディングのショートカット
- 直接コードアクセスなしで既存のHTML要素 /カスタム要素を変更する
ポップオーバーの作成
始めたいことを見てみましょう。新しい属性ポップオーバーは、ポップオーバーの配置、タイトル、コンテンツのパラメーターを受け入れる必要があります。配置は右側に固定されているため、値としての単純な文字列で十分です。他の2つのプロパティについては、Aureliaのデータバインディングを使用して、反復値をマッピングします。ファイルをロードするために、Aureliaの要求機能を使用します。 From属性には、インポートするリソースへの相対パスが含まれています。
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
他のフレームワークと比較して、Aureliaはメタデータを介してそれらを記述することにより、構造を宣言します。しかし、静的関数や複雑なAPIを使用する代わりに、Aureliaは最先端のES7デコレータを活用してそれを実現します。パッケージAurelia-Frameworkから必要なデコレーターをインポートします。コントロール自体については、Twitter Bootstrapが提供するPopover JavaScriptコントロールを使用します。そのため、bootstrapsのJavaScriptコードを初期化するために、jQueryハンドル$とブートストラップをインポートします。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
最初の注射デコレータは、実際のDOM要素をコンストラクターメソッドのパラメーターとして提供し、後で使用するために保存されます。
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
これで、Bindと呼ばれる方法を宣言することにより、行動のライフサイクルを選択できるすべての必要な情報が得られました。これにより、jQueryの対応方法に匹敵する適切なタイミングでコンポーネントを初期化することができます。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
最後になりましたが、変更されたハンドラーを追加します。バインディングソースは時間とともに変化していないため、これらは実際には例では実行されていないことに注意してください。
<span>import <span>{customAttribute, bindable, inject}</span> from 'aurelia-framework'; </span><span>import $ from 'bootstrap'; </span><span>import bootstrap from 'bootstrap'; </span><span>...</span>
githubの完全なファイルを表示
既存の要素に属性を提供することで新機能を追加する方法がわかりました。先に進んで、独自のカスタム要素を書き始めましょう。
カスタム要素を使用して新しいタグを作成しますまったく新しい要素を作成するために、Aureliaはカスタム属性と非常によく似たアプローチを活用します。例として、GIFページの投稿を再構築して、Reddit-GIFと呼ばれるカスタム要素で表され、実際のビデオのオンとオフを切り替える可能性を提供します。私たちの見解の結果のマークアップは、これでなければなりません:
@<span>inject(Element) </span>@<span>customAttribute('popover') </span>@<span>bindable('title') </span>@<span>bindable('content') </span>@<span>bindable('placement') </span><span>export class Popover { </span><span>...</span>
次のステップは、実際の要素を作成することです。フォルダーSRCに、要素のビューReddit-gif.htmlとそのVM Reddit-gif.jsを作成することにより、それを行います。次に見られるビューは、gifs.htmlからの以前のマークアップを活用し、実際のビデオを埋め込むために使用されるiframeを切り替えるボタンを追加することです。繰り返しになりますが、Aureliaのビューはテンプレートタグに包まれています:
VMパーツを見ると、カスタム属性を作成するときと同様のプロセスに従います。しかし、今回は別のデコレーターを活用して、Aureliaに、データという名前の1つのプロパティのみを使用してCustomElementを作成することを伝えます。
<span>constructor(element) { </span> <span>this.element = element; </span><span>}</span>
次に、iFrameを表示するかどうかを追跡するために、Gifactiveメンバーを定義しています。また、IFRAMEが見えない場合はコンテンツを事前にロードしないように、最初にGIFSRCメンバーを空にするように設定します。
<span>bind() { </span> <span>// initialize the popover </span> <span>$(this.element).popover({ </span> <span>title: this.title, </span> <span>placement: this.placement, </span> <span>content: this.content, </span> <span>trigger: 'hover' }); </span><span>}</span>
最後になりましたが、各コールで可視性とソースをフリップするトグルボタンで使用されるトグルギフ関数を追加します。
<span>titleChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.title = newValue; </span><span>} </span> <span>contentChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.content = newValue; </span><span>} </span> <span>placementChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.placement = newValue; </span><span>}</span>
コードの量を規則で減らす
<span><span><span><require</span> from<span>="./reddit-gif"</span>></span><span><span></require</span>></span> </span>... <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><reddit-gif</span> data.bind<span>="p.data"</span>></span><span><span></reddit-gif</span>></span> </span> <span><span><span></li</span>></span> </span><span><span><span></ul</span>></span></span>
Aureliaは、開発者エクスペリエンスを可能な限り快適にすることです。真実に直面しましょう。私たちの多くは多くのタイプを好きではありません。したがって、貴重なキーストロークを節約し、時間の経過とともにメンテナンスを改善するために、Aureliaは一連の簡単な慣習を使用します。たとえば、バインド可能なデコレーターのフルバージョンは実際にはこのように見えるかもしれません。他のすべてのオプションは自動的に推測されます。
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
見るべきもう1つのことは、複数のプロパティの使用を短縮する方法です。したがって、それぞれを1つずつ定義する代わりに、動的特性を期待するようにカスタム属性に伝えることもできます。そのために、Dynamicoptionsデコレーターでクラスを飾ります。これで、同じビューマークアップを再利用できますが、名前が示すように、動的なコンテキストでは非常に役立つすべてのプロパティ宣言を手動で定義する必要はありません。これは、DynamicPropertyChangedと呼ばれる1つの一般的な変更ハンドラーを書くことができることを意味します。これは、バウンドプロパティが変更されるたびに呼び出されます。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
結論
アウレリアのチームである私たちは、カスタム要素と属性を活用することにより、HTML自体を拡張する方法の簡単な概要を提供したいと考えています。例を通して、柔軟な、しかし使いやすいフレームワークを提供することで、開発者エクスペリエンスに焦点を当てることができることを願っています。ご不明な点がございましたら、Gitterチャンネルに参加してください。また、最初のカスタム要素と属性を書くときのあなたの経験を聞きたいです。
Aurelia.ioでHTMLを拡張することに関するよくある質問(FAQ)
aurelia.ioは、Web標準、シンプルさ、および拡張性に焦点を当てているため、他のJavaScriptフレームワークから際立っています。多くのフレームワークとは異なり、aurelia.ioはコラボレーションライブラリのコレクションになるように設計されています。つまり、必要なだけフレームワークを使用できます。また、コンベンションベースのクリーンなコーディングを強調し、必要なボイラープレートコードの量を減らします。さらに、Aurelia.ioのWeb標準に従うことへのコミットメントは、コードが今後のWebテクノロジーと将来のプルーフで互換性があることを意味します。 Aurelia.ioのカスタム要素には、要素のクラスとそのHTML表現のビューを定義することが含まれます。クラスには要素のロジックが含まれ、ビューはそのHTML構造を定義します。定義されると、カスタム要素は、標準のHTML要素と同様に、Aurelia.ioアプリケーションで使用できます。これにより、コードの再利用とモジュラー設計が可能になり、アプリケーションが開発と維持を容易にします。 IOは、既存のHTML要素にカスタム動作を追加する方法です。これらは、属性のロジックのクラスとHTML表現のビューを使用して、カスタム要素と同様の方法で定義されています。定義されると、カスタム属性はAurelia.ioアプリケーションのHTML要素に追加でき、まったく新しい要素を作成する必要なく機能を拡張できます。 aurelia.ioの学習曲線は、簡単に学習できるように設計されています。 JavaScriptとHTMLに精通している場合は、Aurelia.ioをすばやく拾うことができるはずです。フレームワークのドキュメントは包括的であり、開始するのに役立つ多くの例が含まれています。信頼性とパフォーマンス。ユニットテスト、統合テスト、エンドツーエンドテストの組み合わせを使用して、フレームワークのすべての側面をカバーします。パフォーマンスの観点から、Aurelia.ioは、最小限のフットプリントと最適化されたレンダリングを備えた高速で効率的になるように設計されています。 IOには、フレームワークに貢献し、お互いにサポートを提供する活気に満ちた活発な開発者のコミュニティがあります。コミュニティフォーラム、ギターチャットルーム、スタックオーバーフロータグなど、多くのリソースが利用可能です。さらに、Aurelia.ioチームは専門的なサポートとトレーニングサービスを提供しています。aurelia.ioは、Web、モバイル、およびデスクトップ開発のための最新のオープンソースJavaScriptフレームワークです。開発者がカスタムHTML要素を作成し、既存のHTML要素にカスタム属性を追加し、HTMLレンダリングのフローを制御できるようにすることにより、HTMLを拡張します。これは、Aureliaの強力なテンプレートエンジンを通じて達成されます。これにより、カスタム要素と属性を解釈し、標準のHTMLとしてレンダリングします。これにより、クリーンで読みやすいコードを維持しながら、よりダイナミックでインタラクティブで複雑なWebアプリケーションが可能になります。
aurelia.ioは、他のJavaScriptフレームワークと比較していますか?
aurelia.io?
以上がaurelia.ioの方法を拡張しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。
