基於vue.js的eleme實戰項目總結
這個項目是高仿餓了么,技術棧選用
vue1 + vue-router1 + vue-cli1 + vue-resource + stylus + flex布局 + es6 + eslint + webpack2
頁面相對簡單,所以沒有用到vuex, 它更適合對複雜的單頁面進行狀態管理。
1.項目結構分析
common/---- 文件夾存放的是通用的css和fonts
components/----文件夾用來存放我們的 Vue 組件
router/----文件夾存放的是vue-router相關配置(linkActiveClass,routes註冊組件路由)
build/----文件是 webpack 的打包編譯配置文件
config/----文件夾存放的是一些配置項,比如我們伺服器訪問的埠配置等
dist/----該文件夾一開始是不存在,在我們的項目經過 build 之後才會產出
prod.server.js----該文件是測試是模擬的伺服器配置,用來運行dist裡面的文件,在config/index.js中,build對象中添加一條埠設置port:9000,
App.vue----根組件,所有的子組件都將在這裡被引用,eventHub空實例是用來組件間通信的中央數據匯流排作用,主要連接購買控制項和購物車組件之間的數據通信
index.html----整個項目的入口文件,將會引用我們的根組件 App.vue
main.js----入口文件的 js 邏輯,在 webpack 打包之後將被注入到 index.html 中
2.開發過程問題匯總
- 圖標icon.css--文字圖標樣式,通過http://icommon.io網站 將svg圖片轉成文字圖標樣式
- 一像素邊框問題,當樣式像素一定時,因手機有320px,640px等.各自的縮放比差異,所以設備顯示像素就會有1Npx,2Npx.為保設計稿還原度,解決就是用media + scale.
公式:設備上像素 = 樣式像素 * 設備像素比
屏幕寬度: 320px 480px 640px
屏幕寬度: 320px 480px 640px
設備像素比: 1 1.5 2
- header組件的詳情頁採用sticky-footer布局,主要特點是如果內容不夠長,頁腳部分也會貼在視窗底部,內容足夠長,就會將頁腳推到內容底部,父級position:fixed,內容設為padding-bottom:64px,頁腳相對定位,margin-top:-64px
- 大多採用flex布局
- filter:blur(10px),注意,所有在內的子元素也會模糊,包括文字,所以採用定位布局,背景單獨佔用一個層,ios有一個設置backdrop-filter:blur(10px),只會模糊背景,但不支持android
- 在購買控制項中使用transition過渡效果,實現添加減少按鈕的動效,和小球飛入購物車的動效(模仿貝塞爾曲線的效果)
- css預處理器--stylus
- eslint各種報錯,各種揪心,不過這也是個學習的過程
- vue2相較vue1有很多地方改動
1.v-for的書寫格式,多出:key值,而且必須寫
2.transition書寫格式不在是在元素標籤上寫,而是作為一個標籤<transition></transition >將目標元素包起來,過渡狀態變為4種狀態
3.v-el 和 v-ref 都棄用,改為使用ref屬性為元素或組件添加標記,通過$refs獲取
- vue-router2 和vue-router1也有一些區別,可以上官網對比看看
3.學習參考
- vue2.0官網: https://vuefe.cn/v2/guide/
- webpack官網:webpack
- vue-resoure官網:pagekit/vue-resource
- vue-router官網:vuejs/vue-router
- better-scroll插件使用:https://github.com/ustbhuangy
- stylus: stylus中文文檔 &quot; 綜述 &quot; 張鑫旭-鑫空間-鑫生活
- es6:ECMAScript 6入門
- Sticky footers:CSS秘密花園: Sticky footers
- 設備像素比:設備像素比devicePixelRatio簡單介紹 &quot; 張鑫旭-鑫空間-鑫生活
- Flex彈性布局:Flex 布局教程:語法篇 - 阮一峰的網路日誌
- localStorage本地存儲:localStorage使用總結 - 謝燦勇 - 博客園
- 模仿貝塞爾曲線的效果: cubic-bezier.comcubic-bezier.com
- eslint官網:ESLint - Pluggable JavaScript linter
- cssreset官網: 2015&#x27;s most common CSS Resets to copy/paste, with documentation / tutorials
備註:
- 項目github源碼地址:https://github.com/ustbhuangyi/vue-sell
- 項目演示:sell
- 本文參考:仿餓了么項目-vue的學習筆記總目錄 - Keep Learning - SegmentFault
- 課程視頻:Vue.js高仿餓了么外賣App (想要的,可留下郵箱,在下會分享給你的~~)
推薦閱讀: