vue高仿餓了麼項目學習筆記之一:前期準備

1.需求分析

2.設備像素比DPR的概念

可以參看張鑫旭老師的博客:http://www.zhangxinxu.com/wordpress/?p=2568

http://www.fly63.com/article/detial/3208  

手機上設置的像素是物理像素的兩倍?  

Svg是矢量圖

3.IconMoon圖標字體制作

  通過svg文件在APP網站上最終生成的是一個fonts資源文件夾和一個css文件,css文件定義了圖標的樣式。只需在標籤中引入相應樣式即可使用圖標。  

網站地址:https://icomoon.io/ 

4.項目目錄設計

  Components目錄,每一個組件例如header.vue放在header文件夾下面。(就近原則)

  Common文件夾,新建公共模塊和資源

     Common下新建js,stylus和fonts文件夾.

  Stylus是css預處理文件,語法就是css去掉花括號和分號。

5.後臺mock造數據

Vue-cli集成express的流程:

  1. npm install express
  2. 將data.json文件拷入制定目錄
  3. 在webpack.dev.conf.js文件中
//首先

const express = require('express')

const app = express()

var appData = require('../data.json')

var seller = appData.seller

var goods = appData.goods

var ratings = appData.ratings

var apiRoutes = express.Router()

app.use('/api', apiRoutes)
//找到devServer,添加

before(app) {

  app.get('/api/seller', (req, res) => {

    res.json({

      // 這裏是你的json內容

      errno: 0,

      data: seller

    })

  }),

  app.get('/api/goods', (req, res) => {

    res.json({

      // 這裏是你的json內容

      errno: 0,

      data: goods

    })

  }),

  app.get('/api/ratings', (req, res) => {

    res.json({

      // 這裏是你的json內容

      errno: 0,

      data: ratings

    })

  })

}

這樣就可以通過http://localhost:8080/api/seller訪問後端數據了。

 

這之後導入static/reset.css,將瀏覽器常用標籤的默認樣式reset掉。

Npm install stylus 和 stylus-loader

6. 組件拆分

整個頁面分爲頭部header,tab頁和內容區

header在component/header/下寫一個自定義組件header.vue,在App.vue中引入

7. 路由

編寫goods,ratings和seller的.vue文件

在router/index.js中引入

使用<router-link to='指向要鏈接的組件'>做標籤

<router-view></router-view>顯示對應的內容頁面

8. 像素border實現

手機上設置的像素是物理像素的兩倍,根據dpr的概念需要做縮放。

tab的boder-bottom實現1px的思路

因爲dpr的影響,需要對tab底部畫出來的線進行縮放,實現真正1px的效果。

在tab中定義了一個僞類:after,:after絕對定位在tab的下方,內容爲空,僞類的border-top: 1px solid $color。

同時在base.styl中定義全局樣式.border-1px,根據不同的dpr對僞類進行縮放。

在App.vue中的tab標籤中引入全局樣式.border-1px.

注意:

a.新建mixin.styl實現一些樣式函數,例如border-1px($color),方便不同的vue文件調用。

b.新建base.styl實現一些全局樣式例如.border-1px,方便vue文件直接使用。

c.新建index.styl引入包括字體,mixin.styl,base.styl在內的樣式文件,並在main.js中引用index.styl,這樣這幾個樣式文件均可以全局使用。

d.webpack.base.conf.js中的alias可以定義路徑別名,例如

'@': resolve('src'),

'common':resolve('src/common')

草料網站根據應用網址生成二維碼,微信掃碼可以手機預覽。(手機與電腦需在同一個局域網)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章