bootstrapラジオボタンchangeイベントをクリックして1回だけトリガー_干物|フロントエンド思考の転換イベント駆動からデータ駆動まで...


「jQueryに触れた仲間たちは、たぶんmvmに切り替えるのに慣れていないだろう.開発思考の転換が必要で、イベント駆動の観点から、データ駆動の観点から、小さな挑戦でもある」.1.イベントドライバ1.1 GUIとイベント
GUI(グラフィックユーザインタフェース)とイベント駆動の源は浅くない.
GUIアプリケーションの特徴はユーザとのインタラクションを重視することであるため,プログラムの実行はユーザとのリアルタイムインタラクション状況に依存し,ほとんどのプログラムの実行はユーザのインタラクション動作が発生するまで待つ必要がある.
ユーザーの入力頻度が高くないため、ポーリングを続けてユーザーの入力を取得すると、ajaxポーリングとwebsocketプッシュの関係に似ています.
  • リソースの使用率が低い.
  • は、
  • をタイムリーに同期することはできません.
    GUIプログラムの実行プロセスはユーザによって制御され,予想できないため,この特徴に適応するためにイベント駆動のプログラミング手法を採用する必要がある.
    通常のプログラムの実行は「起動-動作-終了」と概括され、イベントドライバのプログラムの実行は「起動-イベントループ(すなわち、イベントの発生を待機して処理する)」と概括される.1.2イベント駆動プログラミング
    1.2.1イベント
    イベントは、決定ボタンを押したり、ラジオボタンを選択したり、チェックボックスを選択したりするなど、コントロールによって識別できる操作です.各コントロールには、フォームのロード、クリック、ダブルクリックなどのイベント、編集ボックス(テキストボックス)のテキスト変更イベントなど、自分で認識できるイベントがあります.
    イベント(event)はアプリケーションで発生したことであり、アプリケーションはこのようなことに応答する必要がある.
    1.2.2イベント処理
    プログラムのイベントに対する応答は、イベントハンドラ(event handler)と呼ばれる予め作成されたコードを呼び出してイベントを処理することである.
    イベントドライバプログラミング(event-driven programming)は、このような「プログラムの実行はイベントによって決定される」アプリケーションに対するプログラミングモデルである.
    1.2.3Event loop
    プライマリ・スレッドは、「タスク・キュー」からイベントを読み出します.このプロセスはループが絶えないため、この実行メカニズム全体をEvent Loop(イベント・ループ)と呼びます.
    JavascriptのシングルスレッドとEvent Loopについては、「JavaScript実行メカニズム詳細:Event Loopについて」を参照してください.今日の主役はデータドライバで、イベントについては詳しく説明しません.1.3イベント駆動思考
    GUIとJavascriptのデザインシーンでは、コードを書くときにもこのような思考が代入されます.
    ユーザー入力=>イベント応答=>コード実行=>ページステータスのリフレッシュ
    そこで、書き始めたばかりのアプリケーションの考え方は以下の通りです.
  • 静的ページを開発します.
  • は、ユーザ入力、http要求、タイマトリガなどのイベントを含むイベントリスニングを追加する.
  • は、異なるイベントに対して、イベントステータス/入力の取得、ステータスの計算および更新などを含む異なる処理ロジックを記述する.
  • 計算されたデータ状態に基づいて、ページを再レンダリングします.

  • 通俗的に言えば、イベント駆動思考はイベント応答から出発し、応用の設計とプログラミングを完成する.2.データ駆動
    データ駆動は、複雑な論理設計からデータ処理の世界に持ち込む.2.1データとは
    データは何ですか.公式の答え:データは科学実験、検査、統計などで得られたものと、科学研究、技術設計、検証、意思決定などに用いられる数値です.
    しかし、実際には資料の中でも、生活の中でも、仕事の中でも、すべてのものをデータとして抽象化することができます.ゲームのキャラクター、アイテム、経験値、天気、時間など、データです.ゲームは実際には現実世界に対する抽象的なものであり、抽象的になると、最終的にはデータとして現れることができる.
    データは抽象的なプロセスだと思います.
    日常の書き込みコードに戻ると、フロントエンドでページを書き、抽象的にデータとしてよく使われるのは以下のことにほかならない.
  • リスト=>array
  • 状態=>number/boolen
  • カード1枚=>object
  • 2.2イベント駆動からデータ駆動へ
    2.2.1データ駆動vsイベント駆動
    イベント・ドライバとデータ・ドライバを直感的に比較するには、次のようにします.
    イベント駆動
  • 構築ページ:設計DOM=>生成DOM=>バインドイベント
  • リスニングイベント:操作UI=>トリガイベント=>レスポンス処理=>更新UI
  • データ駆動
  • 構築ページ:設計データ構造=>イベントバインドロジック=>生成DOM
  • リスニングイベント:操作UI=>トリガイベント=>レスポンス処理=>更新データ=>更新UI
  • .
    実は最大の転換は、以前はコンポーネントをDOMと見なし、イベント/論理処理をJavascriptと見なし、スタイルをCSSと見なしていたことだ.
    思考方式を変換した後、コンポーネント、イベント、論理処理、スタイルはすべて1部のデータで、私たちはデータの状態と変換を設計するだけで、残りの実現は具現方式(テンプレートエンジン、イベントメカニズムなど)で実現します.
    2.2.2データ駆動思考
    データ駆動思考に変換した後、プログラミング実装の過程で、UIの変化やイベントの傍受をあまり考慮することなく、データのメンテナンスと処理を考えることが多くなりました.
    ある企業のウェブサイトにとって、中の多くのデータとリンクは、昔私たちがよく使っていた方法は直接DOMと書いて、それから長いDOMコードを生み出しました.
    もし私たちがそれをデータに切り替えて、オブジェクトと配列で格納するとしたら、私たちはこのデータのセットをDOMに変換する方法を書くだけです.この方法には、次のようなメリットがあります.
  • データ変更便利
  • DOM構造が軽くなる
  • DOM構造/スタイル調整が便利
  • 抽象設計
  • コード量が減少し、
  • のメンテナンスが容易になる
    2.3データ駆動とmvvm
    データ駆動の設計思考はmvvmと必然的に関連していないかもしれませんが、mvvmフレームワークは、データ駆動をより容易にするためのいくつかの具現的な方法を提供します.
    2.3.1 mvvm集積具現化方法
    vueフレームワークでは、以下の便利な具現方法があります.
  • テンプレートレンダリング:データ=>AST=>DOM
  • の生成
  • データバインディング:インタラクティブ入力/httpリクエスト応答/タイマトリガ=>イベントリスニング=>データ変更=>diff=>DOM更新
  • .
  • ルーティングエンジン:url=>データ(host/path/paramsなど)=>解析対応ページ
  • これらのmvvmフレームワークを使用すると、データを必要とするものにどのように変換し、抽象的に具象化するかという問題を解決します.このような状況では、私たちは2つのステップを完了する必要があります.
  • は製品/業務/設計を抽象化し、UI、インタラクティブをデータとして抽象化する.
  • は、1組のデータを論理処理で接続する.

  • 2.3.2 mvvmデータ駆動思考の推進
    ここではvueを借りて、2つの例を挙げましょう.
    第一に、input入力を取得して更新する.Inputのリスニング入力を実現し、テンプレートに出力を更新します.次のコードの変化があります.

    p>$('#input').on('click', e => { const val = e.target.value; $('#p').text(val);})script><input type="text" v-model="inputValue" /><p>{ { inputValue }}p></code></pre> <p> vue , 、 , , input 。</p> <p> , </p> <p> , , :</p> <pre class="has"><code>const list = [ {id: 1, name: 'name1', href: 'http://href1'}, {id: 2, name: 'name2', href: 'http://href2'}, {id: 3, name: 'name3', href: 'http://href3'}, {id: 4, name: 'name4', href: 'http://href4'}]</code></pre> <p> :</p> <pre class="has"><code><ul id="ul">ul><script>const dom = $('#ul');list.forEach(item => { dom.append(`${item.name}: ${item.href}`)});script><ul> <li v-for="item in list" :key="item.id"><span>{ {item.name}}span><a :href="item.href">{ {item.href}}a>li>ul></code></pre> <p> id ( id 3 name ):</p> <pre class="has"><code>// 1). const dom = $('#ul');const id = 3;dom.find(`li[data-id="${id}"] span`).text('newName3');// 2). + vueconst id = 3;list.find(item => item.id == 3).name == 'newName3';</code></pre> <p> <code>list</code> <code>id</code> 3 , , , :</p> <pre class="has"><code>const id = 3;const item3 = list.find(item => item.id == 3);if(item3) item3.name == 'newName3';</code></pre> <p> ,<strong> , 。</strong></p> <p>THE END</p> , 。 , , , 。 <p> : </p> <p><strong><a href="https://img. .com/image/info8/71a53e248c9d441ca03724cadb3342b3.jpg" target="_blank"><img src="https://img. .com/image/info8/71a53e248c9d441ca03724cadb3342b3.jpg" alt="bootstrap change _ | ..._ 1 " width="258" height="258" style="border:1px solid black;"></a></strong></p> <p><strong> NEXT </strong></p> <p> | blog  |  </p> <p></p> </div> </div> </div> </div> </div> </div> </div> <!--PC WAP --> <div id="SOHUCS" sid="1386276969896824832"></div> <script type="text/javascript" src="/views/front/js/chanyan.js">

    興味があるかもしれません
  • 異常なコアクラスThrowable
    むりょう
    java ソースコード 例外処理 exception
  • mongodbカーソルによるページング反復
    抜け目のある石
    mongodb
  • MySQLデータベースINNODBテーブル破損修復処理手順
    0624chenhong
    tomcat mysql
  • 設計者とのコミュニケーション方法の分析
    物心の知れないおなら
    さぎょう
  • qq空間ブラシコメントツール
    韓国の赤い果物の番号を変えます
    JavaScript
  • S 2 SH統合セッション
    霊静志遠
    spring AOP struts session
  • xmpラベル
    a-john
    タブ
  • Ajaxの一般的なテクニック(2)---Webページのカスケードメニューを実現
    aijuans
    Ajax
  • アルファベットで分類:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他
    トップページ -
    私たちについて -
    構内検索 -
    Sitemap -
    権利侵害苦情
    著作権すべてのIT知識ベースCopyRight© 2000-2050 IT知識ベースIT 610.com , All Rights Reserved.
    京ICP備09083238号