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

推薦する

Vue 日付時刻ピッカーコンポーネントの使い方の詳細な説明

この記事の例では、Vue の日付時刻ピッカーコンポーネントの具体的なコードを参考までに紹介します。具...

Linux での mysql および mysql.sock のインストールに関する問題

最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...

8桁の割引コードをランダムに生成し、MySQLデータベースに保存します。

現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われています。これは HTML 言...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明

目次ストレージエンジンのメモリ管理データ ページを LRU キューの先頭に置かないのはなぜですか?ダ...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

mysql8.0.14.zip のインストール中にデータ フォルダを自動的に作成できませんでした。サービスを開始できません。

今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...

npm 淘宝ミラー変更説明

1. トップレベルの使用法1. cnpmをインストールする npm i -g cnpm --regi...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

フロントエンドタスク構築のための強力なツールであるGulp.jsの使い方を詳しく説明します

目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...

MySQL でスロークエリログを有効にする方法

1.1 はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメ...

複数のプロジェクトをデプロイする Docker nginx の例

前提条件1. ローカルコンピュータとサーバーにDockerがインストールされています。ダウンロード方...

Mac でソースコードから MySQL 5.7.17 をコンパイルしてインストールするチュートリアル

1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...

HTML メタビューポート属性の詳細な説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...