首页 > 语言 > JavaScript > 正文

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

2024-05-06 15:24:45
字体:
来源:转载
供稿:网友

一、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>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选