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 相关文章推荐
从盛大通行证上摘下来的身份证验证js代码
Jan 11 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
javascript与jquery中的this关键字用法实例分析
Dec 24 Javascript
从0开始学Vue
Oct 27 Javascript
微信小程序  生命周期详解
Oct 27 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
js实现登录时记住密码的方法分析
Apr 05 Javascript
使用compose函数优化代码提高可读性及扩展性
Jun 16 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
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
深入理解js promise chain
2016/05/05 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
通过Pandas读取大文件的实例
2018/06/07 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
大学军训自我鉴定
2013/12/15 职场文书
关于旷工的检讨书
2014/02/02 职场文书
土木工程求职信
2014/05/29 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
律师函格式范本
2015/05/27 职场文书
房产遗嘱范本
2015/08/06 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python