Vue を学び始めたばかりの人にとって、メソッド、計算プロパティ、オブザーバーの違いは少し混乱するかもしれません。多くの場合、それぞれを使用して多かれ少なかれ同じことを達成できますが、どの点で他のものより優れているかを知ることが重要です。
この簡単なヒントでは、Vue アプリケーションのこれら 3 つの重要な側面とその使用例について説明します。これら 3 つの方法をそれぞれ使用して、同じ検索コンポーネントを構築します。
Method
Method は、ほぼ予想どおりのもので、オブジェクトのプロパティである関数です。メソッドを使用して、DOM 内で発生するイベントに反応したり、コンポーネント内の他の場所 (たとえば、計算プロパティやオブザーバー) からメソッドを呼び出すことができます。メソッドは、よく使用される機能をグループ化するために使用されます。たとえば、フォーム送信の処理や、Ajax リクエストの作成などの再利用可能な機能の構築に使用されます。
メソッド オブジェクト内の Vue インスタンスにメソッドを作成できます:
new Vue({ el: "#app", methods: { handleSubmit() {} } })
それをテンプレートで使用する場合は、次の操作を行うことができます:
<div id="app"> <button @click="handleSubmit"> Submit </button> </div>
v-on ディレクティブ を使用して、イベント ハンドラーを DOM 要素に付加します。これは、@
表記で省略することもできます。
handleSubmit メソッドは、ボタンがクリックされるたびに呼び出されます。たとえば、メソッド本体で必要なパラメータを渡したい場合は、次のようにすることができます。
<div id="app"> <button @click="handleSubmit(event)"> Submit </button> </div>
ここでは、Event オブジェクト を渡します。これにより、ブラウザーのフォーム送信時のデフォルトのアクション。
ただし、ディレクティブを使用してイベントを添付しているため、modifiers: @click.stop="handleSubmit"
を使用して、同じことをよりエレガントに実現できます。
次に、メソッドを使用して配列内のデータのリストをフィルターする例を見てみましょう。
デモでは、データ リストと検索ボックスをレンダリングします。ユーザーが検索ボックスに値を入力するたびに、レンダリングされるデータが変更されます。テンプレートは次のようになります。
<div id="app"> <h2 id="Language-nbsp-Search">Language Search</h2> <div class="form-group"> <input type="text" v-model="input" @keyup="handleSearch" placeholder="Enter language" class="form-control" /> </div> <ul v-for="(item, index) in languages" class="list-group"> <li class="list-group-item" :key="item">{{ item }}</li> </ul> </div>
ご覧のとおり、ユーザーが検索フィールドに入力するたびに呼び出される handleSearch メソッドを参照しています。メソッドとデータを作成する必要があります。
new Vue({ el: '#app', data() { return { input: '', languages: [] } }, methods: { handleSearch() { this.languages = [ 'JavaScript', 'Ruby', 'Scala', 'Python', 'Java', 'Kotlin', 'Elixir' ].filter(item => item.toLowerCase().includes(this.input.toLowerCase())) } }, created() { this.handleSearch() } })
handleSearch メソッドは、リストされた項目を入力フィールドの値で更新します。注意すべき点の 1 つは、メソッド オブジェクトでは this.handleSearch を使用してメソッドを参照する必要がないことです (これは反応で行う必要があります)。
計算されたプロパティ
上記の例の検索は期待どおりに機能しますが、より洗練された解決策は次のとおりです。 計算されたプロパティ。計算プロパティは、既存のリソースから新しいデータを結合するのに非常に便利で、メソッドに対する大きな利点の 1 つは、出力をキャッシュできることです。これは、計算されたプロパティに関連しないページ上の何かが変更されて UI が再レンダリングされた場合、キャッシュされた結果が返され、計算されたプロパティが再計算されないため、コストがかかる可能性のある操作が節約されることを意味します。
計算されたプロパティを使用すると、利用可能なデータを使用してオンザフライで計算を実行できます。この場合、並べ替える必要がある一連の項目があります。ユーザーが入力フィールドに値を入力したときに並べ替えたいと考えています。
私たちのテンプレートは、計算されたプロパティ (filteredList
) を v-for
ディレクティブに渡したことを除いて、前の反復とほぼ同じに見えます:
<div id="app"> <h2 id="Language-nbsp-Search">Language Search</h2> <div class="form-group"> <input type="text" v-model="input" placeholder="Enter language" class="form-control" /> </div> <ul v-for="(item, index) in filteredList" class="list-group"> <li class="list-group-item" :key="item">{{ item }}</li> </ul> </div>
スクリプト部分が少し異なります。メソッドを計算プロパティ内のメソッドに移動するのではなく、data
属性 (以前は空の配列でした) で言語を宣言します:
new Vue({ el: "#app", data() { return { input: '', languages: [ "JavaScript", "Ruby", "Scala", "Python", "Java", "Kotlin", "Elixir" ] } }, computed: { filteredList() { return this.languages.filter((item) => { return item.toLowerCase().includes(this.input.toLowerCase()) }) } } })
filteredList
computed プロパティには、入力フィールドの値を含む項目の配列が含まれます。最初のレンダリング時 (入力フィールドが空の場合)、配列全体がレンダリングされます。ユーザーがフィールドに値を入力すると、filteredList
はフィールドに入力された値を含む配列を返します。
計算されたプロパティを使用する場合、計算されるデータが使用可能である必要があります。使用できない場合、アプリケーション エラーが発生します。
計算されたプロパティは新しい filteredList プロパティを作成するため、テンプレート内でそれを参照できます。依存関係が変更されるたびに、filteredList の値が変更されます。ここで簡単に変更できる依存関係は、入力の値です。
最后,请注意,计算属性使我们可以创建一个变量,以在由一个或多个数据属性构建的模板中使用。一个常见的示例是fullName从用户的名字和姓氏创建一个,如下所示:
computed: { fullName() { return `${this.firstName} ${this.lastName}` } }
在模板中,您可以执行{{fullName}}。每当第一个或最后一个名称的值发生变化时,fullName的值就会发生变化。
观察者
当您希望对发生的更改(例如,对一个道具或数据属性)执行一个操作时,观察者非常有用。正如Vue文档所述,当您希望执行异步或昂贵的操作来响应数据更改时,这是最有用的。
在我们的搜索示例中,我们可以返回到方法示例,并为input
data属性设置一个监视程序。然后,我们可以对input
值的任何变化做出反应。
首先,让我们还原模板以利用languages
data属性:
<div id="app"> <h2 id="Language-nbsp-Search">Language Search</h2> <div class="form-group"> <input type="text" v-model="input" placeholder="Enter language" class="form-control" /> </div> <ul v-for="(item, index) in languages" class="list-group"> <li class="list-group-item" :key="item">{{ item }}</li> </ul> </div>
然后我们的Vue实例将如下所示:
new Vue({ el: "#app", data() { return { input: '', languages: [] } }, watch: { input: { handler() { this.languages = [ 'JavaScript', 'Ruby', 'Scala', 'Python', 'Java', 'Kotlin', 'Elixir' ].filter(item => item.toLowerCase().includes(this.input.toLowerCase())) }, immediate: true } }})
在这里,我已经将观察者作为对象(而不是函数)。这样,我可以指定一个immediate
属性,该属性将导致观察者在安装组件后立即触发。这具有填充列表的效果。然后,运行的函数在该handler
属性中。
结论
正如他们所说,强大的力量伴随着巨大的责任。Vue为您提供了构建出色应用程序所需的超能力。知道何时使用它们是建立用户喜爱的关键。方法、计算属性和观察者是您可以使用的超能力的一部分。展望未来,一定要好好利用它们!
相关推荐:
更多编程相关知识,请访问:编程入门!!
以上がVue の計算プロパティ、メソッド、ウォッチの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

Vue.jsは、複雑なユーザーインターフェイスを構築するのに適した進歩的なJavaScriptフレームワークです。 1)そのコア概念には、レスポンシブデータ、コンポーネント、仮想DOMが含まれます。 2)実際のアプリケーションでは、TODOアプリケーションを構築し、Vuerouterを統合することで実証できます。 3)デバッグするときは、vuedevtools and Console.logを使用することをお勧めします。 4)パフォーマンスの最適化は、V-IF/V-Show、リストレンダリング最適化、コンポーネントの非同期負荷などを通じて達成できます。

Vue.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模で複雑なアプリケーションにより適しています。 1。VUE.JSのレスポンシブシステムは、依存関係追跡を介してDOMを自動的に更新し、データの変更を簡単に管理できるようにします。 2.反応は一方向のデータフローを採用し、データは親コンポーネントから子コンポーネントに流れ、明確なデータフローと簡単な抽出構造を提供します。

VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。

VUEでタグのジャンプを実装する方法には、HTMLテンプレートでAタグを使用してHREF属性を指定する方法が含まれます。 VUEルーティングのルーターリンクコンポーネントを使用します。 JavaScriptでこれを使用します。$ router.push()メソッド。パラメーターはクエリパラメーターに渡すことができ、ルートは動的ジャンプのルーターオプションで構成されています。

VUEでコンポーネントジャンプを実装するための次の方法があります。Router-Linkと&lt; router-view&gt;を使用してください。ハイパーリンクジャンプを実行し、ターゲットパスとして属性を指定するコンポーネント。 &lt; router-view&gt;を使用してください現在ルーティングされているレンダリングされているコンポーネントを表示するコンポーネント。プログラマティックナビゲーションには、router.push()およびrouter.replace()メソッドを使用します。前者は歴史を保存し、後者は記録を残さずに現在のルートに取って代わります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
