Vue基础---->vue-router的使用(一)

  用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js 时,我们就已经把组件组合成一个应用了,当你要把 vue-router 加进来,只需要配置组件和路由映射,然后告诉 vue-router 在哪里渲染它们。

vue-router的使用一

一、在html的代码中,我们写一个简单的例子。这里的vue.js和vue-router的版本都是2。如果vue版本不对应,就不会生效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../vue.js"></script>
    <script type="text/javascript" src="../vue-router.js"></script>
</head>
<body>
    <div id="app">
      <h1>Hello App!</h1>
      <p>
        <router-link to="/foo">Go to Foo</router-link>
        <router-link to="/bar">Go to Bar</router-link>
      </p>
      <router-view></router-view>
    </div>
    <script type="text/javascript" src="js/vue7.js"></script>
</body>
</html>

二、在js中的代码如下:

// 0. 如果使用模块化机制编程, 要调用 Vue.use(VueRouter)

// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template: ‘<div>foo</div>‘ }
const Bar = { template: ‘<div>bar</div>‘ }

// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
  { path: ‘/foo‘, component: Foo },
  { path: ‘/bar‘, component: Bar }
]

// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
  routes // (缩写)相当于 routes: routes
})

// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({
  router
}).$mount(‘#app‘)

// 现在,应用已经启动了!

三、运行的效果如下:当 <router-link> 对应的路由匹配成功,将自动设置 class 属性值 .router-link-active

vue-router的使用二

一、定义一个嵌套的路由,html的代码没有做改变。js里面增加以下的代码:

const Person = {
    template: ‘<div class="user"><h2>User {{ $route.params.id }}</h2><router-view></router-view></div>‘
}

const Huhx = {
    template: ‘<div style="color: red;">my name is huhx.</div>‘
}

增加路由的映射,代码如下:

const routes = [{
    path: ‘/foo‘,
    component: Foo
}, {
    path: ‘/bar‘,
    component: Bar
}, {
    path: ‘/user/:id‘,
    component: User
}, {
    path: ‘/person/:id‘,
    component: Person,
    children: [
        {
            path: ‘huhx‘,
            component: Huhx
        }
    ]
}]

运行的效果如下:

模拟一下路由的原理

一、主页面的代码huhx3.html内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../jquery-3.1.0.js"></script>
    <script type="text/javascript" src="js/app3.js"></script>
</head>
<body>
    <ul>
    <li><a href="#/">首页</a></li>
    <li><a href="#/product">产品</a></li>
    <li><a href="#/server">服务</a></li>
</ul>
<div id="content"></div>
</body>
</html>

其中测试中包含的两个碎片页如下:

  • page.html:
<div style="color: red">Hello World</div>
  • product.html:
<div style="background-color: #CCCCCC; text-shadow: 2px 2px 4px red">I love you.</div>

关于js的代码如下:app3.js

function load() {
    var url = window.location.href;
    // get the router
    var index = url.indexOf("#");
    var routeUrl = url.substring(index, url.length);
    alert("routeUrl: " + routeUrl);
    // 比较Router对象,加载页面
    if (routeUrl == "#/server") {
        $("#content").load("page.html");
    } else if (routeUrl == "#/product") {
        $("#content").load("product.html");
    } else {
        $("#content").load("<span>huhx</span>");
    }
}

window.addEventListener(‘hashchange‘, function() {
    load();
}, false);

二、运行效果如下:注意到url点击两次,并没有触发hashchange事件。下面我们说一下这个事件,了解这样实现的缺点。

关于路由,请参考博客:https://developer.mozilla.org/zh-CN/docs/DOM/Manipulating_the_browser_history

友情链接

时间: 2024-10-29 19:09:43

Vue基础---->vue-router的使用(一)的相关文章

vue学习指南:第二篇(详细Vue基础) - Vue的指令

一. Vue 的介绍 1. vue是一个 mvvm 的框架.(面试官经常会问的),angular 是 mvc的框架. 2. vm 是 vum 的实例,这个实例存在计算机内存中,主要干两件大事: 1. 绑定数据 2. dom检测 3. vue 实例 靠 new 关键字实例化 vue 对象,使用 mvvm 模型 1. M modal 数据 2. v view 视图 3. vm 全称viewmodal 就是一个vue实例 4. Vue.js 是封装的一个类,参数是个 options 对象 最常用的属性

Vue 基础知识之 Vue.extend

Vue.extend 属于 Vue 的全局 API,在实际业务开发中我们很少使用,因为相比常用的 Vue.component 写法使用 extend 步骤要更加繁琐一些.但是在一些独立组件开发场景中,Vue.extend + $mount 这对组合是我们需要去关注的. 官方文档 学习开始之前我们先来看一下官方文档是怎么描述的. Vue.extend( options ) 参数: {Object} options 用法: 使用基础 Vue 构造器,创建一个“子类”.参数是一个包含组件选项的对象.

Vue 路由设置router

由于学习的是router1.0的设置方法,但是现在都是支持2.0的,都报错,那些方法没定义,所以只好又来研究一下router2.0. vue-router2.0对路由的设置有了很大的改变,在HTML中将之前的用a标签link path改成了直接用一个router-link标签,但是你在网页审查元素会发现它还是一个a标签,router-view没有改变,在js中也将原本的router.map 直接改成了一个数组然后在new VueRouter时直接将数组用进去,将之前的挂载由router.star

vue基础学习(一)

01-01 vue使用雏形 <div id="box"> {{msg}} </div> <script> window.onload= function(){ var c = new Vue({ el:"#box",//选择器 data:{ 'msg':'welcome vue' } }); } </script> 01-02 v-model一般用于表单元素数据双向绑定 <div id="box&quo

vue基础知识之vue-resource/axios

Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery.vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁.另外,vue-resource还提供了

vue 基础的一些字眼及路由

每个框架都有一些自己的写法和一些字眼 摘自 vue 官网 v-bind 缩写 <!-- 完整语法 --> <a v-bind:href="url">...</a> <!-- 缩写 --> <a :href="url">...</a> v-on 缩写 <!-- 完整语法 --> <a v-on:click="doSomething">...</a&

vue基础特性

在这里我们主要是讲解一些vue实例的属性和一些基础的指令 vue实例属性: 其实和我们之前所学的对象的属性是相似的东西 vue的基础指令: 对于指令,大家可能之前么有接触过相关的概念,其实大家可以这样理解 指令: 可以看做是命令,在vue中我们可以通过指令来完成相关的操作:在vue中以v-开头,后面紧跟具体的操作命令 一些基本的指令: v-once: 只绑定一次 v-bind: 绑定数据 v-model: 绑定模型 v-on: 绑定事件 v-if v-show: 条件渲染方法:使用methods

vue路由请求 router

创建一个Router.js文件 // 路由请求//声明一个常量设置路菜单// import Vue from "vue/types/index";import Vue from 'vue'import VueRouter from 'vue-router'Vue.use(VueRouter)const First={template:'<div>菜单一</div>'}const Second={template:'<div>菜单二</div&g

vue基础(学习官方文档)

基础 介绍 是什么 是一套用于构建用户界面的渐进式框架 声明式渲染 <div id="app">{{ message }}</div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) vue 实例 var vm = new Vue({ // 选项 }) 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的.可复用的组件树组成. 所有的 Vue

vue基础语法

vue基础语法 vue官网链接:https://cn.vuejs.org/  一.Vue简介 Vue.js 是一个用于创建 Web 交互界面的库.它让你通过简单而灵活的 API 创建由数据驱动的 UI 组件. Vue.js是一款轻量级的.以数据驱动构建web界面的前端JS框架,它在架构设计上采用了MVVM(Model-View-ViewModel)模式,其中ViewModel是Vue.js的核心,它是一个Vue的实例,而这个实例又作用域页面上的某个HTML元素. 其核心在于通过数据驱动界面的更新