<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 小知識1 ## vue和jquery的區別 - 賦值 > jquery ```html <input id="test" type="text"/> ``` ```javascript //獲取dom var dom = document .getElementById('test); //取值 console.log(dom.val()); //賦值 dom.val('這里賦值'); ~~輸入框輸入值后,取值賦值都是手動操作,手動賦值后需要手動更新視圖(輸入框才會更新) ``` > vue ```html <input v-model="test" type="text"/> ``` ```javascript //取值 console.log(this.text); //賦值 this.text = '這里賦值'; ``` ~~輸入框輸入值后,自動賦值變量,手動賦值的時候也會改變視圖 ***** - 循環 > jquery ```html <div id="test"></div> ``` ```javascript //獲取dom var dom = document .getElementById('test); var list=[{ label:'測試', value:1 }] var str = ''; for(var i =0;i<list.length;i++){ str = '<span id="+list[i].value+">+list[i].label+'</span>' } dom.innerHtml(str); ~~list值改變每次更新視圖都需要操作字符串,同時復雜的dom用字符串的形式難以維護 ``` > vue ```html <div> <span :id="item.value" v-for="item in list">{{item.label}}</span> </div> ``` ```javascript var list=[{ label:'測試', value:1 }] ``` ~~直接在dom上自動綁定,復雜dom也好維護,同時list數據改變,自動更新視圖 - vue和react以及angular的區別 > 流行的三個框架思想都是一至,在寫法,調用,以及性能上可能有著不同的差別 1. angular -> react - > vue 2. vue,react -> angular 3. react -> vue ~~ angular - > angularjs ***** ## jquery注意 - 循環拼接字符串 ```javascript var str = ''; for(var i =0;i<list.length;i++){ str = '<span id="'+list[i].value+'">'+list[i].label+'</span>' } dom.innerHtml(str); ``` 這樣子層次復雜很難維護,可以 采用如下寫法 ```html <div id="test"></div> <script id="temp"> <span>姓名:${label}</span> <span>名稱:${value}</span> </script> ``` ``` javascript var temp = document .getElementById('temp); var dom = document .getElementById('test); var str = temp.innerHtml; for(var i =0;i<list.length;i++){ var ele = list[i]; str = str.replace('${label}',ele.label); str = str.replace('${value}',ele.value); } dom.innerHtml(str); ``` ~~ 這樣子好處是不用拼接字符串 ,以類模版的形式 - 單引號和雙引號 > 頁面中單引號和雙引號都是生效的,es6最新規定字符串全部用單引號,標簽屬性用雙引號 ```javascript //單引號 '<span id="'+list[i].value+'">'+list[i].label+'</span>' //雙引號,這里的屬性雙引號需要轉義 "<span id=\""+list[i].value+"\">"+list[i].label+'</span>' ``` - 回調地獄——ajax 深層次的代碼嵌套,代碼難以維護,以函數的方式分割 ```javascript //回調嵌套 //處理邏輯1 $.ajax(...,function(res){ var list =res; ... //處理邏輯2 $.ajax(...,function(res){ var list =res; ... //處理邏輯3 $.ajax(...,function(res){ var list =res; ... }) }) }) ``` ```javascript //鏈式調用 //處理邏輯1 function test1(params){ return new Promise(function(resolve,reject){ $.ajax(...,function(res){ var list =res; resolve(rest) }) }) } //處理邏輯2 function test2(params){ return new Promise(function(resolve,reject){ $.ajax(...,function(res){ var list =res; resolve(rest) }) }) } //處理邏輯3 function test3(){ return new Promise(function(resolve,reject){ $.ajax(...,function(res){ var list =res; resolve(rest) }) }) } test1().then(function(res){ ... return test2(res); }).then(function(res){ ... return test3(res); })).then(function(res){ ... }) ``` - 字符串憑借處理邏輯 在拼接的字符串中串邏輯 ```javascript //正常寫法 label = list[i].label; label = label +'/test'; value = list[i].value; value = value +'/test'; '<span id="'+value+'">'+label+'</span>' //巧用數組寫法 function value(list){ value = list[i].value; value = value +'/test'; } var list = [ '<span id="', (function(){ label = list[i].label; label = label +'/test'; return label; })(), '">', value(list), '</span>' ] console.log(list.jion('')); ~~ layui框架中大量拼接字符串都是使用該方法 ~~ split 和join(字符串拼接常用的方法) ``` - js和jquery盡量不要混合何用 jquery是js的增強包有著滿足大量需求api包,不要忽略jquey的包手動去寫, 這樣子讓代碼不易維護,如果找不到合適api,自己造api; ```javascript //普通寫法 for(var i =0;i<list.length;i++){ var ele = list[i]; console.log(ele,i); } //jquery寫法 $.each(list,function(index,ele){   console.log(ele,index); }); ``` 自己造api也就是自己封裝工具包,例如加水印,圖片壓縮,日期格式化等,也可以直接使用別人的工具包,不能滿足自己需求的,二次開發,封裝成自己的包。 開發幾年后,就會發現自己攢了很多自己的庫(提供開發效率),比較好的庫可以開源讓更多人參與維護和使用。 - github(全球) - gitee(國內) - 例子-水印生成器 [view-source:https://canvas.avue.top/](view-source:https://canvas.avue.top/) [https://canvas.avue.top/](https://canvas.avue.top/) ***** ## vue注意 - {{}}和v-text區別 如果網速慢的情況下花括號會顯示出來,而v-text知道數據出來才會顯示 - v-model綁定對象的時候 雙向綁定數據的時候一定要在data里面申明,否則無法綁定數據 ```html <input v-model="test" type="text"/> ``` ```javascript data(){ return { text:'', } } ``` ~~ 賦值時候視圖無更新的情況,可以用this.$set方法強制賦值 ~~ 如果綁定對象是深層次的結構對象,沒在data里面申明深層次的,而且要在v-model下水用,一定要用this.$set賦值 - vue也內置了dom操作方法 項目中使用vue時,最好不好用jquery包,因為他也內置了dom操作包,如果混合使用由于生命周期的問題會產生很多未知問題 ~~給標簽加一個ref屬性,直接this.$ref.name即可 ```html <div ref="test"></div> ``` ```javascript mounted(){ this.$ref.test.className= '樣式名稱' } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看