vue2.0+webpack高仿饿了么商家页面

vue2.0+webpack高仿饿了么商家页面

一、项目说明

1. 项目技术
  • vue cli
  • vue
  • ES6
  • vue-resource
  • vue-router
  • better-scroll
  • sass
  • webpack
  • git
2. 项目地址:Github
3. 项目演示
  • sell
  • 手机扫描二维码

    手机扫描二维码

二、项目初始化

1. 使用vue官网给出的命令行工具
# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project(sell)
# 安装依赖,走你
$ cd my-project(sell)
$ npm install
$ npm run dev
2. 初始项目目录(小部分修改)
├── build              // 构建服务和webpack配置
├── config             // 项目不同环境的配置
├── index.html         // 项目入口文件
├── package.json       // 项目配置文件
├── src                // 生产目录
│   ├── common        // 公共的css js 资源
│   ├── components    // 各种组件
│   ├── router        // 路由
│   ├── App.vue       // 主页面 
│   └── main.js       // Webpack 预编译入口
3. 完整项目目录

接下来开始项目的开发

1. webpack 预编译入口文件 main.js
import Vue from 'vue';
import App from './App';
import router from './router';
// index.js会自动寻找到,也可以写全(import router from './router/index.js'import VueResource from 'vue-resource';
import './common/styles/index.scss';

/* 设置为 false 以阻止 vue 在启动时生成生产提示 */
Vue.config.productionTip = false;

Vue.use(VueResource); // 全局注册

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
});
2. 主页面 App.vue
(1)先上代码
<template>
  <div id="app">
    <v-header v-bind:seller="seller"></v-header>
    <div class='tab border-b-1px'>
      <div class='item-tab'>
        <router-link to="/goods">商品</router-link>
      </div>
      <div class='item-tab'>
        <router-link to="/ratings">评论</router-link>
      </div>
      <div class='item-tab'>
         <router-link to="/seller">商家</router-link>
      </div>
    </div>
    <!--主要用于保留组件状态或避免重新渲染-->
    <keep-alive>
        <router-view v-bind:seller="seller"></router-view>
    </keep-alive>
  </div>
</template>

<script>
import header from './components/header/header.vue';
import {urlParse} from './common/js/util.js';
// import data from './common/json/data.json';
const ERR_OK=0;
export default {
  name:'App',
  data () {
    return {
        seller:{
            id: (() => {
                let queryParam=urlParse();
                return queryParam.id;
            })()
        }
    };
  },
  created (){
        this.$http.get('/api/seller?id=' + this.seller.id).then(response => {
            if(response.data.errno===ERR_OK){

// 用于对象的合并 , Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
                this.seller=Object.assign({},this.seller,response.data.data);
            }else{
                console.log('no data');
            }
        });
    // this.seller=Object.assign({},this.seller,data.seller);
  },
  components:{
    'v-header':header
  }
};
</script>

<style lang="scss" scoped>
  @import "./common/styles/mixin.scss";
  #app{
     .tab{
        display:flex;
        width:100%;
        height:40px;
        line-height:40px;
        font-size:14px;
        color:rgb(240,20,20);
        @include border-b-1px(rgba(7,17,27,0.1));
        .item-tab{
            flex:1;
            text-align:center;
            .active{
                color:rgb(240,20,20);
            }
        }
    }
  }
</style>
(2)代码关键说明
主页面的结构
  • v-header 组件
  • 路由渲染组件
功能实现
1) 获取mock数据
  • 在入口文件中main.js 中, 引入 vue-resource ,并全局注册
import VueResource from 'vue-resource';

Vue.use(VueResource); // 全局注册
  • App.vue 中 ,使用生命周期钩子 created , 在实例创建完成后被立即调用,请求数据。且需要在data 选项中返回数据对象(其中的id 放在后面介绍)。
data () {
    return {
        seller:{
            id: (() => {
                let queryParam=urlParse();
                return queryParam.id;
            })()
        }
    };
  },
created (){
        this.$http.get('/api/seller?id=' + this.seller.id).then(response => {
            if(response.data.errno===ERR_OK){
                // 用于对象的合并 , Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
                this.seller=Object.assign({},this
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值