検索
ホームページウェブフロントエンドVue.jsVue のリアクティブ構文シュガーは非推奨になったことに注意してください。

この記事では、Vue の最新状況をお届けします。主に 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()
  1. このメソッドは コンパイル時マクロ コマンド です。これは実行時に呼び出される実際のメソッドではありませんが、最終的な count を示す Vue コンパイラのマーカーとして使用されます。変数は リアクティブ変数 である必要があります。 リアクティブ変数は通常の変数と同様にアクセスして再割り当てできますが、これらの操作はコンパイル後に
  2. .value
  3. を持つ ref になります。したがって、上記の例のコードも、ref を使用して定義された構文にコンパイルされます。
  4. ref
  5. を返す各リアクティブ API には、接頭辞 $ が付いている対応するマクロ関数があります。次の API が含まれます:
ref ->$ref
  • computed ->$computed
  • shallowRef ->$shallowRef
  • customRef -> $customRef
  • toRef -> $toRef
    #$()
  1. マクロを使用して、既存のref リアクティブ変数に変換します。
    const a = ref(0)
    let count = $(a)
    count++
    console.log(a.value) // 1
    $$()
  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
  1. が必要で、SFC および js(x)/ts(x) ファイルに適用されます。
    // vite.config.js
    export default {
      plugins: [
        vue({
          reactivityTransform: true
        })
      ]
    }
    reactivityTransform
  • はプラグインの最上位オプションになり、script.refSugar には存在しなくなりました。 SFCにだけ効果があるわけではないからです。
vue-cli

ビルドの場合は、vue-loader@>=17.0.0 が必要ですが、現時点では SFC のみ有効です。 <pre class="brush:php;toolbar:false">// vue.config.js module.exports = {   chainWebpack: (config) =&gt; {     config.module       .rule('vue')       .use('vue-loader')       .tap((options) =&gt; {         return {           ...options,           reactivityTransform: true         }       })   } }</pre>

webpack

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
  1. ファイルに追加します。追加しないと、エラーが報告されます。 TS2304: 名前 '$ref' が見つかりません。、影響はありませんが、使用には影響しますが、開発エクスペリエンスには影響します:
    "compilerOptions":{ "types": ["vue/ref-macros"] }
オプションで、次のコードを
    eslintrc.cjs
  1. ファイルに追加します。それ以外の場合は、プロンプトが表示されます ESLint: '$ ref' is not defined.(no-undef)
    module.exports = { ...globals: {
        $ref: "readonly",
        $computed: "readonly",
        $shallowRef: "readonly",
        $customRef: "readonly",
        $toRef: "readonly",
      }
    };
レスポンシブ構文シュガーが有効になっている場合、これらのマクロ関数はこれらは世界中で利用可能であり、手動でインポートする必要はありません。 vue ファイルに
    vue/macros
  1. を明示的に導入することもできるため、2 番目と 3 番目の手順で tsconfig.jsoneslintrc を構成する必要がなくなります。 。
    import { $ref } from 'vue/macros'
    
    let count = $ref(0)
  2. 廃止された実験的機能

    レスポンシブ構文シュガーはかつて実験的な機能であり、廃止されました。
  • 廃止された理由

    をお読みください。

  • 将来のマイナー バージョン アップデートで 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 のセマンティクスが歪められるため、これは当然の懸念です (変数の割り当てによりリアクティブな効果が引き起こされる可能性があります)。

すべてのことを考慮すると、これを安定した機能として使用すると、利点よりも多くの問題が発生するため、良いトレードオフではないと考えています。

移行計画

メッセージ

  • Reactivity Transform は公式パッケージから削除されますが、これは良い試みだと思います。 ######よく書かれました。私は詳細な RFC とユーザーのフィードバックに基づく客観的な評価が好きです。最終的な結論は理にかなっています。完璧を善の敵にしないでください。
  • 私はこの機能の利便性を楽しんでいますが、実際に使用していると断片化の可能性がある問題を発見しました。将来のリリースでこの機能を削除することには抵抗があるかもしれませんが、エンジニアは真剣に受け止める必要があります。 ?
  • すべての関数を削除しますか、それとも変換を行う
  • ref.value
  • 部分だけを削除しますか?リアクティブな props デコンストラクションはどうでしょうか。これは今後も定着するのでしょうか? 中規模の電子商取引 Web サイトで問題なく使用しています。これを削除する理由は理解していますが、実際に使ってみると、これは非常に大きな改善であることがわかりました。そこで私の質問は、「今はどうなっているのか?」ということです。
  • .value
  • を嫌う人は、可能であれば ref() を避け、以前のように reactive() を使用することをお勧めしますか?
  • .value
  • は必要な複雑さです。他のリアクティブ ライブラリ xxx.set() と同様です。 すべての Reactivity Transform コードを変換するパッケージを作成するのは簡単ですよね?私も推奨された方法で物事を行うのが好きです。
  • ...
  • 推奨学習: 「
vue.js ビデオ チュートリアル


以上がVue のリアクティブ構文シュガーは非推奨になったことに注意してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjuejinで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Vue.jsの関数:フロントエンドでのユーザーエクスペリエンスの強化Vue.jsの関数:フロントエンドでのユーザーエクスペリエンスの強化Apr 19, 2025 am 12:13 AM

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

Vue.js:Web開発におけるその役割を定義しますVue.js:Web開発におけるその役割を定義しますApr 18, 2025 am 12:07 AM

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

Vue.jsの理解:主にフロントエンドフレームワークVue.jsの理解:主にフロントエンドフレームワークApr 17, 2025 am 12:20 AM

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

Netflixのフロントエンド:React(またはVue)の例とアプリケーションNetflixのフロントエンド:React(またはVue)の例とアプリケーションApr 16, 2025 am 12:08 AM

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

フロントエンドの風景:Netflixが選択にアプローチした方法フロントエンドの風景:Netflixが選択にアプローチした方法Apr 15, 2025 am 12:13 AM

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

React vs. Vue:Netflixはどのフレームワークを使用していますか?React vs. Vue:Netflixはどのフレームワークを使用していますか?Apr 14, 2025 am 12:19 AM

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

フレームワークの選択:Netflixの決定を推進するものは何ですか?フレームワークの選択:Netflixの決定を推進するものは何ですか?Apr 13, 2025 am 12:05 AM

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

Netflixのフロントエンドの反応、Vue、および未来Netflixのフロントエンドの反応、Vue、および未来Apr 12, 2025 am 12:12 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

MantisBT

MantisBT

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Mac版

SublimeText3 Mac版

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