この種の質問をすることができるかどうかはわかりませんでしたが、Meta Stackoverflowでこれを見た後、この種の質問は問題ないようです。さて、私の質問に:
数ヶ月前、私はJavascriptで検証フレームワークを作成しました。jQuery Validationのような検証フレームワークがすでに存在することは知っていますが、検証には別のアプローチを取りたかったのです。現在のアプローチは、フォーム要素の検証を実行するためのJavascriptコードの記述を扱っています。フォームのソースコードを見ると、各要素でどのような検証が行われているかがすぐにはわかりません。これは、さまざまな種類の検証を指定するCSSクラスを使用することである程度改善できます。しかし、検証の動作(エラーメッセージなど)を簡単にカスタマイズできないため、これでも制限があると感じました。JSR-303 BeanValidationまたはHibernateValidatorを使用して、Javaでアノテーションベースの検証のようなことをしたかったのです。
HTML5では要素にカスタム属性を追加できるので、これを利用して検証のためにフォーム要素に「注釈を付ける」ことができると思いました。だから、本質的に、私はこれを思いついた:
<input id = "myInput"
name = "myInput"
type = "text"
class = "regula-validation"
data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' />
この基本的な考え方を念頭に置いて、次のようなJavascriptフレームワークを作成しました。
- 制約が定義されている要素のDOMを調べ、これらの制約を要素にバインドします
- カスタム制約の作成を許可します
- 制約のプログラムによるバインドを許可します
- バインドされた制約を検証します
さらに、フレームワークには次の機能があります。
- JSR-303で指定されているものと同様の検証グループ
- エラーメッセージの補間
フレームワークを作成したら、フィードバックを取得してレビューしようとしましたが、フィードバックとレビューを取得する場所がわかりませんでした。私はそれについていくつかのブログ投稿を書き、それをDiggとReddit(プログラミングセクション)にあまり運がなく投稿しました。興味を持った人もいましたが、それ以上は得られませんでした。
最近、私の職場では、レガシーコードベース(JSPとサーブレット)を最新化して、SpringMVCに移行しています。検証の会話が出てきたとき、私は自分のフレームワークを上級アーキテクトに売り込みました。私は少し統合して概念実証を行いましたが、彼らは興味を持っているようで、プロジェクトに追加するためのゴーサインをくれました。今まで、これは検証を行うのに役立つ方法だと私自身の謙虚な意見しか持っていなかったので、これは私のアイデアとフレームワークに何らかのメリットがあるかもしれないという自信を与えてくれました。しかし、私はまだもう少し参加とフレームワークが必要でした。Stackoverflowでこの種の質問が可能であることがわかった後、建設的な批判、コメント、フィードバックを得るために、ここに投稿することにしました。
それで、これ以上遅れることなく、レギュラを紹介したいと思います。私が提供したリンクは、フレームワークのすべてのドキュメントが掲載されているGitHubのwikiに移動します。ここから最新バージョン(v1.1.0)をダウンロードできます。
コメントをお待ちしております。
すぐには関係のないいくつかの追加情報
フレームワークをSpringと統合する、つまりBeanの検証アノテーションをクライアント側の検証に変換するというアイデアをいじくりまわしていました。最近、検証グループを使用しても、これを機能させることができました(ただし、現在、クライアント側のグループ間の継承関係はサポートされていません)。このように、検証制約でフィールドプロパティに注釈を付けるだけで、クライアント側の検証コードが自動的に生成されます。しかし、私は春の初心者なので、私の方法はおそらくそれほどきれいではありません。これについてもフィードバックをいただきたいので、興味のある方はお知らせください。理想的には(そして私があまり気取らないことを願っています)私は春の人々に連絡して、彼らがこれに興味があるかどうかを確認したいと思います。