Vue2.0 + vue-router + Vuex 实战(导入并使用外部API)

首先发个项目GitHub地址: https://github.com/RobbieXie/...

有兴趣的可以clone项目下来学习下,先说说项目吧,导师让做一个陈年老项目WebGIS的重构,前端我们选择了没接触过的Vue,听说很不错,特地试一试,我们抛开业务不谈,在项目中我们使用了Vue2.0+VueRouter来控制页面显示和路由,通过Vuex来管理一些全局信息,比如用户Session信息等。

clipboard.png

clipboard.png

我们的界面由四个子组件构成,分别为左侧的navigation栏,右侧上部的header栏、右侧中部的mainpage栏,和右侧下部的footer栏。子组件之间可以共享用户的session信息、session信息通过vuex来统一进行管理。最终,通过Vue-router进行页面之间的切换,最终实现了单页面应用的功能。

代码目录结构如下:
clipboard.png

我们参考了vuex官方教程中给出的项目结构,store用于存储全局信息、component用于用户自定义组件、views目录下放着所有的界面文件、router中配置页面路由信息、整个项目的入口在main.js、并配置App页面进行显示。App页面是包括四个子页面的父页面。

main.js

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  template: '<App/>',
  store,
  components: {
    App
  }
})

App.vue

<template>

<div id="app-wrapper">

    <router-view name="navigation"></router-view>

    <div id="page-wrapper" class="gray-bg">
        <router-view name="header"></router-view>
        <router-view name="mainPage"></router-view>
        <router-view name="footer"></router-view>
    </div>
</div>
</template>

<script>
export default {
  name: 'app'
}
</script>

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import Footer from '@/views/footBar'
import Header from '@/views/headBar'
import Navigation from '@/views/navBar'
import mapPage from '@/views/baidu'
import Index from '@/views/Index'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      redirect: '/index'
    },
    {
      path: '/index',
      name: 'index',
      components: {
        navigation: Navigation,
        header: Header,
        mainPage: Index,
        footer: Footer
      }
    },
    {
      path: '/baidu',
      name: 'mapPage',
      components: {
        navigation: Navigation,
        header: Header,
        mainPage: mapPage,
        footer: Footer
      }
    },
    {
      path: '*',
      name: 'others',
      redirect: '/index'
    }
  ]
})

store我们不在列出,可以自行下载代码研究,vuex的官方文档地址:http://vuex.vuejs.org/zh-cn/

除了vue的基本功能、本项目还使用了百度地图的API,希望知道vue如何引用外部API的同学也可以参照本项目配置;引入外部API步骤:

1.修改webpack的配置文件,加入externals标签;

clipboard.png

2.在index.html中加入百度api的链接<!-- Baidu API -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=yourak"></script>

clipboard.png

3.在使用百度地图API的地方便可直接调用,需要注意的是,所执行的有关外部API的操作需要在vue的mounted()函数内执行,mounted代表页面已经加载完成在执行,否则可能执行API时还没有完成对其的加载、会报错。
<template>
  <div class="wrapper wrapper-content animated fadeInRight">
      <p>baidu map</p>
      <div class="ibox-content" id="map" style="position: relative; height: 820px"></div>
  </div>
</template>

<script>
export default {
  name: 'mapPage' ,
  mounted(){
      console.log(999)
      //百度地图加载完成会调用这里,这里就可以正常初始化了
      var map = new BMap.Map('map')   // 创建Map实例
      map.centerAndZoom(new BMap.Point(121.76, 31.05), 11)  // 初始化地图,设置中心点坐标和地图级别
      map.addControl(new BMap.MapTypeControl())   // 添加地图类型控件
      //    map.setCurrentCity("上海");          // 设置地图显示的城市 此项是必须设置的
      map.enableScrollWheelZoom(true)    // 开启鼠标滚轮缩放
  }
}

</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值