vue中SPA单页面应用程序详解


Posted in Javascript onNovember 07, 2017

一、SPA的概述

SPA(single page application)单页面应用程序,在一个完成的应用或者站点中,只有一个完整的html页面,这个页面有一个容器,可以把需要加载的代码片段插入到该容器中。

SPA的工作原理:

eg:  http://127.0.0.1/index.html#/start

①根据地址栏中url解析完整的页面:index.html

加载index.html

②根据地址栏中url解析#后的路由地址: start

根据路由地址,去在当前应用的配置中 找该路由地址的配置对象去查找该路由地址 所对应的模板的页面地址

发起异步请求加载该页面地址

③把请求来的数据加载到指定的容器中

二、通过VueRouter来实现一个SPA的基本步骤

①引入对应的vue-router.js(该文件我已经上传到我的文件中)
②指定一个盛放代码片段的容器

<router-view></router-view>

③创建业务所需要的各个组件
④配置路由词典
每一个路由地址的配置对象(要加载哪个页面...)

const myRoutes = [
{path:'/myLogin',component:TestLogin},

{path:'/myRegister',component:TestRegister}

]

const myRouter = new VueRouter({

routes:myRoutes 

})

new Vue({


router:myRouter 

})

⑤测试
在地址栏中 输入对应的不同的路由地址 确认是否能够加载对应的<!doctype html>

<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
  <script src="js/vue.js"></script>
<!-- 引入文件 -->
  <script src="js/vue-router.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
<!--通过router-view指定盛放组件的容器 -->
    <router-view></router-view>
  </div>
  <script>
    var testLogin = Vue.component("login",{
      template:`
        <div>
          <h1>这是我的登录页面</h1>
        </div>
      `
    })
    var testRegister = Vue.component("register",{
      template:`
        <div>
          <h1>这是我的注册页面</h1>
        </div>
      `
    })
    //配置路由词典
    //对象数组
    const  myRoutes =[
    //当路由地址:地址栏中的那个路径是myLogin访问组件
    //组件是作为标签来用的所以不能直接在component后面使用
    //要用返回值 


//path:''指定地址栏为空:默认为Login页面




{path:'',component:testLogin},

      {path:'/myLogin',component:testLogin},
      {path:'/myRegister',component:testRegister}
    ]

    const myRouter = new VueRouter({
      //myRoutes可以直接用上面的数组替换
      routes:myRoutes
    })
    new Vue({
      router:myRouter,
      //或者:
      /*
        router:new VueRouter({
            routes:[
              {path:'/myLogin',component:testLogin},
      {path:'/myRegister',component:testRegister}
            ]
        })
      */
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>
<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>SPA练习</title>
  <script src="js/vue.js"></script>
  <script src="js/vue-router.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <router-view></router-view>
  </div>
  <script>
  /*
    需要大家创建一个SPA,这个SPA有3个组件,分别对应的是collect/detail/order
    功能需求:
    在地址栏中路由地址是:
    /myColllect --> 收藏页组件
    /myDetail --> 详情页组件
    /myOrder --> 订单页组件
  */
  /*
    1、引入js文件
    2、创建三个组件,需要返回值
    3、路由词典配置(三小步)const myRoutes、const myRouter、router:myRouter,
    4、指定一个盛放代码片段的容器
          <router-view></router-view>
  */
    var testCollect = Vue.component("collect",{
      template:`
        <div>
          <h1>这是收藏页</h1>
        </div>
      `
    })
    var testDetail = Vue.component("detail",{
      template:`
        <div>
          <h1>这是详情页</h1>
        </div>
      `
    })
    var testOrder = Vue.component("order",{
      template:`
        <div>
          <h1>这是订单页</h1>
        </div>
      `
    })
    const myRoutes = [
        {path:"",component:testCollect},
        {path:"/myColllect",component:testCollect},
        {path:"/myDetail",component:testDetail},
        {path:"/myOrder",component:testOrder},
    ]
    const myRouter = new VueRouter({
      routes:myRoutes
    })
    new Vue({
      router:myRouter,
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
Oct 30 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
vue 实现cli3.0中使用proxy进行代理转发
Oct 30 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 #Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 #Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 #Javascript
vue 运用mock数据的示例代码
Nov 07 #Javascript
vue环境搭建简单教程
Nov 07 #Javascript
用Webpack构建Vue项目的实践
Nov 07 #Javascript
vue双花括号的使用方法 附练习题
Nov 07 #Javascript
You might like
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
python正则表达式中的括号匹配问题
2014/12/14 Python
Fabric 应用案例
2016/08/28 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python打开使用的方法
2019/09/30 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
大学军训自我鉴定
2013/12/15 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
党课心得体会范文
2014/09/09 职场文书
七一建党节演讲稿
2014/09/11 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
先进教师事迹材料
2014/12/16 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书