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')

草料网站根据应用网址生成二维码,微信扫码可以手机预览。(手机与电脑需在同一个局域网)

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