vue項目常見需求(項目實戰筆記)


一、起步

1.引入reset.css解決手機之間不同分辨率的問題(reset.css為別人封裝的css文件)

import './assets/styles/reset.css'

使用方式 1rem=50px

我們使用rem代替px

2.引入border.css解決手機邊框1px的問題

import 'styles/border.css'

使用方式 class="top" //在添加上邊框,同理 left、right、bottom

3.解決移動端點擊事件存在300毫秒延遲問題

在項目目錄運行cmd輸入

npm install fastclick --save

在main.js中引入文件

import fastClick from 'fastclick'

實例化:fastClick.attach(document.body)

二、常用插件

1.stylus  簡化css編寫方式

安裝:npm install stylus --save

再安裝:npm install stylus-loader --save

使用方式:<style lang="stylus"></style>

2.axios   Ajax工具

安裝: npm install axios --save

使用,法1:在需要使用的組件中<script>標簽里引入

import axios from 'axios'

this.$axios()

使用,法2:

在main.js中引入
import axios from 'axios'

改為Vue的原型屬性
Vue.prototype.$ajax=axios

直接調用this.$ajax()

例子:

this.$ajax.get('/api/index.json')
.then(function(res){
console.log(res)
})

3.vue-awesome-swiper 安裝輪播插件(這里推薦使用2.6.7版)

安裝:npm install vue-awesome-swiper@2.6.7 --save

使用方式:官方文檔

4.better-scroll  滾動窗口插件

安裝:npm install better-scroll --save

使用方式:

<div class="wrapper"> <ul class="content"> <li>...</li> <li>...</li> ... </ul> <!-- 這里可以放一些其它的 DOM,但不會影響滾動 --> </div>

script中
import BScroll from 'better-scroll' let wrapper = document.querySelector('.wrapper')//找到對應的標簽 let scroll = new BScroll(wrapper)//實例化的第一個參數是一個原生的 DOM 對象

詳情:官方文檔

三、數據管理
Vuex 數據框架(進行數據傳輸)

/* 引入數據管理框架 */
import store from './store'

數據管理框架基礎:

內容state(存公共數據)、actions、mutations(用於改變公用數據中的值)

如:

state: {
    city: '成都'
  },
  actions: {
    changeCity (ctx, city) {
      // 調用mutations里對應的方法,city為所傳值
      ctx.commit('changeCity', city)
    }
  },
mutations: {
    changeCity (state, city) {
      state.city = city
    }

注意:

1.采用dispatch調用index.js中actions對應的方法,city為所傳的值
this.$store.dispatch('changeCity', city)

2.調用mutations里對應的方法,city為所傳值
ctx.commit('changeCity', city)
改變值只能通過mutation方法區完成

3.調用公用數據方法

直接調用:this.$store.state.city

映射調用:

添加import { mapState } from 'vuex'
添加計算屬性,將vuex里的city映射到計算屬性的city中可直接調用this.city
computed: {
...mapState(['city'])
}

四、優化

 keep-alive標簽

功能 標簽內的內容會被放入內存中,只需渲染一次,不用每次訪問都進行渲染
<keep-alive>
  <router-view/>
</keep-alive>
路由內的東西只需渲染一次,下次會直接從內存中調用數據
如果有每次進入都需要更新的數據可以使用生命鈎子函數activated(){}
activated 在組件加載時調用
對應的 deactivated 在組件關閉時調用
前提需要使用 keep-alive
也可以這樣寫:
<keep-alive exclude="排除的組件名(不放入內存中,每次進入都會更新)">
內容。。。
</keep-alive>

五、開發環境的轉發

編輯config里的index.js
找到proxyTable:{}
改寫:
proxyTable: {
'/api':{
target: 'http://localhost:8080',
pathRewrite: {
'^/api': '/static/hithock'
}
}
}
//在開發環境訪問時,將需要訪問的api目錄下的index.json改寫為本地目錄下static/hithock目錄里
//前提需要用webpack

六、聯機測試

1.要想服務可以通過ip地址訪問需要改工程文件目錄下的package.json中的 dev
添加 --host 0.0.0.0
變為:"dev": "webpack-dev-server --host 0.0.0.0 --inline --progress --config build/webpack.dev.conf.js"

七、項目打包

npm run build

打包出一個dist文件夾
將文件夾里的內容放到后端服務器上即可
當然,如果想改變文件的路徑需要修改 config/index.js里面的打包內容如下:
assetsPublicPath: '/Travel', // 后端運行的目錄
這里我們改為Travel目錄

八、疑難問題

1.解決手機兼容性問題

npm install babel-polyfill --save //判斷有無cs6新特性

2.使用better-scroll后click事件失效,解決方法

mounted(){
this.scroll=new Bscroll(this.$refs.wrapper, { mouseWheel: true, click: true, tap: true })
}
//better-scroll,默認它會阻止touch事件。所以在配置中需要加上click: true

 

OK!這就是我在項目中遇到的一些需要注意事項

最后:大家可以看一下我的成品。

易簡圖  ——一個專注於圖片瀏覽資源器

歡迎騷擾!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM