Youdaの新しいプチビューの実装

Youdaの新しいプチビューの実装

序文

You Dada の GitHub を開いてみたら petite-vue というものを発見。おお、まだ Vue3 と Vite の学習が終わっていないのに、新しいものを開発し始めているなんて。死ぬまで学ぶ姿勢で、これが何なのか見てみましょう。何しろ、彼は私たちの先祖ですから!

導入

名前からわかるように、petite-vue は vue のミニバージョンであり、サイズはわずか 5.8kb と非常に小さいと言えます。 You Dada によれば、petite-vue はプログレッシブエンハンスメントに最適化された Vue の代替ディストリビューションです。標準の Vue と同じテンプレート構文とレスポンシブ モデルを提供します。

  • サイズはたったの5.8kb
  • Vue互換テンプレート構文
  • DOMベースのインプレース変換
  • 応答性の高いドライブ

ライブ

以下は、petite-vue の使い方の紹介です。

使いやすい

<本文>
  <script src="https://unpkg.com/petite-vue" 初期化を延期する></script>
  <div v-scope="{ カウント: 0 }">
    <button @click="count--">-</button>
    <span>{{ カウント }}}
    <button @click="count++">+</button>
  </div>
</本文>

スクリプト タグを介してインポートし、同時に init を追加すると、v-scope を使用してデータをバインドできるため、単純なカウンターが実現されます。

Alpine.js フレームワークに精通している人にとっては、この 2 つの構文は非常に似ているため、馴染みがあるかもしれません。

<!-- Alpine.js -->
<div x-data="{ 開く: false }">
  <button @click="open = true">ドロップダウンを開く</button>
  <ul x-show="開く" @click.away="開く = false">
    ドロップダウン本文
  </ul>
</div>

init メソッドを使用するだけでなく、次のメソッドも使用できます。

<本文>
  <div v-scope="{ カウント: 0 }">
    <button @click="count--">-</button>
    <span>{{ カウント }}}
    <button @click="count++">+</button>
  </div>
  <!-- 本文の下部に配置します -->
  <script src="https://unpkg.com/petite-vue"></script>
  <スクリプト>
    PetiteVue.createApp().マウント()
  </スクリプト>
</本文>

または ES モジュールを使用します:

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    作成App().マウント()
  </スクリプト>
  
  <div v-scope="{ カウント: 0 }">
    <button @click="count--">-</button>
    <span>{{ カウント }}}
    <button @click="count++">+</button>
  </div>  
</本文>

ルートスコープ

createApp 関数は、通常のデータやメソッドの使用方法と同様にオブジェクトを受け入れることができますが、v-scope では値をバインドする必要はありません。

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    作成App({
      カウント: 0,
      インクリメント() {
        this.count++
      },
      減算() {
        this.count--
      }
    })。マウント()
  </スクリプト>
  
  <div v-スコープ>
    <button @click="decrement">-</button>
    <span>{{ カウント }}}
    <button @click="増分">+</button>
  </div>
</本文>

マウント要素の指定

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    作成アプリ({
      カウント: 0
    }).mount('#app')
  </スクリプト>
  
  <div id="アプリ">
    {{ カウント }}
  </div>
</本文>

ライフサイクル

各要素のライフサイクルイベントをリッスンできます。

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    作成アプリ({
      onMounted1(el) {
        console.log(el) // <span>1</span>
      },
      onMounted2(el) {
        console.log(el) // <span>2</span>
      }
    }).mount('#app')
  </スクリプト>
  
  <div id="アプリ">
    <span @mounted="onMounted1($el)">1</span>
    <span @mounted="onMounted2($el)">2</span>
  </div>
</本文>

コンポーネント

petite-vue では、関数を使用してコンポーネントを作成し、テンプレートを通じて再利用できます。

<本文>
  <スクリプトタイプ="モジュール">
  'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。

  関数 Counter(props) {
    戻る {
      $template: '#counter-template',
      カウント: props.initialCount、
      インクリメント() {
        this.count++
      },
      減算() {
        this.count++
      }
    }
  }

  作成App({
    カウンタ
  })。マウント()
</スクリプト>

<テンプレート id="カウンターテンプレート">
  <button @click="decrement">-</button>
  <span>{{ カウント }}}
  <button @click="増分">+</button>
</テンプレート>

<!-- 再利用 -->
<div v-scope="カウンター({ 初期カウント: 1 })"></div>
<div v-scope="カウンター({ 初期カウント: 2 })"></div>
</本文>

グローバル状態管理

リアクティブAPIを使用すると、グローバルな状態管理を簡単に作成できます。

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp, reactive} をインポートします。

    constストア = リアクティブ({
      カウント: 0,
      インクリメント() {
        this.count++
      }
    })
    //カウントを1増やす
    ストア.増分()
    作成App({
      店
    })。マウント()
  </スクリプト>

  <div v-スコープ>
    <!-- 出力 1 -->
    <span>{{ ストア.count }}</span>
  </div>
  <div v-スコープ>
    <button @click="store.increment">+</button>
  </div>
</本文>

カスタムディレクティブ

ここでは、入力ボックスの自動フォーカスのためのコマンドを簡単に実装します。

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    
    定数autoFocus = (ctx) => {
      ctx.el.focus()
    }

    createApp().directive('auto-focus', autoFocus).mount()
  </スクリプト>

  <div v-スコープ>
    <v-オートフォーカスを入力 />
  </div>
</本文>

組み込みの指示

  • vモデル
  • v-if / v-else / v-else-if
  • v-for
  • v-ショー
  • v-html
  • v-テキスト
  • v-pre
  • v-1回
  • Vクローク

注意: v-for はキーを必要とせず、v-for は深い分割をサポートしていません。

<本文>
  <スクリプトタイプ="モジュール">
    'https://unpkg.com/petite-vue?module' から {createApp} をインポートします。
    
    作成App({
      ユーザーリスト: [
        { 名前: '张三', 年齢: { a: 23, b: 24 } },
        { 名前: 'Li Si'、年齢: { a: 23、b: 24 } }、
        { 名前: '王五'、年齢: { a: 23、b: 24 } }
      ]
    })。マウント()
  </スクリプト>

  <div v-スコープ>
    <!-- サポート -->
    <li v-for="{ 年齢 } をユーザーリストに追加">
      {{ 年齢.a }}
    </li>
    <!-- サポートされていません -->
    <li v-for="{ 年齢: { a } } ユーザーリスト内">
      {{a}}
    </li>
  </div>
</本文>

サポートされていません

より軽量かつコンパクトにするために、petite-vue は以下の機能をサポートしていません。

  • ref()、計算
  • レンダリング関数。petite-vueには仮想DOMがないため
  • マップ、セット、その他の応答タイプはサポートされていません
  • トランジション、キープアライブ、テレポート、サスペンス
  • v-on="オブジェクト"
  • v-is &
  • v-bind:style 自動プレフィックス

要約する

上記は petite-vue の簡単な紹介と使用方法です。さらに新しい発見があるかどうかはあなた次第です。

一般的に、petite-vue は Vue の基本的な機能をいくつか保持しているため、Vue 開発者は無料で使用できます。以前は、小さくてシンプルなページを開発するときに Vue を参照したい場合、パッケージのサイズが原因で諦めることが多かったのですが、今では petite-vue の登場により、この状況が救われるかもしれません。結局のところ、petite-vue のサイズは本当に小さく、わずか 5.8kb で、Alpine.js の約半分です。

Youdadaの新しいpetite-vueの実装に関するこの記事はこれで終わりです。vue petite関連のコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue は複数の方法で js ファイルを参照します (推奨)
  • Vueルーティングジャンプの4つの方法の詳細な説明(パラメータ付き)
  • VUE 要素の非表示と表示 (v-show ディレクティブ)
  • Vueを使用して写真をアップロードする3つの方法
  • vue.js で作成されたメソッドの機能
  • 一般的な Vue.js 命令の概要 (v-if、v-for など)
  • Vue.js実戦vue-routerを使ってページにジャンプする
  • Vue での Cookie 操作例の使用方法

<<:  Ubuntu 18.04の下のディレクトリにディスクをマウントします

>>:  MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

推薦する

Linux で Nginx 1.16.0 をインストールするための詳細なチュートリアル

最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...

json.stringify() と json.parse() の違いと使い方

1. JSON.stringify() と JSON.parse() の違い私たちは皆、JSON.s...

ウェブページのカラーマッチングにおけるオーバーラップとソフトカラーマッチングの手法を詳しく説明

この記事には、細かい点は一切なく、カラーマッチングのテクニックをシェアするだけです。とてもシンプルで...

Vue で配列をクリアするいくつかの方法 (要約)

目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...

divとtableの選択と組み合わせ方について簡単に説明します

ページレイアウトは、Web ページを扱い始めた頃からずっと気にかけていたことです。初期のテーブル構造...

WAMPにインストールするとMySQLが起動できるが、再起動後に起動できなくなる問題の解決方法

初めてwampをインストールした後、すべてのサービスが正常に使用できますが、再起動するとwampのア...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

Vue.js での $emit の使用に関する詳細な説明

1. 親コンポーネントは props を使用して子コンポーネントにデータを渡すことができます。 2....

Linuxコマンドunzipの詳しい説明

目次1. 解凍コマンド1.1 構文1.2 オプション2. 例1. 解凍コマンドunzip コマンドは...

Vueコンポーネントの再利用と拡張の詳細な説明

目次概要延長は必要ですか?スロットJavaScript ユーティリティ関数拡張コンポーネントの複数の...

Ubuntu 20.04 ベスト設定ガイド (初心者向け)

1. システム構成1. sudoパスワードをオフにするsudo コマンドを使用するたびにパスワード...

WIN10 システムと Docker 内部コンテナ IP 間の通信方法

1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...

UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...

MySQL における Datetime と Timestamp の使用の概要

目次1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか? 2. TIMESTAMP...

HTML に埋め込まれた MP4 形式のビデオが再生できないのはなぜですか?

次のコードは、私の test.html にあります。ビデオは、c:\test.html などの絶対パ...