va.js - Vue フォーム検証プラグインの作成プロセス
前書き
少し前に、上司が Vue 開発環境をセットアップしたため、私たちは喜んで JQ から Vue を使用するようになりました。この間、フォーム検証に満足していなかった私は、Vue のプラグインの章を見て、自分でも書けそうな気がしたので、フォーム検証プラグイン va.js を書き始めました。もちろん、プラグインを見つけてみませんか? vue バリデーター。
私が考えたのは、フォーム検証はさまざまな企業のニーズを考慮するために高度にカスタマイズされたものであり、オンラインで見つけたこの種のプラグインには必要のない機能がたくさん追加されているということです。 。 vue-validator は 50kb で、私が書いた va.js はわずか 6kb であることがわかりました。
もう 1 つは、vue-validator の API は非常に長いと思うということです。常に v-validate:username="['required']" という長いリストになっており、私が設計した呼び出しはおそらく次のようなものです。 -va :Money
もちろん、この記事では、会社のニーズを満たす vue フォーム検証プラグインの作成方法のみを示します。以下にアイデアを紹介します。
1. フォーム検証モジュールの構成
フォーム検証モジュールは、設定 - 検証 - エラー報告 - 値収集で構成されます。
設定: 設定ルールと設定エラーのレポート、および優先度
検証: 変更イベントでの検証、送信ボタンがクリックされたときの検証、そしてもちろん入力イベント値での検証もあります
Errorレポート: エラー報告方法は一般にポイントであり、エラー テキストにはテンプレートがあり、カスタマイズされたものもあります
値: 確認されたデータを開発者に返して電話してください
以下は、上司が私に行ったリクエストです。企業プロジェクト
一元管理検証ルールとエラー報告テンプレート。
エラー報告時間はオプションです
検証後の正しいデータはオブジェクトにパッケージ化されており、直接使用できます
各ページでルールをオーバーライドし、エラー報告情報をカスタマイズし、ajaxがデータを取得できるようにします。そして、 ルールが補足されました
不思議に思って聞いてみました、なぜそうなるのですか?すると上司は一つ一つ答えてくれました:
一元管理ルールとエラー報告テンプレートの利点は、ルールがグローバルに使用でき、一度に変更できることです。上司は私に、ニックネームの規則性を 3 回変更する必要があると言いました。こういう規則的なルールを各ページに書いていたらo( ̄ヘ ̄o#)ふむ、Nページ変更しなければならない
PCとモバイルの処理が違う PCでは変更イベントや入力イベントで多くの検証を行わなければなりません。検証とエラー報告。モバイルでは通常、検証のために送信ボタンに移動する必要があります。したがって、プラグインを作成するときは準備をしてください。次に、エラー報告に使用される UI は、現在使用しているレイヤー プラグインをサポートできなければなりません。もちろん、将来的にエラー UI が変更される可能性もありますので、ご了承ください。
もちろん、jq 時代には、パブリック フォーム検証で検証を完了し、すべてのデータを 1 つのオブジェクトに収集できます。このように、ajax を使用するときに値を取得する必要はありません。あなたのこのプラグインはこの効果を実現する予定です
jq のパブリック スクリプト、正規表現、エラー報告がすべて 1 か所に集中していることがわかり、これは多くの場所で非常に便利です。しかし、一部のページを変更する必要がある場合には、柔軟性が十分ではありません。 RealName などのルールは、最初にバックエンド インターフェイスのフィールド名を使用して、特定のページに対して設定されました。別の支払いページでは、バックエンド インターフェイスのフィールド名が PayUser に変更されていますが、正規表現は RealName のままであることがわかります。これは不便ではありませんが、見栄えは良くなります。もう 1 つの支払額には上限と下限があり、バックエンドから取得する必要があります。この状況も考慮する必要があります。ルールを変更したり、エラーレポートをカスタマイズしたりするには、各ページにある程度の柔軟性が必要です。
聞いてみると、前に書いたjqフォーム検証には違和感がたくさんあることが分かりました。 -_-|||次に、vue が私に与えてくれた良い点を見てみましょう。書いてみましょう
2 番目に、Vue プラグインの書き方
私は Vue 初心者ですが、なぜ Vue プラグインを書き始めたのでしょうか?というのも、解決策を考えていたときに Vue のドキュメントをめくってここにたどり着きました
va.js を書き終えたとき、あなたが書いたことは本当に明確だと感じたからです。
実際には、フォーム検証を完了するコマンドを書きたいのです。命令が 2 ~ 3 個ある可能性があり、各サブインスタンス内でルールを拡張できるようにいくつかのメソッドを Vue.prototype で定義する必要があることがわかりました。それで上司は、これはプラグインに相当すると言いました。これを見るとクジラになったような気分になります。
va.jsは主にVueコマンドを使用します
これら、va.jsを書き終えたときに、書いていることがとてもわかりやすくなったと感じました。
実際には、フォーム検証を完了するコマンドを書きたいと思っています。命令が 2 ~ 3 個ある可能性があり、各サブインスタンス内でルールを拡張できるようにいくつかのメソッドを Vue.prototype で定義する必要があることがわかりました。それで上司は、これはプラグインに相当すると言いました。これを見るとクジラになったような気分になります。
va.js は主に Vue の命令を使用します
Vue のドキュメントは非常に注意深く書かれていますが、もう 1 つ付け加えておきます
vnode.context は Vue のインスタンスです
プロジェクトを実行するとき、ルート コンポーネントにぶら下がっている N 個のサブコンポーネントであり、N 個のサブコンポーネントがサブコンポーネントにぶら下がっている可能性があります。 vnode.context によって取得されるインスタンスは、命令にバインドされたコンポーネントのインスタンスです。これは非常に便利です。たくさんのことができます
もちろん、Vue.prototypeも使用します
Vue.prototype.$methodは、各コンポーネントで呼び出すことができるメソッドです。コンポーネント内で this.$method を使用して呼び出すことができます

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
