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.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
Jul 28 Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
Ext JS动态加载JavaScript创建窗体的方法
Jun 23 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 Javascript
r.js来合并压缩css文件的示例
Apr 26 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
js实现移动端图片滑块验证功能
Sep 29 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
Nov 07 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
检测png图片是否完整的php代码
2010/09/06 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Python实现的简单模板引擎功能示例
2017/09/02 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
利用python实现周期财务统计可视化
2019/08/25 Python
详解Python的三种拷贝方式
2020/02/11 Python
Python datetime 如何处理时区信息
2020/09/02 Python
Python脚本调试工具安装过程
2021/01/11 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
化学实验员岗位职责
2013/12/28 职场文书
阿德的梦教学反思
2014/02/06 职场文书
推广活动策划方案
2014/08/23 职场文书
刑事代理授权委托书
2014/09/17 职场文书
三人合伙协议书范本
2014/10/29 职场文书
谢师宴答谢词
2015/01/05 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server