この記事では、Vue の最新状況をお届けします。主に Vue のレスポンシブ構文シュガーについて説明します。興味のある友達は一緒に見てください。皆さんのお役に立てれば幸いです。
はじめに
複合 API の概念が導入されて以来、大きな未解決の問題が ref# でした。 ## と
reactive の間で 1 つを使用する必要がありますか?
reactive には分解により応答性が失われるという問題があり、一方
ref はあらゆる場所で使用する必要がある
.value は面倒に感じられ、型システム。
.value をドロップします。
<template> <button>{{ count }}</button> </template>
ref を使用して、
count 変数と
increment メソッドを定義します。 ##<pre class="brush:php;toolbar:false">let count = ref(0)
function increment() {
count.value++
}</pre>
レスポンシブ構文シュガーを使用すると、次のようなコードを書くことができます:
let count = $ref(0) function increment() { count++ }Vue のレスポンシブ構文シュガーはコンパイル時の変換ステップ
- $ref()
- このメソッドは
コンパイル時マクロ コマンド
です。これは実行時に呼び出される実際のメソッドではありませんが、最終的な count を示す Vue コンパイラのマーカーとして使用されます。変数はリアクティブ変数
である必要があります。 リアクティブ変数は通常の変数と同様にアクセスして再割り当てできますが、これらの操作はコンパイル後に .value - を持つ
ref
になります。したがって、上記の例のコードも、ref
を使用して定義された構文にコンパイルされます。 ref - を返す各リアクティブ API には、接頭辞
$
が付いている対応するマクロ関数があります。次の API が含まれます:
- computed ->$computed
- shallowRef ->$shallowRef
- customRef -> $customRef
- toRef -> $toRef
- #$()
- マクロを使用して、既存の
ref
リアクティブ変数に変換します。const a = ref(0) let count = $(a) count++ console.log(a.value) // 1
- $$()
- マクロを使用すると、リアクティブ変数への参照を、対応する
ref
への参照として保持できます。let count = $ref(0) console.log(isRef($$(count))) // true
は、リアクティブ変数でもあるため、構造化されていない props
でも動作します。コンパイラーは、toRef
: <pre class="brush:php;toolbar:false">const { count } = defineProps()
passAsRef($$(count))</pre>
Configuration
レスポンシブ構文シュガーは
Combined APIの独自の機能であり、次のように変換する必要があります。ビルドステップ経由で使用されます。
必須、- @vitejs/plugin-vue@>=2.0.0
- が必要で、SFC および js(x)/ts(x) ファイルに適用されます。
// vite.config.js export default { plugins: [ vue({ reactivityTransform: true }) ] }
- reactivityTransform
- はプラグインの最上位オプションになり、
script.refSugar
には存在しなくなりました。 SFCにだけ効果があるわけではないからです。
ビルドの場合は、vue-loader@>=17.0.0
が必要ですが、現時点では SFC のみ有効です。 <pre class="brush:php;toolbar:false">// vue.config.js
module.exports = {
chainWebpack: (config) => {
config.module
.rule('vue')
.use('vue-loader')
.tap((options) => {
return {
...options,
reactivityTransform: true
}
})
}
}</pre>
vue-loader
がビルドされる場合、vue-loader@>=17.0.0
が必要です (現在は SFC のみ) 。 効果。 <pre class="brush:php;toolbar:false">// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
reactivityTransform: true
}
}
]
}
}</pre>
- tsconfig.json
- ファイルに追加します。追加しないと、エラーが報告されます。
TS2304: 名前 '$ref' が見つかりません。
、影響はありませんが、使用には影響しますが、開発エクスペリエンスには影響します:"compilerOptions":{ "types": ["vue/ref-macros"] }
- eslintrc.cjs
- ファイルに追加します。それ以外の場合は、プロンプトが表示されます
ESLint: '$ ref' is not defined.(no-undef)
:module.exports = { ...globals: { $ref: "readonly", $computed: "readonly", $shallowRef: "readonly", $customRef: "readonly", $toRef: "readonly", } };
- vue/macros
- を明示的に導入することもできるため、2 番目と 3 番目の手順で
tsconfig.json
とeslintrc
を構成する必要がなくなります。 。import { $ref } from 'vue/macros' let count = $ref(0)
廃止された実験的機能
- レスポンシブ構文シュガーはかつて実験的な機能であり、廃止されました。
- 廃止された理由 将来のマイナー バージョン アップデートで Vue コアから削除される予定です。引き続き使用したい場合は、
- Vue Macros 放棄の理由
あなた Yuxi は 2 週間前 (2023 年 2 月 21 日午前 10:05 GMT 8、グリニッジ標準時 8 時) に個人的に放棄の理由を述べました。翻訳は次のとおりです。
すでにご存知のとおり、私たちはチームの合意により、この RFC を正式に放棄しました。 #########理由######
Reactivity Transform の本来の目的は、リアクティブ状態を処理する際のよりクリーンな構文を提供することで開発者のエクスペリエンスを向上させることでした。実際の使用状況からのフィードバックを収集するための実験製品としてリリースしています。これらの提案された利点にもかかわらず、私たちは次の問題を発見しました:
.value
を失うと、何が追跡されているのか、どの行が反応性効果をトリガーしたのかを知ることが難しくなります。この問題は、小規模な SFC ではあまり明らかではありませんが、大規模なコード ベースでは、特に構文が SFC の外部でも使用されている場合、精神的なオーバーヘッドがより顕著になります。(1) により、一部のユーザーは SFC 内でのみ Reactivity Transform を使用することを選択します。これにより、異なるメンタル モデル間で不一致とコンテキスト切り替えコストが生じます。つまり、SFC 内でのみ使用すると不整合が発生し、SFC の外で使用すると保守性が損なわれるというジレンマがあります。
生の参照を使用することを想定した外部関数が依然として存在するため、リアクティブ変数と生の参照の間の変換は避けられません。これにより、学習コンテンツと精神的負荷がさらに増え、初心者にとっては通常の Comboposition API よりも混乱することがわかりました。
最も重要なことは、断片化の潜在的なリスクです。これは明示的なオプトインですが、一部のユーザーは、この提案を使用することをオプトインしているユーザーもいれば、使用しないことを選択しているユーザーもいる、異なるコード ベースで作業する必要があるのではないかという懸念から、この提案に強い反対を表明しています。 Reactivity Transform には別のメンタル モデルが必要であり、JavaScript のセマンティクスが歪められるため、これは当然の懸念です (変数の割り当てによりリアクティブな効果が引き起こされる可能性があります)。
すべてのことを考慮すると、これを安定した機能として使用すると、利点よりも多くの問題が発生するため、良いトレードオフではないと考えています。
移行計画
- この機能は、Vue マクロを介して外部パッケージとしてすでにサポートされています。
- 3.3: この機能は非推奨としてマークされます。引き続き機能しますが、それまでの間は Vue マクロに移行する必要があります。
- 3.4: この機能はコアから削除され、Vue マクロを使用しない限り機能しなくなります。
メッセージ
- Reactivity Transform は公式パッケージから削除されますが、これは良い試みだと思います。 ######よく書かれました。私は詳細な RFC とユーザーのフィードバックに基づく客観的な評価が好きです。最終的な結論は理にかなっています。完璧を善の敵にしないでください。
- 私はこの機能の利便性を楽しんでいますが、実際に使用していると断片化の可能性がある問題を発見しました。将来のリリースでこの機能を削除することには抵抗があるかもしれませんが、エンジニアは真剣に受け止める必要があります。 ?
- すべての関数を削除しますか、それとも変換を行う ref.value
- 部分だけを削除しますか?リアクティブな
props
デコンストラクションはどうでしょうか。これは今後も定着するのでしょうか?中規模の電子商取引 Web サイトで問題なく使用しています。これを削除する理由は理解していますが、実際に使ってみると、これは非常に大きな改善であることがわかりました。そこで私の質問は、「今はどうなっているのか?」ということです。
- .value
- を嫌う人は、可能であれば
ref()
を避け、以前のようにreactive()
を使用することをお勧めしますか? .value - は必要な複雑さです。他のリアクティブ ライブラリ
xxx.set()
と同様です。すべての Reactivity Transform コードを変換するパッケージを作成するのは簡単ですよね?私も推奨された方法で物事を行うのが好きです。
- ...
- 推奨学習: 「
以上がVue のリアクティブ構文シュガーは非推奨になったことに注意してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Vue.jsは複数の機能を介してユーザーエクスペリエンスを改善します。1。レスポンシブシステムは、リアルタイムデータフィードバックを実現します。 2。コンポーネント開発により、コードの再利用性が向上します。 3. Vuerouterはスムーズなナビゲーションを提供します。 4.動的データの結合および遷移アニメーションは、相互作用効果を強化します。 5.エラー処理メカニズムにより、ユーザーのフィードバックが保証されます。 6.パフォーマンスの最適化とベストプラクティスは、アプリケーションのパフォーマンスを改善します。

Web開発におけるVue.jsの役割は、開発プロセスを簡素化し、効率を向上させるプログレッシブJavaScriptフレームワークとして機能することです。 1)開発者は、レスポンシブデータのバインディングとコンポーネント開発を通じてビジネスロジックに集中できるようになります。 2)VUE.JSの作業原則は、パフォーマンスを最適化するためにレスポンシブシステムと仮想DOMに依存しています。 3)実際のプロジェクトでは、VUEXを使用してグローバルな状態を管理し、データの応答性を最適化することが一般的な慣行です。

Vue.jsは、2014年にYou YuxiがリリースしたプログレッシブJavaScriptフレームワークで、ユーザーインターフェイスを構築します。その中心的な利点には、次のものが含まれます。1。レスポンシブデータバインディング、データ変更の自動更新ビュー。 2。コンポーネントの開発では、UIは独立した再利用可能なコンポーネントに分割できます。

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1)Reactのコンポーネント開発モデルと強力なエコシステムが、Netflixがそれを選択した主な理由です。 2)コンポーネント化により、Netflixは複雑なインターフェイスをビデオプレーヤー、推奨リスト、ユーザーコメントなどの管理可能なチャンクに分割します。 3)Reactの仮想DOMおよびコンポーネントライフサイクルは、レンダリング効率とユーザーインタラクション管理を最適化します。

Netflixのフロントエンドテクノロジーでの選択は、主にパフォーマンスの最適化、スケーラビリティ、ユーザーエクスペリエンスの3つの側面に焦点を当てています。 1。パフォーマンスの最適化:Netflixは、Reactをメインフレームワークとして選択し、SpeedCurveやBoomerangなどのツールを開発して、ユーザーエクスペリエンスを監視および最適化しました。 2。スケーラビリティ:マイクロフロントエンドアーキテクチャを採用し、アプリケーションを独立したモジュールに分割し、開発効率とシステムのスケーラビリティを改善します。 3.ユーザーエクスペリエンス:Netflixは、Material-UIコンポーネントライブラリを使用して、A/Bテストとユーザーフィードバックを介してインターフェイスを継続的に最適化して、一貫性と美学を確保します。

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の内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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