Vue-cli(2)--初始路由&swiper插件&ECharts插件

一、安装

打开Vue Router官网:https://router.vuejs.org/zh/
并且新打开一个终端,在当前demo文件所在的目录里执行以下代码

npm install vue-router

二、导入

打开main.js,在里面执行以下代码。

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

在src文件夹中创建一个新的views文件夹,在里面放页面组件。在views文件夹里面创建Home.vue文件、LIst.vue文件。

<template>
  <div class="home">
      <h2>首页</h2>
  </div>
</template>
<script>
export default {
  name: "Home",
};
</script>
<style>
</style>
<template>
  <div class="list">
      <h2>列表</h2>
  </div>
</template>
<script>
export default {
  name: "List",
};
</script>
<style>
</style>

三、创建路由

在main.js里面创建路由器对象

//导入Home组件
import Home from '../pages/Home.vue'
//导入List组件
import List from '../pages/List.vue'
//创建路由器对象
export default new VueRouter({
  //定义路由信息数组
  routes:[
    //每一条路由信息,就是一个对象。
    {
      //路由路径
     path:'/home',
     //路由名称
     name:'home',
     //路由组件
     component:Home
    },
    {
      //路由路径
     path:'/list',
     //路由名称
     name:'list',
     //路由组件
     component:List
    },
  ]
})

四、配置路由

new Vue({
  render: h => h(App),
  //将路由器对象传给vue实例。
  router
}).$mount('#app')

五、使用路由

1、路由组件跳转

在App.vue里面执行以下代码。

<template>
  <div id="app">
   <div class="header">
      <!-- router-link是路由链接组件,用于跳转 -->
     <router-link to='/home'>首页</router-link>&nbsp;
     <router-link to='/list'>列表页</router-link>&nbsp;
   </div>
     <!-- router-view是路由视图组件,用于呈现路由界面 -->
     <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
</script>

<style>
*{
  margin: 0;
  padding: 0;
  list-style: none;
}
#app {
  padding: 10px;
  margin: 10px;
  border: 1px solid black;
}
</style>

2、编程式路由跳转

<template>
  <div id="app">
   <div class="header">
      <!-- router-link是路由链接组件,用于跳转 -->
     <router-link to='/home'>首页</router-link>&nbsp;
     <router-link to='/list'>列表页</router-link>&nbsp;
    <button @click="gotoAbout">关于</button>&nbsp;
     <button @click="gotoNews">新闻</button>
   </div>
     <!-- router-view是路由视图组件,用于呈现路由界面 -->
     <router-view></router-view>
     <div class="footer">
       关于百度About Baidu使用百度前必读帮助中心京公网安备11000002000001号
     </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  methods: {
    //编程式路由跳转,可以在跳转之前,做各种验证,比如判断权限等。
    gotoAbout(){
      //$route返回的是当前路由信息
      //$router返回的是当前vue实例里面的路由器对象。
      //通过push方法跳转路由,并将路由地址添加到历史记录。
      //通过replace方法,也是跳转路由,他是用当前地址替换记录里面的最后一条地址。
      if(this.$route.path!=='/about'){
        this.$router.push('/about')
      }
    },
    gotoNews(){
      if(this.$route.path!=='/news'){
        this.$router.push('/news')
      }
    }
  },
}
</script>

<style>
*{
  margin: 0;
  padding: 0;
  list-style: none;
}
#app {
  padding: 10px;
  margin: 10px;
  border: 1px solid black;
}
.header{
  border: 1px solid #ccc;
  padding: 10px;
  margin: 10px 0;
}
.footer{
  border: 1px solid #ccc;
  margin: 10px;
  font-size: 14px;
  text-align: center;
  padding: 10px;
}
</style>

二、swiper插件

1、安装

重新打开一个终端,在当前demo文件夹的文件目录里执行以下代码

npm install swiper@5 vue-awesome-swiper@4

2、导入

2.1 在全局导入(在main.js里面写)

// // 导入swiper
import VueAwesomeSwiper from 'vue-awesome-swiper'
// // 导入swiper的样式
import 'swiper/css/swiper.css'
// // 因为swiper是插件,所以要use
Vue.use(VueAwesomeSwiper)

2.2 在局部导入(在Home.vue里面写)

//局部导入swiper
// 导入swiper的组件
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
// 导入swiper的样式
import "swiper/css/swiper.css";

3、 使用

<template>
  <div class="home">
    <h2>首页</h2>
    <div class="box">
      <swiper :options="swiperOptions">
        <swiper-slide>
          <img
            src="http://p1.music.126.net/Y6gItVxUvkbvI2cC8KVZYA==/109951166461233203.jpg?imageView&quality=89"
          />
        </swiper-slide>
        <swiper-slide>
          <img
            src="http://p1.music.126.net/ypjEcAl-BXKqb2UWdau-Tw==/109951166463199078.jpg?imageView&quality=89"
          />
        </swiper-slide>
        <swiper-slide>
          <img
            src="http://p1.music.126.net/_7zX4BjboCYo4KYRvpayDg==/109951166461246383.jpg?imageView&quality=89"
          />
        </swiper-slide>
        <swiper-slide>
          <img
            src="http://p1.music.126.net/3Vwphalm49ewNV-lIJUBNA==/109951166461279853.jpg?imageView&quality=89"
          />
        </swiper-slide>
        <!-- 分页器 -->
        <div class="swiper-pagination" slot="pagination"></div>
        <!--左箭头。如果放置在swiper-container外面,需要自定义样式。-->
        <div class="swiper-button-prev" slot="button-prev"></div>
        <!--右箭头。如果放置在swiper-container外面,需要自定义样式。-->
        <div class="swiper-button-next" slot="button-next"></div>
      </swiper>
    </div>
  </div>
</template>


<script>
//局部导入swiper
// 导入swiper的组件
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
// 导入swiper的样式
import "swiper/css/swiper.css";

export default {
  name: "Home",
  // 注册组件
  components: {
    Swiper,
    SwiperSlide,
  },
  data() {
    return {
      // 定义swiper的配置选项
      swiperOptions: {
        // 指定分页器
        pagination: {
          //指定分页器的容器
          el: ".swiper-pagination",
          //点击分页器的指示点分页器会控制Swiper切换
          clickable: true,
        },
        // 配置衔接滑动
        loop: true,
        // 配置自动播放
        // autoplay:true
        autoplay: {
          //自动播放
          autoplay: true,
          //设置间隔时间
          delay: 1000,
          // 用户操作swiper之后,是否禁止autoplay
          disableOnInteraction: false,
        },
        // slide的切换效果
        effect: "coverflow",
        // 箭头
        navigation: {
          nextEl: ".swiper-button-next",
          prevEl: ".swiper-button-prev",
        },
      },
    };
  },
};
</script>
<style>
.home {
  border: 1px solid blue;
}
.box {
  width: 750px;
}
.box img {
  width: 100%;
}
</style>

三、ECharts插件

1、安装

ECharts官网:https://echarts.apache.org/zh/index.html
新打开一个终端,在当前demo文件夹文件目录里输入以下代码

npm install echarts --save

2、在局部导入

//导入echarts
import * as echarts from "echarts";
//导入axios
import axios from "axios";

3、使用

<template>
  <div class="list">
    <h2>列表</h2>
    <div id="container"></div>
  </div>
</template>


<script>
//导入echarts
import * as echarts from "echarts";
//导入axios
import axios from "axios";

export default {
  name: "List",
  data() {
    return {
      //定义一份数据
      list: [],
    };
  },
  //方法
  methods: {
    //加载数据的方法
    async loadData() {
      //向后台发送请求,获取一份数据
      let { data } = await axios.get("data/data1.json");
      this.list = data;
      //调用渲染数据的方法
      this.showData()
    },
    //渲染数据的方法
    showData() {
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById("container"));
      myChart.setOption({
        //标题
        title: {
          text: "Stacked Line",
        },
        //提示框组件
        tooltip: {
          trigger: "axis",
        },
        //图例组件
        legend: {
          data: this.list.map((r) => r.name),
        },
        //网格
        grid: {
          left: "5%",
          right: "5%",
          bottom: "5%",
          //网格空间是否包含文本
          containLabel: true,
        },
        //工具栏
        toolbox: {
          //各工具配置项
          feature: {
            //另存为图片
            saveAsImage: {},
          },
        },
        //X轴数据
        xAxis: {
          type: "category",
          boundaryGap: false,
          data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
        },
        //Y轴数据
        yAxis: {
          type: "value",
        },
        //系列
        series: this.list.map((r) => {
          return {
            name: r.name,
            type: "line",
            data: r.moneys.map((h) => h.money),
          };
        }),
      });
    },
  },
  //数据创建完成
  create() {},
  //页面挂载完成
  mounted() {
    this.loadData();
  },
};
</script>
<style>
.list {
  border: 1px solid pink;
}
.list #container {
  width: 1000px;
  height: 600px;
  border: 1px solid #ccc;
}
</style>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容