1. 程式人生 > >個人專案技術總結--Vue

個人專案技術總結--Vue

1. 專案的搭建:

        剛開始接觸vue時,習慣了單頁面應用,不瞭解專案的搭建與打包,通過vue官網學習,試著搭建專案,後來發現很簡單。

        步驟大致如下:

                    # 全域性安裝 vue-cli                    $ npm install --global vue-cli                    # 建立一個基於 webpack 模板的新專案                    $ vue init webpack my-project                    # 安裝依賴,走你                    $
cd my-project                    $ npm run dev       打包用: npm run build ,打包後的檔案在output 目錄下2.Vue 代理伺服器設定

           在專案開發過程中,由於需要除錯介面,在剛開始因為跨域的問題,只能將專案打包後,放到伺服器上除錯介面,但是太麻煩了,而且在打包後,出現問題很難定位,就想辦法在本地除錯介面。設定代理伺服器,解決了跨域的問題,可以在本地呼叫伺服器上的介面,除錯起來方便了很多。            

  1. 首先要安裝外掛 http-proxy-middleware
            使用npm 安裝            npm install http-proxy-middleware

     2. 按照以下網址設定即可

            附上截圖以防連結失效:

               

3. vue陣列中資料變化但是檢視沒有更新解決方案

       在開發過程中,經常會遇到資料變化了但是檢視沒有更新的問題,在網上搜了搜發現,陣列比較特殊需要使用與他匹配的變異方法變化資料才能被檢測到。比如:        

        //ts.mainTab[i].value = result.fields[x].code; 這種寫法資料渲染不了,沒有變化        ts.$set(ts.mainTab[i], "value", result.fields[x].code)//這種可以

        附上詳細說明:

        

4. vue,input

在表單專案中,input輸入框在多次輸入後延遲非常的高,這對客戶來說體驗肯定不好,但當時一直找不到癥結所在,後來在網上發現了同樣的問題,才知道是 Vue.prototype._update這個觸發的太頻繁了。

        Vue.prototype._update這函式裡觸發的是VNode虛擬節點的比對更新,打斷點除錯後發現實際上這是一個迴圈,在控制檯裡輸出this.$el的時候能得到正在深度遍歷中的節點,沿著根結點App(也是formConfig資料繫結的作用域)開始直到具體觸發輸入的那個表單元素。在本專案裡是使用了遍歷輸出所有的表單元素,並且當前元件的作用域是直接掛在根結點上的,就是這個遍歷引發瞭如此高的延時。

       迴圈中的this.$el從當前元件的根部開始深度遍歷,遍歷了太多次,那麼只要想辦法縮小當前元件所繫結的資料量就解決了。

        附上鍊接:https://wenku.baidu.com/view/42caaaa2f9c75fbfc77da26925c52cc58ad69072.html

5. 專案中找了一些方便好用的方法

          千分位方法:               

           toThousands: function(s, n) {//s代表數值,n代表保留位數               if(s == "") {                    return s;               }               if(n || n === 0) {                    s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';               } else {                    s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(2) + '';               }               var l = s.split('.')[0].split('').reverse();               var r = s.split('.')[1];               var t = '';               for(var i = 0; i < l.length; i++) {                    t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length && l[i + 1] != '.' && l[i] != '.' && l[i + 1] != "-" ? ',' : '');               }               if(r == undefined) {                    return t.split('').reverse().join('');               } else {                    return t.split('').reverse().join('') + '.' + r;               }          }

        js 客戶端列印html 並且去掉頁首、頁尾:


        以上內容僅為專案開發時遇到的一些問題和解決辦法,其實在開發過程中需求的理解才是一大難點,只有很瞭解業務流程才會理解需求吧。希望產品提需求時能講解清楚,原型圖看不懂只能靠猜靠問,開發起來很費勁。