Vue学習ノート2—Vue基礎

40715 ワード

Vueベース
復習する
  • optionsのルート属性
  • el:宛先(string||DOM要素)
  • template:テンプレート
  • data:オブジェクトを直接返すことも、関数を返してreturnオブジェクトを返すこともできます.オブジェクトのプロパティは、直接ページでkeyで使用できますが、jsではthisを使用します.key
  • components:コンポーネントのオブジェクト属性を宣言するために使用され、keyはコンポーネント名、valueはコンポーネントオブジェクト
  • methods:メソッドのオブジェクト属性を格納し、methodName : function() {code lines }
  • props:(vueにおけるサブアセンブリ受信親アセンブリからの値が属性によって伝達されるため)サブアセンブリ受信パラメータの属性[‘属性名1’,‘属性名2’]
  • コマンド
  • v-text/v-html:textは要素のinnerText属性に値を付与する(v-textは二重ラベルでなければならない);htmlは要素のinnerHtml属性に値を付与する
  • v-if/v-show:ifは挿入または削除するかどうかです.showは表示または非表示の有無
  • v-else-if/v-else:この2つはv-if命令と組み合わせてのみ使用できます
  • v-bind/v-on:bindはバインド属性用である.onはイベントをバインドするために使用されます
  • v-bindの略記:: = " || "
  • v-onの略記:@ = " || "
  • v-bind/v-model:bindは一方向にデータを転送し、vueはページに転送する.modelは双方向にデータを転送し、vueはページに、そしてページはvueに、v-modelはvalue属性を持つ要素
  • しか使用できません.

    グローバルコンポーネントの登録
  • アプリケーションシーン:複数の共通機能コンポーネントを使用すると、グローバルコンポーネントとして登録でき、冗長コード
  • を減らすことができます.
  • グローバルコンポーネント登録API:Vue.component(' ', )
  • <div id="app">div>
    <script src="js/vue.min.js">script>
    <script>
    
        //          
        Vue.component('my_button', {
            template : `
                
            `
        })
    
        //   header  
        var myHeader = {
            template : `
                
    header
    `
    } // footer var myFooter = { template : `
    footer
    `
    } // footer var App = { template : `
    `
    , components : { my_header : myHeader, my_footer : myFooter, } } new Vue({ el : '#app', template : `


    `
    , components : { app : App, } })
    script>

    追加機能ついかきのう:フィルタふぃるた
  • filter(グローバル)||filters(コンポーネント内)
  • データを油や酢を加える操作
  • フィルタは2種類ございます
  • アセンブリ内のフィルタ(アセンブリ内有効)
  • グローバルフィルタ(全コンポーネント共有)
  • 先登録、後使用
  • 登録
  • コンポーネント内登録には属性の追加が必要filters : { : function(){ ;}}最終メソッド内でreturnによって最終的なデータを生成
  • グローバルフィルタを登録するAPI:Vue.filter( , function(){ ;})最終的にはメソッド内でreturnによって最終的なデータを生成する
  • 使用方法は{{ | }}注意下v-text中用$options.filters. ( )
  • <div id="app">div>
    <script src="js/vue.min.js">script>
    <script>
    
        Vue.filter('fil_2' , function(value) {
            return '   v-text     value     (     ):' + value.split('').reverse().join(',');
        })
    
        new Vue({
            el : '#app',
            template : `
                

    {{myValue | fil_1(' value :')}}

    `
    , data() { return { myValue : ' Value ', } }, filters : { fil_1 : function(value, str) { return str + value.split('').reverse().join(''); }, } })
    script>

    追加機能:変更の監視
  • watch単一データ監視
  • オブジェクトのアドレスが監視されているため、監視は浅さ監視(データ型はオブジェクトとリストではない)と深さ監視(データ型はオブジェクトとリスト)
  • に分けられる.
  • 浅さ監視使用方法:オブジェクトにwatchの属性を追加し、属性の値はオブジェクトタイプであり、このオブジェクトタイプのキーはdata属性のデータの名前であり、値は関数watch : { : function(newValue, oldValue){ ;}}(この関数の2つのパラメータの1つ目は新しい値であり、2つ目のパラメータは古い値である)
  • 深度监视使用方法:オブジェクトにwatchの属性を追加し、属性の値はオブジェクトタイプであり、このオブジェクトタイプのキーはdata属性のデータの名前であり、値はオブジェクトタイプであり、このうち2つの属性(deepとhandler)があり、deepは深度監視の有無を制御するために使用され、handlerは書き込み方法である.watch : { : {deep : true, handler : function(newValue, oldValue){ ;}}}(監視または監視の対象のアドレスであるため、またこの関数の2つのパラメータのデータ型がオブジェクトまたはリストであるため、アドレスは変更されないので、パラメータのアクセスアドレスさえ同じであり、新しい値である)
  • cumputed複数のデータを監視
  • computed:{監視する業務名:function(){コード行;}}最終メソッド内にreturnでいくつかの内容を表示
  • 使用方法:{{ }}

  • <div id="app">div>
    <script src="js/vue.min.js">script>
    <script>
        new Vue({
            el : '#app',
            template : `
                
    {{myValue1}}
    {{myValue2[0].name}}
    + - ={{result}}
    `
    , data : { myValue1 : ' xxxx', myValue2 : [{name : ' '}], n_1 : 0, n_2 : 0, n_3 : 0, }, watch: { myValue1 : function(newValue, oldValue) { console.log(oldValue); if (newValue == 'xxxx') { alert(' , ') } }, myValue2 : { deep : true, handler : function(newValue, oldValue) { alert(' !! :' + e[0].name) } } }, computed: { result : function(e) { return this.n_1-0 + (this.n_2-0) - this.n_3; } }, })
    script>

    組み込みコンポーネント:slot
  • DOM要素を渡すために使用され、slotコンポーネントによって残された位置は、このDOMを使用するときに配置したいデータを入れることができます
  • ピット方法:
  • 正常留坑:
  • 具名留坑:
  • 使用方法:
  • 通常使用:DOM >
  • 具名使用:DOM >
  • slotは動的DOM、propsは動的データ
  • <style>
        li {
            list-style: none;
            width: 33%;
            height: 200px;
            background-color: brown;
            float: left;
            border: 1px black solid;
        }
    style>
    <div id="app">div>
    <script src="js/vue.min.js">script>
    <script>
    
        var myLi1 = {
            template : `
                
  • DOM
  • `
    , } var myLi2 = { template : `
  • `
    , } var mySlot = { template : `


    `
    , } new Vue({ el : '#app', template : `

      1

      3
      33
      333
      3333

      1

      3
      33
      333
      3333

    `
    , components : { my_li1 : myLi1, my_li2 : myLi2, my_slot : mySlot, }, })
    script>

    ライフサイクルフック
  • beforeCreateコンポーネントの作成前
  • createdコンポーネントの作成後
  • このコンポーネントを使用すると、以上のcreatedおよびbeforeCreateイベント関数(フック関数)がトリガーされます.createdではデータを操作でき、vue->ページの影響を実現できます.アプリケーション:ajaxリクエストの開始
  • beforeMount vueが機能し、DOMの前にデータをロード
  • mounted vueが機能し、DOMにデータをロードした後
  • beforeMount vue起動前のDOM
  • mount vue起動後のDOM
  • beforeUpdateデータに基づく変更、影響ページ、変更前
  • updatedデータに基づいて変更し、ページに影響し、変更後
  • 以上の2つは、変更データがある場合にトリガーされる
  • アプリケーション:beforeUpdateは元のDOMを取得することができる;updatedは新しいDOM
  • を取得できます.
  • beforeDestroy対応親コンポーネントv-if falseは、現在のコンポーネントを破棄し、破棄する前に
  • destroyed対応親コンポーネントv-if falseは、現在のコンポーネントを破棄し、破棄した後
  • アプリケーション:最終的には、localStorage
  • を保存するなど、他の機能の解放を行います.
  • activatedコンポーネントがアクティブ化
  • deactivatedコンポーネントが無効になりました
  • 頻繁にコンポーネントを作成および破棄することはできません.内蔵コンポーネントで包む必要があります.keep-alive内蔵コンポーネントでv-ifを使用することで、コンポーネントのアクティブ化と非アクティブ化
  • <div id="app">div>
    <script src="js/vue.min.js">script>
    <script>
    
        var App = {
            template : `
                

    {{myValue}}

    `
    , data() { return { myValue : 'xxx', } }, beforeUpdate() { console.log(' ,beforeUpdate'); }, updated() { console.log(' ,updated'); }, beforeDestroy() { console.log(' ,beforeDestroy'); }, destroyed() { console.log(' ,destroyed'); }, activated() { console.log(' ,activated'); }, deactivated() { console.log(' ,deactivated'); }, } new Vue({ el : '#app', template : `
    `
    , components : { app : App, }, data : { isExist : true, }, beforeCreate : function() { console.log(' ,beforeCreate'); // console.log(document.body.innerHTML); }, created : function() { console.log(' ,created'); // console.log(document.body.innerHTML); }, beforeMount : function() { console.log(' ,beforeMount'); // console.log(document.body.innerHTML); }, mounted : function() { console.log(' ,mounted'); // console.log(document.body.innerHTML); }, beforeUpdate() { console.log(' ,beforeUpdate'); }, updated() { console.log(' ,updated'); }, activated() { console.log(' ,activated'); }, deactivated() { console.log(' ,deactivated'); }, beforeDestroy() { console.log(' ,beforeDestroy'); }, destroyed() { console.log(' ,destroyed'); }, })
    script>
  • ajax非同期伝送、axiosはpromiseベース、vue-resource