vue 3.0手触り体験
vue 3.0 betaバージョンはすでにリリースされています。一時期は一波体験をしました。
なお、本明細書のすべてのプレゼンテーションはvue 3.0 betaバージョンに基づいており、後続の正式版apiは変更されないことを保証していません。公式文書が出たら、公式サイトを基準とします。
環境構築
直接足場を使用して、現地に設置されていない場合は足場設置命令を実行できます。
vue 3.0プロジェクトにアップグレードしました。
vue-cliはまだvue 3.0を直接サポートしていません。プラグインのアップグレードに依存して、コマンドを入力します。
最新版vue-cliは直接vue 3プロジェクトを作成できます。(200.09更新)
今日はvue-cliを4.5.4バージョンに更新しました。vue 3プロジェクトを直接作成することができます。vue create vue 3-demoコマンドを使ってテスト項目を作成します。次のオプションがあります。
デフォルトのvue 3構成を直接選択してもいいです。最後の項目を選んで手動で配置してもいいです。ここで手動構成をデモンストレーションして、Manualy select feat uresを選んで、車を返します。
必要に応じて選んでください。最初の項目はVueバージョンを選択できることを示しています。選択したら車に戻ります。
ここでvueのバージョンを選択して、直接3.xを選んで車に戻ります。これでvue 3に基づいて構築されたプロジェクトが作成されます。
vue 3.0特性体験
上記の手順でvue 3.0項目にアップグレードしたら、自動的にいくつかのファイルをvue 3.0の書き方に変えてくれます。
vueのインスタンスを作成
vue 3 vue 3作成例はnewの方式を使う必要がありません。src/main.jsファイルを見てください。
ルート
ルートの設定ファイルを見てください。src/router/index.js
レスポンスデータ、methods、ウォッチ、computed
ここは一番大きい部分を変えるべきです。また、論争の一番大きい部分です。どういうことですか?
vue 2バージョンでは、応答式データはこうであると宣言します。
次にカウンタの機能を実証します。methods、watchとcomputtedを結合します。
次にウォッチを定義します。手動でウォッチを導入する必要があります。これもTree-Sehakingの目的に達しています。何を使って何を導入しますか?最後に包装しても使うアプリだけを包装して、後のcomputedも同じです。
ウオッチ法には2つのパラメータがあり、いずれも関数であり、1番目の関数は傍受値を返し、2番目の関数はコールバック関数であり、その2つのパラメータはそれぞれ新しい値と古い値を表しています。
computted方法は計算した値を返します。最後にリターンが必要です。使い方は上のように分かりやすいです。
このように応答式データを宣言してもいいです。
前に述べたように、応答式のデータはrefを使う必要がありますが、実際にはreactiveを使って複数の変数を宣言してもいいです。
上でrefとreactiveと言いましたが、ここで簡単に話してください。reactiveは、一般的なオブジェクトを受信し、そのオブジェクトの応答式エージェントを返します。これは、2.xのVue.observable()に相当します。
vue 3.0では、get CurrenntInstance方法を使用して、現在のコンポーネントのインスタンスを取得し、ctx属性を介して現在のコンテキストを取得し、ctx.routerはルーティングの一例であり、ctx.c.urrentRouteは現在のルーティング情報を含む。
ファイルsrc/store/index.jsを表示する:
作成store:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
なお、本明細書のすべてのプレゼンテーションはvue 3.0 betaバージョンに基づいており、後続の正式版apiは変更されないことを保証していません。公式文書が出たら、公式サイトを基準とします。
環境構築
直接足場を使用して、現地に設置されていない場合は足場設置命令を実行できます。
npm install -g @vue/cli
ローカルにインストールされているなら、更新してみてもいいです。
npm update -g @vue/cli
テストvue-cliバージョン:
vue -V
@vue/cli 4.4.1
次はvueプロジェクトを作成します。
vue create vue3-demo
コマンドインタラクティブウィンドウでManualy select featureを選択します。
Vue CLI v4.4.1
? Please pick a preset:
(router, vuex, sass, babel, eslint)
sass (router, vuex, sass, babel, eslint)
test (less, babel, eslint)
default (babel, eslint)
❯ Manually select features
以下のオプションをチェックします。一般的なビジネス開発にはこれらが必要です。
Vue CLI v4.4.1
? Please pick a preset: Manually select features
? Check the features needed for your project:
◉ Babel
◯ TypeScript
◯ Progressive Web App (PWA) Support
◉ Router
◉ Vuex
❯◉ CSS Pre-processors
◉ Linter / Formatter
◯ Unit Testing
◯ E2E Testing
車に戻ったら自分の習慣に合わせて選んで、プロジェクトを作ります。この時はまだvue 2のプロジェクト環境に注意してください。次はvue 3にアップグレードした運行環境です。vue 3.0プロジェクトにアップグレードしました。
vue-cliはまだvue 3.0を直接サポートしていません。プラグインのアップグレードに依存して、コマンドを入力します。
cd vue3-demo
vue add vue-next
上記のコマンドを実行したら、自動的にvue-cli-plugin-vue-nextプラグインをインストールします。これはプロジェクトをvue 3.0の依存環境にアップグレードします。最新版vue-cliは直接vue 3プロジェクトを作成できます。(200.09更新)
今日はvue-cliを4.5.4バージョンに更新しました。vue 3プロジェクトを直接作成することができます。vue create vue 3-demoコマンドを使ってテスト項目を作成します。次のオプションがあります。
デフォルトのvue 3構成を直接選択してもいいです。最後の項目を選んで手動で配置してもいいです。ここで手動構成をデモンストレーションして、Manualy select feat uresを選んで、車を返します。
必要に応じて選んでください。最初の項目はVueバージョンを選択できることを示しています。選択したら車に戻ります。
ここでvueのバージョンを選択して、直接3.xを選んで車に戻ります。これでvue 3に基づいて構築されたプロジェクトが作成されます。
vue 3.0特性体験
上記の手順でvue 3.0項目にアップグレードしたら、自動的にいくつかのファイルをvue 3.0の書き方に変えてくれます。
vueのインスタンスを作成
vue 3 vue 3作成例はnewの方式を使う必要がありません。src/main.jsファイルを見てください。
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
createApp(App).use(router).use(store).mount('#app')
現在は関数的なスタイルでvueのインスタンスを作成していますが、vue 2はどのようにインスタンスを作成したか覚えていますか?
// Vue2
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
どちらが好きですか?私はvue 3.0の関数スタイルが好きです。ルート
ルートの設定ファイルを見てください。src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
これはアップグレードした後のルートの配置方法で、vue 2バージョンとは大きな違いが見られます。ルートの例を作成するには、手動でcreateRouter方法を導入する必要があります。historyモードのルートを作成するには、CreateWebHistory方法を手動で導入する必要があります。これはTree-shkingの目的に達しています。つまり、すべてのアプリを梱包しないで、あなたが使うapiだけを包装します。 レスポンスデータ、methods、ウォッチ、computed
ここは一番大きい部分を変えるべきです。また、論争の一番大きい部分です。どういうことですか?
vue 2バージョンでは、応答式データはこうであると宣言します。
// Vue2
export default {
// ....
data() {
return {
state: {
count: 0
}
};
},
}
vue 3.0には、このようなものが必要です。
// Vue3
import { ref } from 'vue'
export default {
setup () {
const count = ref(0) // count, 0
const str = ref('hello') // str, 'hello'
return {
count,
str
}
}
}
まずref法を導入して、それを使って応答変数を宣言します。これらの操作はsetup関数で行う必要があります。そして、methods、watch、computtedを追加するにはsetupで行う必要があります。これはvue 2の中で大きな違いがあります。vue 2はオプションを使ってdata、methods、watch、computedを作成します。 次にカウンタの機能を実証します。methods、watchとcomputtedを結合します。
<template>
<div class="home">
<p>count: {{count}}</p>
<p>doubleCount: {{doubleCount}}</p>
<button @click="add"> </button>
</div>
</template>
<script>
import { ref, watch, computed } from 'vue'
export default {
setup () {
// count , 0
const count = ref(0)
// add
const add = () => {
count.value++
}
// watch, watch
watch(
() => count.value,
(val, oldVal) => { console.log(`new count: ${val},old count: ${oldVal}`) }
)
// computed, computed
const doubleCount = computed(() => count.value * 2)
return {
count,
add,
doubleCount
}
}
}
</script>
この例を見ると、まず定義方法はsetup関数の中で直接定義できます。そしてreturnで出ればいいです。方法でcountにアクセスするときに使用しますか?value方法でアクセスします。ここで強調したいのですが、setupで宣言された応答式変数にアクセスするときは、Watchとcomputedにアクセスする必要があります。次にウォッチを定義します。手動でウォッチを導入する必要があります。これもTree-Sehakingの目的に達しています。何を使って何を導入しますか?最後に包装しても使うアプリだけを包装して、後のcomputedも同じです。
ウオッチ法には2つのパラメータがあり、いずれも関数であり、1番目の関数は傍受値を返し、2番目の関数はコールバック関数であり、その2つのパラメータはそれぞれ新しい値と古い値を表しています。
computted方法は計算した値を返します。最後にリターンが必要です。使い方は上のように分かりやすいです。
このように応答式データを宣言してもいいです。
前に述べたように、応答式のデータはrefを使う必要がありますが、実際にはreactiveを使って複数の変数を宣言してもいいです。
<template>
<div class="home">
<p>str: {{state.str}}</p>
<p>count: {{state.count}}</p>
<button @click="add"> </button>
</div>
</template>
<script>
import { reactive } from 'vue'
export default {
setup () {
// reactive,
const state = reactive({
count: 0,
str: 'hello'
})
// , .value
const add = () => {
// state.count.value++ //
state.count++
}
return {
state,
add
}
}
}
</script>
reactiveとref上でrefとreactiveと言いましたが、ここで簡単に話してください。reactiveは、一般的なオブジェクトを受信し、そのオブジェクトの応答式エージェントを返します。これは、2.xのVue.observable()に相当します。
const obj = reactive({ count: 0 })
// obj
// , obj.count
refもまた、パラメータを受信して応答式を返し、変更可能なrefオブジェクトであり、一般的なパラメータは、数値や文字列などの基礎タイプである。導入されたパラメータがオブジェクトの場合は、reactive方法を呼び出して深層応答変換を行います。refオブジェクトは、内部値を指す単一の属性を持っています。valueは、その値にアクセスするときに必要です。valueはその値を取得します。ただし、セットで戻ってテンプレートに使う場合は、{}に追加・valueアクセスは必要なく、戻ってきたら自動的に解除されます。
<template>
<div>{{ count }}</div>
</template>
<script>
export default {
setup() {
return {
count: ref(0), // , .value
}
},
}
</script>
ルート情報を取得vue 3.0では、get CurrenntInstance方法を使用して、現在のコンポーネントのインスタンスを取得し、ctx属性を介して現在のコンテキストを取得し、ctx.routerはルーティングの一例であり、ctx.c.urrentRouteは現在のルーティング情報を含む。
<script>
import { getCurrentInstance } from 'vue'
export default {
setup () {
const { ctx } = getCurrentInstance()
console.log(ctx.$router.currentRoute.value)
}
}
</script>
vuexファイルsrc/store/index.jsを表示する:
import Vuex from 'vuex'
export default Vuex.createStore({
state: {
},
mutations: {
},
actions: {
},
modules: {
}
})
storeのインスタンスを作成する方法が変わったことが分かりました。vue 2ではnewを使用する方式です。
// Vue2 store
export default new Vuex.Store({
// ...
})
小さな例を示しています。Vue 3.0でstoreを使います。作成store:
import Vuex from 'vuex'
export default Vuex.createStore({
state: {
count: 0
},
mutations: {
ADD (state) {
state.count++
}
},
actions: {
add ({ commit }) {
commit('ADD')
}
},
modules: {
}
})
コンポーネントにstoreを使う:
<template>
<div class="home">
<p>{{count}}</p>
<button @click="add"> </button>
</div>
</template>
<script>
import { computed } from 'vue'
import { useStore } from 'vuex'
export default {
setup () {
const store = useStore()
const count = computed(() => store.state.count)
const add = () => {
store.dispatch('add')
}
return {
count,
add
}
}
}
</script>
vuexのapiはほとんど変化していないが、コンポーネント内で使用する場合はuse Store方法を導入してstoreのインスタンスに戻る必要があります。実際には、現在のコンポーネントコンテキストでstoreを取得することもできます。
import {getCurrentInstance} from 'vue'
// ...
const store = getCurrentInstance().ctx.$store
ここまで記録します。日常的に使うところまで大体カバーしています。vue 3.0の正式版を待ちましょう。まだその話です。上で述べたのは現在のvue 3.0 beta版だけに基づいています。後続のappiが変わらないことは保証されません。正式版の公式文書を待ちましょう。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。