yarn global add @vue/clicss
yarn global add @vue/clihtml
yarn add vue-routervue
yarn add sass-loader node-sassnode
重置瀏覽器樣式reset.css
移動端1px邊框問題border.css
移動端點擊事件延遲fastclick.jsios
移動端適配nginx
lib-flexible+postcss-px2remajax
- 安裝 yarn add lib-flexible postcss-px2rem - 使用 在main.js總引入import 'lib-flexible' 將項目/public/index.html中的設置視口的meta刪除和註釋刪除 根路徑建立vue.config.js,其中設置postcss-px2rem - vue.config.js設置 ``` module.exports = { css: { // 啓用 CSS modules modules: false, // 是否使用css分離插件 extract: true, // 開啓 CSS source maps? sourceMap: false, // css預設器配置項 loaderOptions: { css: {}, postcss: { plugins: [ //remUnit這個配置項的數值是多少呢??? 一般咱們是根據設計圖來定這個值,緣由很簡單,便於開發。 //假如設計圖給的寬度是750,咱們一般就會把remUnit設置爲75,這樣咱們寫樣式時,能夠直接按照設計圖標註的寬高來1:1還原開發。 require('postcss-px2rem')({ remUnit: 75 }) ] } } } } ```
vh、vw方案vue-router
- 安裝 yarn add -D postcss-px-to-viewport - vue.config.js配置 ``` module.exports = { css: { loaderOptions: { postcss: { plugins: [ require("postcss-px-to-viewport")({ viewportWidth: 750, // 視窗的寬度,對應的是咱們設計稿的寬度,通常是750. viewportHeight: 1334, // 視窗的高度,根據750設備的寬度來指定,通常指定1334. unitPrecision: 3, // (指定`px`轉換爲視窗單位值的小數位數(不少時候沒法整除). viewportUnit: 'vw', // 指定須要轉換成的視窗單位,建議使用vw. fontViewportUnit: "vw", selectorBlackList: [], // 指定不轉換爲視窗單位的類,能夠自定義,能夠無限添加,建議定義一至兩個通用的類名. minPixelValue: 1, // 小於或等於`1px`不轉換爲視窗單位,你也能夠設置爲你想要的值. mediaQuery: false, // 容許在媒體查詢中轉換`px`. replace: true, exclude: /(\/|\\)(node_modules)(\/|\\)/, }) ] } } } } ```
axiosvuex
axiosvue-cli
- 安裝 yarn add axios - 配置 局部組建引入 import axios from 'axios' 請求axios.get('dsdsd') 全局引入,綁定到原型上(main.js) import axios from 'axios' Vue.prototype.axios = axios
使用mock數據的時候,vue-cli2和vue-cli3的區別是,vue-cli3去除了static文件夾,如今靜態資源咱們都放到了public中
swiper多圖分頁輪播展現錯誤
使用計算屬性,將原來一維數組換成2維數組,根據數組的長度/一頁展現的內容
const pages = [] this.list.forEach((item, index) => { const page = Math.floor(index / 8) if (!pages[page]) { pages[page] = [] } pages[page].push(item) }) return pages
swiper圖片2頁輪播
使用計算屬性,將原來一維數組換成2維數組,根據數組的長度/一頁展現的內容
const pages = [] this.list.forEach((item, index) => { const page = Math.floor(index / 8) if (!pages[page]) { pages[page] = [] } pages[page].push(item) }) return pages
問題
圖片沒加載出現高度是0,頁面會有抖動,
解決
外層設置div標籤將其包裹
width:100%
height:0
overflow:hidden
padding-bottom:圖片的比例(高/寬)%
使用vh,vw
width:100%
height:(高/寬)vw
使用css的 /deep/去解決
問題
因爲當swiper還未ajax請求數據的時候,是由外層傳入的空數組顯示的
swiper是空數組建立的,因此默認顯示最後一個
解決
加個數組的length判斷,此處需注意,避免在節點的v-if中作過多邏輯判斷,
使頁面滾動更流暢
首先獲取A距離頂導的距離
this.$refs'A'.offsetTop;
獲取手指滑動距離頂部的距離。
e.touches[0].clientY - 72(導航的高度)
當前索引(index)
index=Math.floor((clientY - this.startY) / 17);
17是每一個字母的高度
將已經加載過的數據存入內存,避免屢次渲染消耗性能
使用後vue會多處2個生命週期鉤子函數
activated
deactivated在頁面退出的時候去使用
使用localstorge
數據都存放在state中
組建改變數據經過dispatch去觸發actions函數
actions經過commit去通知mutations改變數據
state
至關於一個獨立的儲存空間,公共數據存放的地方
在組建中使用2種方式。
this.$store.state.xxx
this.city
import { mapState } from 'vuex' computed: { ...mapState(['city']) },
actions
異步操做改變數據,批量操做放到這裏,至關於一個事件觸發器
使用方法:
組建觸發經過this.$state.dispatch(''changeCIty,'item.name')
import {mapActions} from 'vuex' methods: { handleCityClick (val) { this.changeCity(val) this.$router.push('/') }, ...mapActions(['changeCity'])}
actions經過commit調用mutations,改變數據。
相似vue中的計算屬性,好比同時用到state的數據,能夠用getter作拆分,避免數據泰國冗餘
對於大型項目,頁面數據量大的狀況下,能夠將每一個組建所須要的數據單獨拿出做爲一個模塊去使用。最後去拼合
直接導出export const modules = {
geo,
home,
user
}
不須要在new Vuex.store(modules:{})去定義了
將已經加載過的數據存入內存,避免屢次渲染消耗性能
使用後vue會多處2個生命週期鉤子函數
activated
deactivated在頁面退出的時候去使用
使用localstorge
設置2部份內容,經過v-show去判斷展現哪個,
漸隱漸顯主要利用document.documentElement.scrollTop&&document.body.scrollTop去計算滾動的位置改變效果
若是綁定在某一個組建的元素上面不會產生影響
可是綁定到了全局window上,不管在那個組建都會收到影響
在咱們使用keep-aliveb包裹組建的時候,會有2個新增生命週期函數,
activated(緩存被激活的時候使用)
deactivated(組建被隱藏的時候去調用)
window.removeEventListener(‘’)
公共畫廊組建使用swiper動態傳數據頁面滑動有問題
一開始咱們的組建除於一個隱藏的狀態,再次將他展現出來的時候,swiper計算寬度會有問題,致使輪播圖沒法正常運行
在swiperoptions上添加2個屬性,
observeParents:true,
observer:true
當窗口發生變化時,更新swipe,監聽到父級發生變化時,動態自我更新
vue-cli3的vue.config.js裏面配置了一個publicPath
publicPath:""
http轉https