vue饿了么项目实战笔记

乘客 乘客     2022-08-31     427

关键词:

1.页面骨架开发

1.1组件拆分

手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

<meta name="viewport" content="width=device-width,inital-scale=1.0,
    maximum-scale=1.0,user-scalable=no">

参考:http://www.runoob.com/css/css-rwd-viewport.html

1.2header组件的导出、导入和引用

header.vue中

export default{}
App.vue中

import header from './components/header/header.vue';

export default{
      components: {
      'v-header': header
    }}    


就可以在template中引用

<v-header></v-header>

1.3 移动端经典布局-flex布局

1.4移动端中所有的宽度高度都是按两倍大小设计,设计图中的80px,在css中应设置为40px;

1.5 vue-loader依赖postcss插件,该插件会自动帮助我们完成浏览器兼容性的写法。

1.6 vue-router

main.js中

import VueRouter from 'vue-router';
// 安装 "VueRouter"这个插件

Vue.use(VueRouter);

App.vue  template中:

<!-- 使用 router-link 组件来导航. -->
    <!-- 通过传入 `to` 属性指定链接. -->
    <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <!-- 路由出口 -->
  <!-- 路由匹配到的组件将渲染在这里 -->
  <router-view></router-view>

该项目中

    <div class="tab-item">
        <router-link v-bind:to="'/goods'">  在CSS中要对a标签进行样式编写
          商品

        </router-link>

      </div>    

<router-view ></router-view>

main.js中JavaScript写法

vue文档

// 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)

// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
  routes // (缩写)相当于 routes: routes
})

// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({
  router
}).$mount('#app')

// 现在,应用已经启动了!

提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。可以是 CSS 选择器,也可以是一个 HTMLElement 实例。在实例挂载之后, 元素可以用 vm.$el 访问。如果这个选项在实例化时有作用,实例将立即进入编译过程,否则,需要显式调用 vm.$mount() 手动开启编译。

对应到该项目中,写法为:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
import VueRouter from 'vue-router';
import VueResource from 'vue-resource';
import App from './App';
import goods from './components/goods/goods.vue';
import ratings from './components/ratings/ratings.vue';
import seller from './components/seller/seller.vue';
import 'common/stylus/index.styl';
// 安装 "VueRouter"这个插件
/* eslint-disable no-new */
Vue.use(VueRouter);
Vue.use(VueResource);
//路由配置 let routes
= [ {path: '/', name: 'index', component: App, children: [{path: '/goods', component: goods}, {path: '/ratings', component: ratings}, {path: '/seller', component: seller}]} ]; let router = new VueRouter({ 'linkActiveClass': 'active', routes // (缩写)相当于 routes: routes }); let app = new Vue({ router }).$mount('#app');

//一进入就显示goods组件 router.push(
'/goods'); export default app;

导航高亮的实现,通过Router 构造配置linkActiveClass,linkActiveClass它默认值为"router-link-active"(也就是对应的class名为router-link-active),这里我们覆盖它的默认值,'linkActiveClass': 'active' 将其改为了active,在写css时,我们用的就是这个active。

 

1.7 导航栏中1像素边框

pc端的1像素在手机中会显示2像素,采用after伪类

mixin.styl中

border-1px($color)
  position : relative
  &:after
    display: block
    position: absolute
    left: 0
    bottom: 0
    border-top 1px solid $color
    width: 100%
    content: ''
@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-aspect-ratio: 1.5)
 .border-1px   //div中设置该类
  &::after
    -webkit-transform : scaleY(0.7)//1.5*0.7约为1
    transform : scaleY(0.7)//Y轴缩放

@media (-webkit-min-device-pixel-ratio: 2),(min-device-aspect-ratio: 2)
 .border-1px
  &::after
    -webkit-transform : scaleY(0.5)
    transform : scaleY(0.5)

使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。同理,上边框可以用before实现;

1.8 mixin.styl的作用,里面可以写函数(是全局样式),可以在多处引用(引入:@import "common/stylus/mixin.styl"; )

1.9通过手机访问,通过ipconfig查看本机ip为192.168.0.1,用这个ip替换url中的localhost

将替换后的地址通过草料网站(http://cli.im/),生成对应的二维码,手机和电脑连接同一局域网时,就可在手机扫码查看页面了。

vue2+cli3实战项目-饿了么

参考技术A项目地址:Vue2+Cli3实战项目-还原饿了么订餐app项目截图:我们使用npm安装一些包的时候可能会比较慢,这时候我们可以使用cnpm,cnpm是中国NPM镜像。cnpm是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频... 查看详情

前端实战项目:vue.js实现外卖平台webapp,饿了么项目的翻版

...scroll插件,进行左右滑动图片。效果预览:再说一篇,是饿了么的翻版。 查看详情

“vue饿了么实战”视频

“vue饿了么实战”视频,要的加我qq:840573460650)this.width=650;"src="https://s5.51cto.com/wyfs02/M01/06/B8/wKiom1m85FvjU2zgAAA3IuL_Eng432.png-wh_500x0-wm_3-wmp_4-s_4095027821.png"title="QQ截图20170916163541.png"alt="w 查看详情

饿了么vue实现学习笔记

技术栈:vue2+vuex+vue-router+webpack+ES6/7+fetch+sass+flex+svg以功能实现着手学习1.定位功能home.vue 通过跨域获取当前的地理位置 http://cangdu.org:8001/v1/cities?type=guess2.选择城市转跳页面到搜索详细地址home.vue 根据API接口的ID,通过 router-link:to=... 查看详情

vue饿了么项目-header组件开发

1.数据传递的理解在App.vue中用到了header组件,首先注册组件components:{‘v-header‘:header}然后才能引用<v-header:seller="seller"></v-header>:seller="seller"的意思是将seller对象传递给v-header中的seller,而v-header中从哪里获得seller呢?通... 查看详情

仿饿了么项目-vue-cli开启项目

环境搭建安装nodeJs在用vue-cli开启项目之前,首先我们需要安装Node环境,安装Node很简单,只需要去官网下载http://nodejs.cn/download/,下载完成后点击安装,安装过程很简单,一直next即可,安装完成会自动添加node及npm环境变量。检... 查看详情

vue饿了么项目-goods商品列表页开发

1.flex属性是flex-grow、flex-shrink和flex-basis属性的简写属性。flex-grow一个数字,规定项目将相对于其他灵活的项目进行扩展的量。flex-shrink一个数字,规定项目将相对于其他灵活的项目进行收缩的量。flex-basis项目的长度。合法值:"au... 查看详情

vue2高仿饿了么app

Github地址: https://github.com/ccyinghua/appEleme-project 一、构建项目所用:vueinitwebpackappEleme-projectnpmrundevcnpminstallnode-sass--save-devcnpminstallsass-loader--save-dev//sass-loader依赖于node-sas 查看详情

基于vue来开发一个仿饿了么的外卖商城(代码片段)

一、准备工作1.大前提:已安装好node、npm、vue、vue-cli、stylus(此项目使用stylus来编译)2.开发软件:GoogleChrome(建议安装插件vue-devtools,方便调试),webstorm/sublimeText/VSCode(推荐使用webstorm,sublime和VSCode需要安装相应的插件)3.... 查看详情

eleme饿了么vue项目随笔,随时更新,想到哪里写到哪里比较凌乱一直更新

组件设计原则:就近维护  mock数据模拟:/#/xx/api  vue1.0json获取不到(请求出现sockjs-node/info文件,所以不能加地址栏不加#来获取模拟请求数据)   vue2.0前端请求直接  /api 来获取数据 组件... 查看详情

vue饿了么的技术点

一:项目目录设计。1:制作矢量图片的图标字体。打开icomoon.io网站,点击importicons,上传自己的svg图片,制作自己的图片,上传之后点击generatefont图标,下载然后把其中的font文件夹复制,style.css复制到style文件夹,修改为icom.styl... 查看详情

基于vue2+nuxt构建的高仿饿了么(2018版)(代码片段)

前言高仿饿了么,以nuxt作为vue的服务端渲染,适合刚接触或者准备上vuessr的同学参考和学习项目地址如遇网络不佳,请移步国内镜像加速节点效果演示查看demo请戳这里(请用chrome手机模式预览)移动端扫描下方二维码API接口文... 查看详情

饿了么基于vue2.0的通用组件开发之路(分享会记录)

 Element:一套通用组件库的开发之路Element是由饿了么UED设计、饿了么大前端开发的一套基于Vue2.0的桌面端组件库。今天我们要分享的就是开发Element的一些心得。官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ... 查看详情

vue开发实战生态篇#23:组件库对比:elementuiantdesignvueiview

说明【Vue开发实战】学习笔记。ElementUI、AntDesignVue、iViewElementUIAntDesignVueiView数量单测admin背景原型、设计ElementUI4681%vue-element-admin(社区)饿了么Axure、SketchAntDesignVue5587%Pro(社区)社区主导、蚂蚁金服技术支持Axure、SketchiView54无iView-a 查看详情

vuejs仿美团,饿了么项目之——商品数量加减篇

参考技术A首先,新增个商品数量的加减功能组件,就叫cartcontrol.vue吧。新增个底部购物车组件,叫shopcart.vue吧。在good.vue中引入并注册组件。cartcontrol.vue中,通过props来接收list对象因为我在json中没有设置数量这个key,所以需要... 查看详情

用vue制作饿了么首页

...网页,实现原则是将他们分块,然后各个击破。很明显的饿了么首页分为三个部分(组件),  上面的头部(商家信息),  中间路由  购物车每部分先占住自己位置,然后挨个将这三部分分别实现完整。我... 查看详情

vue.js高仿饿了么外卖app

1.架构从传统的MVC向RESTAPI+前端MV*迁移参考链接:http://blog.csdn.net/broadview2006/article/details/8615055http://blog.csdn.net/u013628152/article/details/42709033MV*包括:MVC、MVP、MVVMvue.js是MVVM框架 2.Iconmoon制作图标字体2 查看详情

经典文摘:饿了么的pwa升级实践(结合vue.js)

...Vue.js官方推特第一次公开到现在,我们就一直在进行着将饿了么移动端网站升级为 ProgressiveWebApp 的工作。直到近日在GoogleI/O2017上登台亮相,才终于算告一段落。我们非常荣幸能够发布全世界第一个专门面向国内用户的PWA... 查看详情