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 相关文章推荐
jQuery autocomplete插件修改
Apr 17 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
Oct 14 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
JQuery性能优化的几点建议
May 14 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
Bootstrap编写导航栏和登陆框
May 30 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
微信小程序报错:this.setData is not a function的解决办法
Sep 27 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
Vue.js轮播图走马灯代码实例(全)
May 08 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中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
ucenter通信原理分析
2015/01/09 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
如何编写python的daemon程序
2021/01/07 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
实习生自荐信范文
2013/11/13 职场文书
施工资料员的岗位职责
2013/12/22 职场文书
课程改革实施方案
2014/03/16 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
和谐社区口号
2014/06/19 职场文书
班级读书活动总结
2014/06/30 职场文书
交通安全责任书范本
2014/07/24 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
Nginx 匹配方式
2022/05/15 Servers