精华内容
下载资源
问答
  • vue实战视频分享

    千次阅读 热门讨论 2018-07-26 17:37:09
    从业以来,看过这种书籍及视频,有些醍醐灌顶,有些则是索然无味。漫天飞舞的混杂视频且是没有多大价值,为此,整理了从业来...这里,先给大家分享VUE实战视频,限时分享,手慢无。截图如下 获取视频:原文地址...

    从业以来,看过这种书籍及视频,有些醍醐灌顶,有些则是索然无味。漫天飞舞的混杂视频且是没有多大价值,为此,整理了从业来收集到的视频,有基础的也有实战视频。
    这里,先给大家分享VUE实战视频,限时分享,手慢无。截图如下
    这里写图片描述

    获取视频:原文地址

    展开全文
  • vue实战视频教程

    2020-06-05 09:36:23
    总结一vue实战(6):异步显示数据、开发Star组件vue实战(7):完整开发登录页面(一)vue实战(8):完整开发登录页面(二)vue实战(9):总结二vue实战(10):开发店铺详情(一)vue实战(11):开发店铺详情...

    0. 百度网盘链接在最后

    vue实战(1):准备与资料整理
    vue实战(2):初始化项目、搭建底部导航路由
    vue实战(3):底部导航显示、搭建各模块静态页面、添加登录页页面与路由
    vue实战(4):postman测试数据、封装ajax、使用vuex管理状态
    vue实战(5):总结一
    vue实战(6):异步显示数据、开发Star组件
    vue实战(7):完整开发登录页面(一)
    vue实战(8):完整开发登录页面(二)
    vue实战(9):总结二
    vue实战(10):开发店铺详情(一)
    vue实战(11):开发店铺详情(二)
    vue实战(12):完结 + 附学习视频

     

          这个教学视频内容并不多,也没有后端内容,样式与页面也是现成的,主要完成的就是逻辑部分,自己也感觉到了学习的效率有些低了,期间各种乱七八糟的事情,个人原因外界原因等等,导致拖到现在,其实后面还有一些内容,想了想就此结束吧,这个教学内容也学习的百分之九十了,准备进入下一阶段的学习,再拖下去对学习效率而言有害无益。

          看看这个技术栈,其实东西不少,很多都是之前没有接触过的,没用过不会用的比较多。跟着这个学习视频学习,并没有想着学完了之后就都能懂了,主要的目的是去了解写项目的流程、需要有哪些知识储备、夯实基础知识。

          技术缺乏不重要,就要学会去仿造轮子,各种教学那么多,跟着学总归会学到很多东西的。

    下一个学习计划已经是正在进行时,技术栈是:vue全家桶+SSR+koa2,包含了后端内容,需要学习的东西要多很多,大概2至3天进行一次总结整理。

    并没有打广告的意思,我这个人看这些学习视频基本上都是白嫖,花钱是不可能花钱的,既然是白嫖来的也给人家说说好话吧,其中的内容还是很不错的,有能力的支持正版,有需要的朋友可以看看,不做商用牟利只是做分享学习之用!
    链接:https://pan.baidu.com/s/1dezZoUs2q7mA3v3TEDs0PQ
    提取码:40z3

    展开全文
  • 某课网 :前端面试项目冲刺 京东金融Vue组件化实战 vue实战教学视频 无快进 完整版 亲测可用 Vue+webpack
  • Vue实战视频-快餐店收银系统

    千次阅读 2017-06-21 10:06:46
    http://jspang.com/2017/05/22/vuedemo/
    展开全文
  • vue项目实战.zip

    2019-11-24 17:10:33
    vue视频教程,2019vue实战视频-不止三套 2019vue实战视频-不止三套 vue实战视频
  • vue基础和实战视频

    2018-06-01 09:06:40
    vue入门到实战视频资料,尚硅谷vue最新教学视频下载。
  • 分享一个vue 3.0从基础入门到实战的项目
  • vue实战总结

    万次阅读 多人点赞 2017-01-13 21:47:03
    用了十多天看完一份vue实战视频,实现了一个仿饿了么外卖APP。 部分总结以及部分实现如下: App.vue 1.App.vue在HTML中使用router-link标签来导航,默认被渲染成一个a标签,通过传入to属性指定链接; &...

    用了十多天看完一份vue实战视频,实现了一个仿饿了么外卖APP。

    部分总结以及部分实现如下:

     

    App.vue

            1.App.vue在HTML中使用router-link标签来导航,默认被渲染成一个a标签,通过传入to属性指定链接;

    <div class="tab-item">
        <router-link to="/goods">商品</router-link>
    </div>
    <div class="tab-item">
        <router-link to="/ratings">评论</router-link>
    </div>
    <div class="tab-item">
        <router-link to="/seller">商家</router-link>
    </div>

     

          2.在main.js中配置路由

    • 导入Vue和VueRouter,并调用Vue.use(VueRouter)
    • 定义组件:import子组件
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    import goods from 'components/goods/goods.vue';
    import ratings from 'components/ratings/ratings.vue';
    import seller from 'components/seller/seller.vue';
    import App from './App.vue';
    • 定义路由:每个路由映射一个组件
    const routes = [
        {
            path: '/goods',
            component: goods
        },
        {
            path: '/ratings',
            component: ratings
        },
        {
            path: '/seller',
            component: seller
        }
    ];
    • 创建router实例:传入routes配置
    const router = new VueRouter({
        routes: routes
    });
    • 创建和挂载根实例:通过router配置参数注入路由,从而让整个应用都有路由功能
    const app = new Vue({
        el: '#app',
        template: '<App/>',
        components: {App},
        router
    });

            3.在App.vue中添加router-view(最顶层的出口,渲染最高级路由匹配到的组件),使用keep-alive,把切换出去的组件保存在内存中,保留它的状态或避免重新渲染

    <keep-alive>
      <router-view :seller="seller"></router-view>
    </keep-alive>

            4.引入data.json中的数据

    created() {
      this.$http.get('/api/seller').then((response) => {
          response = response.body;
          if (response.errno === ERR_OK) {//const ERR_OK = 0;
              this.seller = response.data;
          }
      });
    }     
     

           5.引入header组件,并将seller数据传给header组件

           在JS中import header组件,并在components中注册,在template模板中使用header

    <v-header :seller="seller"></v-header>

    header.vue

           1.接收父组件传来的数据

    props: {
        seller: {
            type: Object
        }
    }

            2.写模板以及方法

           在img中引入图片来源:

    <img  width="64" height="64" :src="seller.avatar">

           如果有优惠活动,显示第一个优惠活动:data.json中定义了优惠活动的type序号,对应classMap中的活动名称

    <div v-if="seller.supports" class="support">
        <span class="icon" :class="classMap[seller.supports[0].type]"></span>
        <span class="text">{{seller.supports[0].description}}</span>
    </div>
    created() { this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee']; },

            点击展开活动详情及商家公告:弹出层绝对定位,@click控制弹出层的v-show的true或false值,并设置默认值为false

    <div class="support-count" v-if="seller.supports" @click="showDetail">
      <span class="count">{{seller.supports.length}}个</span>
      <i class="icon-keyboard_arrow_right"></i>
    </div>
    methods: {
      showDetail() {
        this.detailShow = true;
      }
    }
    <div class="detail" v-show="detailShow">
     
    data() { return { detailShow:false  }; }

            遍历优惠活动的小图标及文字:在公共样式表中封装bg-image()样式,在不同的分辨率下显示不同大小的图标,通过优惠活动的type选择不同的样式

    <ul v-if="seller.supports" class="supports">
      <li class="support-item" v-for="(item,index) in seller.supports">
        <span class="icon" :class="classMap[seller.supports[index].type]"></span>
        <span class="text">{{seller.supports[index].description}}</span>
      </li>
    </ul>
     
    bg-image($url) background-image:url($url+"@2x.png") @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3) background-image:url($url+"@3x.png")
    &.decrease
      bg-image('decrease_2')
    &.discount
      bg-image('discount_2')
    &.guarantee
      bg-image('guarantee_2')
    &.invoice
      bg-image('invoice_2')
    &.special
      bg-image('special_2')

            3.引入star组件,传入star图标的size和score

    <star :size="48" :score="seller.score"></star>

    star.vue

    <div class="star" :class="starType">
      <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
    </div>

            1.在计算属性中,starType根据传入的size来定义样式

    starType() {
      return 'star-' + this.size;
    }

            2.itemClasses返回评星状态,根据传入的score来计算满星、半星和无星的个数,result数组装入星星的状态

    const CLS_ON = 'on';
    const CLS_OFF = 'off';
    const CLS_HALF = 'half';
    itemClasses() {
      let result = [];
      let score = Math.floor(this.score * 2) / 2;
      let hasDecimal = score % 1 !== 0;
      let integer = Math.floor(score);
      for (let i = 0; i < integer; i++) {
        result.push(CLS_ON);
      }
      if (hasDecimal) {
        result.push(CLS_HALF);
      }
      while (result.length < LENGTH) {
        result.push(CLS_OFF);
      }
      return result;
    }

            3.:class="itemClass"表示遍历出的星星的状态,状态不同,显示星星的状态图标即不同,class为on即显示满星,以此类推

    &.star-48
      .star-item
        width: 20px
        height: 20px
        margin-right: 22px
        background-size:20px 20px
        &:last-child
          margin-right:0
        &.on
          bg-image("star48_on")
        &.half
          bg-image("star48_half")
        &.off
          bg-image("star48_off")

    goods.vue

            1.通过props导入数据并在li中循环,若是优惠活动,则加上小图标,并获得数组索引,在计算属性中获取内容栏滚动位置的索引,改变菜单栏的背景颜色

    <ul>
      <li v-for="(item,index) in goods" class="menu-item" :class="{'current':currentIndex===index}" @click="selectMenu(index,$event)">
        <span class="text border-1px">
          <span v-show="item.type>0" class="icon" :class="classMap[item.type]"></span>{{item.name}}
        </span>
      </li>
    </ul>
     
    currentIndex() { for (let i = 0; i < this.listHeight.length; i++) { let height1 = this.listHeight[i]; let height2 = this.listHeight[i + 1]; if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) { return i; } } return 0; }

            2.绑定菜单栏和内容栏的点击及滚动:菜单栏绑定点击事件,获取点击的index的元素,内容栏滚动到该元素

    <li v-for="item in goods" class="food-list food-list-hook">
    selectMenu(index, event) {
      if (!event._constructed) {
        return;
      }
      let foodList = this.$refs.foodsWrapper.getElementsByClassName('food-list-hook');
      let el = foodList[index];
      this.foodsScroll.scrollToElement(el, 300);
    }

            3.引入购物车组件,并传入选中的food以及配送费、最低配送价格,food.count为cartcontrol组件中的变量,为商品个数

    <shopcart :selectFoods="selectFoods" :deliveryPrice="seller.deliveryPrice" :minPrice="seller.minPrice"></shopcart>
    selectFoods() {
      let foods = [];
      this.goods.forEach((good) => {
        good.foods.forEach((food) => {
          if (food.count) {
            foods.push(food);
          }
        });
      });
      return foods;
    }

            4.导入food组件,展开菜品详情页,并传入已选中的菜品,ref 被用来给元素或子组件注册引用信息

    <food :food="selectedFood" ref="food"></food>

    shopcart.vue

            判断是否达到结算要求

    <div class="pay" :class="payClass">
      {{payDesc}}
    </div>
    payDesc() {
      if (this.totalPrice === 0) {
        return `¥${this.minPrice}元起送`;
      } else if (this.totalPrice < this.minPrice) {
        let diff = this.minPrice - this.totalPrice;
        return `还差¥${diff}元起送`;
      } else {
        return '去结算';
      }
    },
    payClass() {
      if (this.totalPrice < this.minPrice) {
        return 'not-enough';
      } else {
        return 'enough';
      }
    }

    food.vue

            点击加入购物车,商品数量显示为1,购物车加入数量及价格

    <div class="cartcontrol-wrapper">
      <cartcontrol :food="food"></cartcontrol>
    </div>
    <div @click="addFirst" class="buy" v-show="!food.count || food.count===0">加入购物车</div>

            引入ratingSelect组件,显示商品评价的类别及是否只看有内容的评价,v-on接收来自子组件的参数

    <ratingselect v-on:ratingTypeSelect="chooseType" v-on:contentToggle="chooseOnly" :selct-type="selectType" :only-content="onlyContent" :desc="desc" :ratings="food.ratings"></ratingselect>

            使用过滤器,引入公共js方法,将时间戳转换为yyyy:MM:dd hh:mm的时间格式

    <div class="time">{{rating.rateTime | formatDate}}</div>
     
    export function formatDate(date, fmt) {
      if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
      }
      let o = {
        'M+' :date.getMonth() + 1,
        'd+' :date.getDate(),
        'h+' :date.getHours(),
        'm+' :date.getMinutes(),
        's+' :date.getSeconds()
      };
      for (let k in o) {
        if (new RegExp(`(${k})`).test(fmt)) {
          let str = o[k] + '';
          fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
        }
      }
      return fmt;
    };
    
    function padLeftZero(str) {
      return ('00' + str).substr(str.length);
    }
     
    filters: { formatDate(time) { let date = new Date(time); return formatDate(date, 'yyyy-MM-dd hh:mm'); } }

            实现父组件与子组件通信,选择评论类别,评论改变

    chooseType(type) {
      this.selectType = type;
      this.$nextTick(() => {
        this.scroll.refresh();
      });
    },
    chooseOnly(onlyContent) {
      this.onlyContent = onlyContent;
      this.$nextTick(() => {
        this.scroll.refresh();
      });
    }

    ratingSelect.vue

           评论类别选择按钮

    <span @click="select(2,$event)" class="block positive" :class="{'active':selectType===2}">{{desc.all}}<span class="count">{{ratings.length}}</span></span>

            将评论类别及是否只显示内容传入父组件

    select(type, event) {
      if (!event._constructed) {
        return;
      }
      this.selectType = type;
      this.$emit('ratingTypeSelect', type);
    },
    toggleContent(event) {
      if (!event._constructed) {
        return;
      }
      this.onlyContent = !this.onlyContent;
      this.$emit('contentToggle', this.onlyContent);
    }

    seller.vue

            商家实景,遍历实景图片,并横向滑动

     
    <div class="pic-wrapper" ref="picWrapper">
      <ul class="pic-list" ref="picList">
        <li class="pic-item" v-for="pic in seller.pics">
          <img :src="pic" width="120" height="90">
        </li>
      </ul>
    </div>
    _initPics() {
      if (this.seller.pics) {
        let picWidth = 120;
        let margin = 6;
        let width = (picWidth + margin) * this.seller.pics.length - margin;
        this.$refs.picList.style.width = width + 'px';
        this.$nextTick(() => {
          this.picScroll = new BScroll(this.$refs.picWrapper, {
            scrollX: true,
            eventPassScroll: 'vertical'
          });
        });
      }
    }

     

    展开全文
  • vue实战

    2021-02-02 19:42:08
    vue实战 1.项目概述 1.功能模块 电商后台管理系统大致可以分为以下几个功能模块: 用户登录,退出登录 用户管理 权限管理 角色列表 权限列表 商品管理 商品列表 分类列表 参数管理 订单管理 数据管理 2.开发...
  • vue基础视频教程

    2019-01-03 12:01:32
    vuex基础视频教程 vue-router基础视频教程 vue-cli基础视频教程 vue实战视频教程
  • vue 实战培训课程 从事it开发7年以上,HP、Mysql、linux、a...
  • vue实战项目视频分享

    千次阅读 2018-09-19 16:09:53
    笔者新建了一个QQ群:571278542 。欢迎大家加入获取资料!
  • 前端 vue 实战 小白至核心 --- 视频课程源码资源,带你进行项目实战
  • ECHARTS基础到vue实战 前端开发工程师,对vue html5,eas...
  • vue基础+实战视频

    2020-02-25 11:42:38
    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另...
  • vue饿了么app项目实战视频
  • 2020最新-Vue ElementUi入门实战视频教程.txt2020最新-Vue ElementUi入门实战视频教程.txt2020最新-Vue ElementUi入门实战视频教程.txt2020最新-Vue ElementUi入门实战视频教程.txt2020最新-Vue ElementUi入门实战...
  • Vue实战-模版建站 5年前端开发经验,擅长vue.js、微信小程序等开发 ...
  • 课程融合了实战中使用的多种VUE开发技术,主要以项目全程的开发为主,更适合有一定基础和经验的同学们进行深度研习。完成课程的学习可以极大的提高同学们对VUE开发的认识,提高系统化开发的能力。
  • vue实战(3):底部导航显示、搭建各模块静态页面、添加登录页页面与路由 vue实战(4):postman测试数据、封装ajax、使用vuex管理状态 vue实战(5):总结一 vue实战(6):异步显示数据、开发Star组件 ...
  • 2019最新vue三套实战视频(干货)让你玩转vue开发,深入vue企业开发实战
  • 初级项目vue实战项目 收银系统

    千次阅读 2018-06-12 16:56:15
    Vue实战视频-快餐店收银系统 (共11集)2017-05-22 分类:Vue.js视频教程 / 视频教程 阅读(126832) 评论(136) 课程前言 这是我网站恢复后写的第一篇文章,在关站这段时间里,群里的小伙伴们给了我很多支持,...
  • vue实战(12):完结 + 附学习视频-附件资源
  • 2019最新vue三套实战视频,结合项目实战学习,更快的学习和掌握vue.
  • vue 实战培训课程

    千人学习 2018-01-02 15:06:08
    vue的基本使用 vue的组件使用
  • Vue实战进阶

    2020-11-26 17:36:14
    最开始学Vue,感觉容易,后来实际应用中,很容易忽略一些问题,犯些低级错误,或者,以前看文档根本没注意的地方。那么,就总结一下吧。
  • vue入门视频教程 vue基础到项目实战

    千次阅读 2019-05-05 23:42:00
    本课程从理论到项目,涵盖Vue各个层面的基础知识和Vue开发项目实战。对于很多刚接触Vue的同学,最难做到的就是编程思路的切换,这门课程,我们将通过形象的例子给大家讲解Vue的基础语法及编程思路! 自学前端软件工程师...
  • vue.js实战资源视频.txt

    2019-08-01 09:43:33
    vue基础介绍 + 项目实战 视频; 入门vue强烈推荐,项目实战是用vue写的仿去哪儿旅游App

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,184
精华内容 3,273
关键字:

vue实战视频

vue 订阅