一、本节内容

  1. 掌握项目环境中路由的配置方法 *****
  2. 熟练掌握编写单文件组件的编写 ***
  3. 能够使用swiper.js进行轮播图组件的封装
  4. 能够使用axios进行数据请求

二、webpack项目的目录结构的详细解析

以下是对webpack项目的配置详细说明,在这边说明需要说明的是: build、config、node_modules、static文件夹基本都暂时不需要改动,只有src文件夹下才是我们需要开发的代码。

关于webpack的详细安装,以及部分使用,请查看:https://www.cnblogs.com/zhangqigao/p/9604100.html

三、项目环境中路由配置

3.1、配置一级路由

配置一级路由的思路:

  • 准备一级路由模块
  • 配置一级路由的信息

说明:根据上面的图所示,一级路由是配置是在src -> router ->  index.js 下的。首先我们先创建两个页面的组件,然后通过路由指向 页面的组件。

1、在src-> 手动创建pages->手动创建Home->home.vue和Mine->mine.vue单文件组件(mine.vue组件跟home.vue组件一样)

2、在src -> router ->  index.js 目录下配置 一级路由:

然后分别请求 链接调试:http://localhost:8080/#/home

注意:这边还有一个需要强调的是,app.vue组件中所有的标签或者添加的组件,所有页面都看的到,是所有页面公用的。如果想所有页面都需要这个标签或者组件的话,就在app.vue中添加。如图:

3.2、二级路由的配置

说明:二级路由是在一级路由的基础上配置的,也是在index.js配置的。

配置二级路由的目的:因为我们在一级路由下面还有很多其他页面,所以我们还需配置二级路由:比如 在home目录下,你要访问 film页面: http://localhost:8080/#/home/film这种效果。

配置二级路由的思路:

  • 准备二级路由模块
  • 配置二级路由路径信息
  • 更改HTML结构

1、准备二级路由模块和配置二级路由信息

2、更改HTML结构

效果图:输入:http://localhost:8080/#/home/film,并且显示film.vue组件中的内容。

3.3、改进二级路由HTML结构

说明:改进后的HTML结构需要在 router-link外面包裹一个 span标签,以方便与 绑定指令。

<template>
  <div>
    home
    <div class="nav">
      <span :class="{active: nowIndex==0}" @click="nowIndex=0">
        <router-link to="/home/film">电影</router-link>
      </span>
      <span :class="{active: nowIndex==1}" @click="nowIndex=1">
        <router-link to="/home/read">读书</router-link>
      </span>
      <span :class="{active: nowIndex==2}" @click="nowIndex=2">
        <router-link to="/home/tv">电视</router-link>
      </span>
    </div>
    <div>
      <router-view></router-view>
    </div>
  </div>
</template>

<script>
  export default{
    components: {

    },
    data: function(){
      return {
        nowIndex: 0
      }
    }
  }
</script>

home.vue

这个后续会持续优化。

四、单文件组件的编写

4.1、引用单文件组件

说明:我们再父组件中,经常回去引用子主见,那我们如何在一个单文件组件中去调用其他组件呐,或者去引用其他组件呐。

思路:

  • 定义子组件
  • 在父组件中导入子组件,并且注册

定义子组件,上面我们已经说过了,下面我们就来看看子父组件中导入子组件,并且完成注册。当然这边可以引用多个Home组件,如图只引用了一个Home组件,比如,我经常用的button,就可以一个页面上使用多个。

4.2、在单文件组件中设置样式

说明:直接在单文件组件下方,添加<style>标签然后设置即可。

4.3、props和slot槽口的使用

说明:(props)我们组件可能只有一套,只是往不同的组件中传入不同的值而已。(slot)槽口,就是说每个页面可能都要一个图片,或者,每个页面都要一个标签,那么我们就会给每个页面预留一个槽口,如果说这个槽口只有一个,那我们就用匿名槽口,但是有多个,我们就用 具名槽口

      

这边强调一下,可以在span标签上做任何指令的,这边就不一一诉说了。

<span v-show="bol"><slot name="activeImg"></slot></span>

父子组件传值以及跳转:https://www.cnblogs.com/zhangqigao/p/9604086.html,重定向:this.$router.push('/' + this.mark);

重定向:在script中 在 beforeCreate之前 重定向:

beforeCreate: function(){
     this.$router.push('/');
}

这个重定向,一般是重新刷新一下首页的时候,会用到。

五、swiper.js进行轮播图组件的封装

5.1、思路分析

  • 掌握swiper.js 插件的使用方法
  • 利用 swiper.js 插件封装轮播图插件

swiper.js的官方网站:https://www.swiper.com.cn

如何学习请查看 : 中文教程  和  api文档

在正常的页面中我们就不详细说了,这个中文教程里面有。我们主要看看,在vue中如何使用轮播图

5.2、vue中使用轮播图

1、先下载swiper.js和swiper.css并且在src ->  asserts -> libs(手动创建) 中分别 放入

2、创建轮播图组件banner.vue

主要注意的是:

导入swiper.js 的方式:

<script>
  import '../assets/libs/swiper/js/swiper.min.js'  //引入第三方js库
</script>

导入swiper.css的方式:

<style>
  @import "../assets/libs/swiper/css/swiper.min.css"; /*引入第三方css库,注意了,这边引入的时候,最后一定要加分号(;)*/
</style>

banner.vue的组件内容:

<template>
  <div class="banner">
    <div class="swiper-container"  :class="swiperid">
      <div class="swiper-wrapper">
        <slot name="swiper-con"></slot>
      </div>
      <div :class='{"swiper-pagination":paginationshow}' :style='{"text-align":paginationdesition}'></div>
    </div>
  </div>
</template>

<script>
  import '../assets/libs/swiper/js/swiper.min.js'  //引入第三方js库
  export default {
    props: {    //props的高级使用,type表示传入的字符类型,default表示默认值
      swiperid: {
        type: String,
        default: ''
      },
      paginationshow: {
        type: Boolean,
        default: true
      },
      paginationdesition: {
        type: String,
        default: 'center'
      },
    },
    mounted: function(){
      var _this = this
      new Swiper('.' + _this.swiperid,{
        direction: _this.declarations,
        loop: _this.loop,
        //....还有其他效果
      })
    }
  }
</script>

<style>
  @import "../assets/libs/swiper/css/swiper.min.css"; /*引入第三方css库,注意了,这边引入的时候,最后一定要加分号(;)*/
</style>

banner.vue

3、引用轮播图

说明:在我们的主页面home.vue页面引用我们的banner.vue

<template>
  <div>
    home
    <!--应用轮播图-->
    <Banner  swiperid="go">
      <div slot="swiper-con" class="swiper-slide">
        <img src="../../assets/images/logo.png">
      </div>
    </Banner>
</template>

<script>
  import Banner from '../../components/banner'  //导入banner组件
  export default{
    components: {
        Banner  注册banner组件
    },
    data: function(){
      return {
        nowIndex: 0
      }
    }
  }
</script>

home.vue

小结技巧:可通过设置props选项的默认值,来增强组件的灵活性。

六、axios请求数据

6.1、目标

  • 使用axios请求数据
  • 将请求到的数据展示在页面中

6.2、思路分析

  • 配置axios请求所需环境
  • 进行axios请求
  • 将请求到的数据进行存储和展示

6.3、axios请求环境配置

  • axios 和 vue-axios文件夹复制到node_modules 中
  • 在src中将data文件夹复制进去

如果没有的话,一般都是在线安装

>>> cd  项目
>>>npm install --save axios vue-axios

然后在你的main.js文件中,添加如下配置:

import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, axios)

如果你要把文件存在本地的话,那就还需要配置其他:

6.4、网络请求方式

this.axios.get('/api/homeData').then(response) => {
            console.log(response.data.data.recommend_feeds);

}

如图展示:

总结:axios是vue.js提倡使用的另一个网络请求的库,目前应用越来越广泛。

更多关于 axios的详细资料:https://www.npmjs.com/package/axios,https://www.cnblogs.com/zhangqigao/p/10557670.html

第10章-Vue.js 项目实战的更多相关文章

  1. Vue.js项目实战-多语种网站(租车)

    首先来看一下网站效果,想写这个项目的读者可以自行下载哦,地址:https://github.com/Stray-Kite/Car: 在这个项目中,我们主要是为了学习语种切换,也就是右上角的 中文/En ...

  2. Vue.js项目实战-打造线上商城

    首先上一下完成后的效果: 首页: 商品详情页: 购物车页(其实还有个订单页,只是和购物车页基本类似,所以就不截图啦): 开始项目: 由于涉及的是前后端分离,所以我们的后台数据就模拟存储于浏览器端(co ...

  3. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  4. 【Vue.js游戏机实战】- Vue.js实现九宫格水果机抽奖游戏总结

    大家好!先上图看看本次案例的整体效果. 完整版实战课程附源码:[Vue.js游戏机实战]- Vue.js实现九宫格水果机抽奖 实现思路: Vue component实现九宫格水果机组件,可以嵌套到任意 ...

  5. 【Vue.js游戏机实战】- Vue.js实现老虎-机抽奖总结

    大家好!先上图看看本次案例的整体效果. 完整版实战课程附源码:[Vue.js游戏机实战]- Vue.js实现老虎-机抽奖 实现思路: Vue component实现老虎-机组件,可以嵌套到任意要使用的 ...

  6. Vuejs实例-01使用vue-cli脚手架搭建Vue.js项目

    [TOC] 1. 前言 vue-cli 一个简单的构建Vue.js项目的命令行界面 整体过程: $ npm install -g vue-cli $ vue init webpack vue-admi ...

  7. vue.js项目构建

    这里构建的vue.js项目依赖node服务器运行. 项目搭建完整步骤: 安装node.js ,转至nodeJs网站http://nodejs.cn/ 下载nodeJs进行安装. 安装完毕检查nodeJ ...

  8. vue.js项目安装

    Vue.js 安装 NPM 方法安装vue.js项目 npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v 2.3.0 #升级 npm npm install np ...

  9. vscode下面开发vue.js项目

    vscode下面开发vue.js项目   https://blog.csdn.net/linzhiqiang0316/article/details/79176651 vscode下面开发vue.js ...

随机推荐

  1. Teamwork(The first day of the team)

    今天是第一次的小组讨论,我们主要是分析了我们的大概方向及大概功能及相应的分工.其实具体也还没有确定下来,只是大概的说了一下,确定了master为杨灵超同学.下面用图片记录我们这一天的工作内容(杨灵超V ...

  2. week3b:个人博客作业

    vs2013的初步使用 由于自己在写这篇博客的时候已经把vs2013安装完毕,就我写了. 这是2013的使用步骤 第一步 注释 箭头指的方向是“点击” 第二步 第三步 第四步 第5步 第六步 最后点击 ...

  3. 微信小程序配置文件记录

    最近公司要求,需要研究微信方面的问题,我有幸被选中了,一周时间,研究透做出个小程序来.我就从简单的开始了,记录一下,以后忘了,好来翻阅 app.json 配置文件 配置文件上写:是由哪些页面组成,配置 ...

  4. ORA-06530: 引用未初始化的组合 ;

    select * FROM TABLE(fun_test_1) : ORA-06530: 引用未初始化的组合ORA-06512: 在 "PCISS.FUN_TEST_1", lin ...

  5. PBS命令和使用

    PBS是公开源代码的作业管理系统,在此环境下运行,用户不需要指定程序在哪些节点上运行,程序所需的硬件资源由PBS管理和分配. PBS(Portable Batch System)是由NASA开发的灵活 ...

  6. 笔记之远程桌面服务(RDS)

    Windows默认只能有2个用户同时通过RDP进行连接,非常不方便,于是借此机会学习了下Win2012R2的远程桌面配置.以下我把学习过程记录一下: 1. 最开始我觉得只需要安装“Remote Des ...

  7. poj 3254(状态压缩DP)

    poj  3254(状态压缩DP) 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相 ...

  8. Memcache服务器端+Redis服务器端+PHP Memcache扩展+PHP Memcached扩展+PHP Redis扩展+MemAdmin Memcache管理工具+一些概念(更新中)

    Memcache和Redis因为操作简单,是我们常用的服务器数据缓存系统,以下文字仅作备忘记录,部份转载至网络. 一.定义 1.Memcache Memcache是一个高性能的分布式的内存对象缓存系统 ...

  9. Asp.Net Core实现文件上传

    1. Asp.Net Core Mvc方式 public class UploadController : Controller { private IHostingEnvironment _host ...

  10. .net webapi创建接口

    最近使用webapi做了一个用户数据库接口,方便其它网站接入验证用户,实现中解决出现的一些问题,做了一些记录, 1.返回显示为json数据 2.允许其他网站访问,刚开始没有设,在本地机测试时可以访问, ...