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 相关文章推荐
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
Node调用Java的示例代码
Sep 20 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
vue.js实现标签页切换效果
Jun 07 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
微信小程序如何使用云开发
May 17 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开发负载均衡指南
2010/07/17 PHP
PHP通用检测函数集合
2011/02/08 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
浅谈PHP的反射API
2017/02/26 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
python实现代理服务功能实例
2013/11/15 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python 面向对象部分知识点小结
2020/03/09 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
《草虫的村落》教学反思
2014/02/16 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年检验科工作总结
2015/04/27 职场文书
python脚本框架webpy模板赋值实现
2021/11/20 Python
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang