目次
vue3 と vue2 の構文の違いは何ですか
ホームページ ウェブフロントエンド フロントエンドQ&A vue3 と vue2 の構文の違いは何ですか

vue3 と vue2 の構文の違いは何ですか

Jun 23, 2022 pm 05:17 PM
vue

vue3 と vue2 の構文の違い: 1. vue2 は webpack を使用してプロジェクトをビルドするのに対し、vue3 は vite を使用してプロジェクトをビルドします; 2. vue2 は操作に pototype フォームを使用でき、コンストラクターが導入されています。 vue3 は構造体のフォームを使用して動作する必要があり、ファクトリ関数が導入されています。

vue3 と vue2 の構文の違いは何ですか

このチュートリアルの動作環境: Windows 10 システム、Vue3 バージョン、Dell G3 コンピューター。

vue3 と vue2 の構文の違いは何ですか

1.webpack と vite

vue2 は webpack を使用しますプロジェクトのビルド

Webpack はエントリ ファイルから開始し、次にルート、次にモジュールを分析し、最後にそれをパッケージ化して、サーバーを開始する準備ができたことを通知します。

vue3 は vite を使用してプロジェクトを構築します

最初にサーバーの準備ができていることを伝え、次に HTTP リクエストを送信するのを待ち、次にエントリ ファイル、動的インポート (動的インポート) コード分割ポイント (コード分割)

最大の利点と違いは、プロジェクト内にさらに多くのコード ファイルがある場合に、将来更新されたデータを保存するときに、実際の効果をより迅速に確認できるようにするため、いわゆる (ホットupdate)

2.main.js ファイル

##vue2ではプロトタイプ(プロトタイプ)という形式で動作させることができます。

vue3では構造体の形式を利用して動作させる必要があります導入するのはFactory関数です

vue3のアプリコンポーネントはルートタグを持たせられません

3.setup 関数

setup 関数は Return out を返す必要があります

<script>
 export default {
  name: &#39;appName&#39;,
  setup(){
  //变量
   let name = &#39;打工仔&#39;
   let age = 18
   //方法
   function say(){
    console.log(`我只是一个${name},今年${age}岁`)
   }
   //返回一个对象
   return {
    name,
    age,
    say
   }
  }
 }
</script>
ログイン後にコピー

現在の ${ に名前が含まれていることがわかります。 name} をこれで操作する必要はありません。this の機能は特定のスコープ内の変数を取得するだけであり、setup 関数は現在のこのスコープのみ

を提供します。現時点では非常に不快です。定義したすべての変数とメソッドを返す必要があるという意味ではありませんか? Vue3 では、スクリプト タグに

が提供されます。 のようなセットアップを追加します。

注: セットアップは前よりも前に作成され、ライフ サイクルが作成されます。つまり、現時点ではこれを直接使用します。データ内のデータを取得するには、まだ未定義です。

セットアップ構文レッスンは 2 つのパラメーター setup(props,context) を受け取ります

vue2 の this.$attrs、this.$slots はご存知のとおり、this.$emit は attrs、slots と同等です、コンテキストで出力

注: パラメータを 1 つだけ受け入れると、ページに警告が表示されますが、使用には影響しません

4. 手順とスロット

vue2 ではスロットを直接使用できますが、vue3 では v-slot 形式を使用する必要があります

v-for および v-if vue2 では、v- for 命令が最も優先され、vue3 で v-for と v-if を併用することは推奨されません。現在の v-if は v-for の判定文としてのみ扱われ、互いに競合しません。

vue3 の v-on の修飾子として keyCode を削除します。もちろん、config.keyCodes はサポートされません

vue3 の v-on.native 修飾子を削除します

vue3

5.ref と reactive

ref

のフィルターフィルターデータを変更するレスポンシブデータの場合、ref はデータを変更しますコードを直接操作すると、コードを変更できません。get と set を使用すると、現在の名前と年齢がページを変更していることがわかります。この時点では、.value を使用する必要があり、ref は依然として Refimpl# です##
<template>
  <div class="home">
    <h1>姓名:{{name}}</h1>
    <h1>年龄:{{age}}</h1>
    <button @click="say">修改</button>
  </div>
</template>
<script>
import {ref} from &#39;vue&#39;
export default {
  name: &#39;Home&#39;,
  setup(){
    let name = ref(&#39;中介&#39;)
    let age = ref(18)
    console.log(name)
    console.log(age)
    //方法
    function say(){
      name=&#39;波妞&#39;
      age=18
    }
    return {
      name,
      age,
      say
    }
  }
}
</script>
ログイン後にコピー

この場合、ページに {{name.value}} を表示する必要はありません。実際、これを行う必要はありません。vue3 では、あなたの ref がはオブジェクトなので、自動的に与えられます。.valueを追加すると、refオブジェクトを自分で定義すると、インスタンスはrefimplになります。このとき、XX.value.XXを使用して修正します

<template>
  <div class="home">
    <h1>姓名:{{name}}</h1>
    <h1>年龄:{{age}}</h1>
    <h2>职业:{{job.occupation}}</h2>
    <h2>薪资:{{job.salary}}</h2>
    <button @click="say">修改</button>
  </div>
</template>
<script>
import {ref} from &#39;vue&#39;
export default {
  name: &#39;Home&#39;,
  setup(){
    let name = ref(&#39;中介&#39;)
    let age = ref(18)
    let job=ref({
      occupation:&#39;程序员&#39;,
      salary:&#39;10k&#39;
    })
    console.log(name)
    console.log(age)
    //方法
    function say(){
      job.value.salary=&#39;12k&#39;
    }
    return {
      name,
      age,
      job,
      say
    }
  }
}
</script>
ログイン後にコピー

At this vue3 の最下層はプロキシ オブジェクトであり、Object.defineProperty の get および set に従って基本データ型がハイジャックされるため、オブジェクトはプロキシ オブジェクトになります。カプセル化された reactive は、ref を呼び出すときに自動的に行われるのと同じです。 call reactive

reactive

ref 内のオブジェクトが reactive を呼び出し、オブジェクトをプロキシに変換すると上で述べました。深い応答性を実現する reactive で Proxy に変更します

<template>
  <div class="home">
    <h1>姓名:{{name}}</h1>
    <h1>年龄:{{age}}</h1>
    <h2>职业:{{job.occupation}}<br>薪资:{{job.salary}}</h2>
    <h3>爱好:{{hobby[0]}},{{hobby[1]}},{{ hobby[2] }}</h3>
    <button @click="say">修改</button>
  </div>
</template>
<script>
import {ref,reactive} from &#39;vue&#39;
export default {
  name: &#39;Home&#39;,
  setup(){
    let name = ref(&#39;波妞&#39;)
    let age = ref(18)
    let job=reactive({
      occupation:&#39;程序员&#39;,
      salary:&#39;10k&#39;
    })
    let hobby=reactive([&#39;吃饭&#39;,&#39;睡觉&#39;,&#39;打豆豆&#39;])
    console.log(name)
    console.log(age)
    //方法
    function say(){
      job.salary=&#39;12k&#39;
      hobby[0]=&#39;学习&#39;
    }
    return {
      name,
      age,
      job,
      say,
      hobby
    }
  }
}
</script>
ログイン後にコピー

この時、メソッドが多すぎると感じると思いますが、ref で提供されている .value を使用する方が良いです。更新しますか? しかし問題があります。大量のデータがある場合、常に .value に移動する必要はありません。煙が出るまでクリックします。このとき、vue2 でシミュレートされたデータの形式を使用できます

<template>
  <div class="home">
    <h1>姓名:{{data.name}}</h1>
    <h1>年龄:{{data.age}}</h1>
    <h2>职业:{{data.job.occupation}}<br>薪资:{{data.job.salary}}</h2>
    <h3>爱好:{{data.hobby[0]}},{{data.hobby[1]}},{{ data.hobby[2] }}</h3>
    <button @click="say">修改</button>
  </div>
</template>
<script>
import {reactive} from &#39;vue&#39;
export default {
  name: &#39;Home&#39;,
  setup(){
    let data=reactive({
      name:&#39;波妞&#39;,
      age:18,
      job:{
        occupation:&#39;程序员&#39;,
        salary:&#39;10k&#39;
      },
      hobby:[&#39;吃饭&#39;,&#39;睡觉&#39;,&#39;打豆豆&#39;]
    })
    //方法
    function say(){
      data.job.salary=&#39;12k&#39;
      data.hobby[0]=&#39;学习&#39;
    }
    return {
      data,
      say,
    }
  }
}
</script>
ログイン後にコピー

refとreactiveの違い

refは基本的なデータ型を定義します

refはObject.definePropertyのgetとsetによるデータハイジャックを実装します()

ref は data.value を操作しますが、読み取り時には必要ありません。 value

reactive は、オブジェクトまたは配列のデータ型を定義します。

reactive は、プロキシを介したデータ ハイジャックを実装します。

reactive 操作とデータの読み取りは必要ありません。value

#6.vue3 の応答性の原則vue2 の属性を読み取って変更するメソッドです。追加または削除すると、ページはリアルタイムでは更新されません

直接通过下标改数组,页面也不会实时更新

vue3中响应式原理使用Proxy进行代理,使用window内置对象Reflect反射,学了Es6的语法的就知道我们在使用Proxy进行代理,好比甲方公司给出需要什么技术的前端攻城狮,让乙方去干招聘、面试等环节

Proxy可以拦截对象中任意的属性变化,当然包括读写,添加,删除等

Reflect对源对象属性进行操作

const p=new Proxy(data, {
// 读取属性时调用
get (target, propName) {
return Reflect.get(target, propName)
},
//修改属性或添加属性时调用
set (target, propName, value) {
return Reflect.set(target, propName, value)
},
//删除属性时调用
deleteProperty (target, propName) {
return Reflect.deleteProperty(target, propName)
}
})
ログイン後にコピー

【相关推荐:《vue.js教程》】

以上がvue3 と vue2 の構文の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

VueでWatchの使用方法 VueでWatchの使用方法 Apr 07, 2025 pm 11:36 PM

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

vue.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

Vueによる前のページに戻る方法 Vueによる前のページに戻る方法 Apr 07, 2025 pm 11:30 PM

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

Vueはマーキー/テキストスクロール効果を実現します Vueはマーキー/テキストスクロール効果を実現します Apr 07, 2025 pm 10:51 PM

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを&lt; div&gt;をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

怠zyなロードVUEとはどういう意味ですか? 怠zyなロードVUEとはどういう意味ですか? Apr 07, 2025 pm 11:54 PM

Vue.jsでは、Lazy Loadingを使用すると、コンポーネントまたはリソースを必要に応じて動的にロードすることができ、初期ページの読み込み時間を短縮し、パフォーマンスを改善できます。特定の実装方法には、&lt; Keep-Alive&gt;および&lt;コンポーネントは&gt;コンポーネント。怠zyなロードは、FOUC(スプラッシュ画面)の問題を引き起こす可能性があり、不必要なパフォーマンスのオーバーヘッドを避けるために怠zyなロードが必要なコンポーネントにのみ使用する必要があることに注意してください。

Vueのバージョンを照会する方法 Vueのバージョンを照会する方法 Apr 07, 2025 pm 11:24 PM

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

See all articles