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 でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

推薦する

HTMLのマーキータグは、シームレスなスクロールマーキー効果を実現します。

<marquee> タグはペアで表示されるタグです。最初のタグ <marquee...

独自のサーバーを素早く構築する方法の詳細なチュートリアル(Java 環境)

1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...

JavaScriptはキャンバスを使用して座標と線を描画します

この記事では、JavaScriptでキャンバスを使用して座標と線を描く具体的なコードを参考までに紹介...

Node.jsを使用してホットリロードページを実装する方法の詳細な説明

序文少し前に、browser-sync+gulp+gulp-nodemon を組み合わせて、本番環境...

Mac VMware Fusion CentOS7 静的 IP 構成チュートリアル図

目次CentOS7をインストールする静的IPの設定viを使用してファイルを編集するCentOS7をイ...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

Dockerは指定されたメモリで操作を実行します

次のように: -m, --memory メモリ制限。形式は数値と単位です。単位は b、k、m、g の...

JavaScript を使用してソートアルゴリズムを実装する方法

目次バブルソート選択ソート挿入ソート要約するバブルソートバブルソートは、シーケンスの右側から始めて、...

MySQL システム ユーザーが開くことができるファイルの最大数に関する簡単な説明

本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......

CSS3はマスク連打機能を実現する

最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...

URLに基​​づいてリクエストを転送するnginxの実装の実践経験

序文これは fastdfs を使用してイントラネット外部に展開された分散ファイルシステムであるためで...

MySQL 8の新機能ウィンドウ関数の役割

MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...

ウェブページを作成する際に注意すべき点

--ホームページのバックアップ1.txtテキスト2. 画像をスキャンする3. PSDデザイン原画(A...

CSS で 2 つの固定列と 1 つの適応列を実装するいくつかの方法

この記事では、CSS で 2 つの固定列と 1 つのアダプティブ列を実装するいくつかの方法を紹介し、...