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 相关文章推荐
javascript 面向对象编程 function也是类
Sep 17 Javascript
jQuery表格行换色的三种实现方法
Jun 27 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
Sep 05 Javascript
jquery按回车提交数据的代码示例
Nov 05 Javascript
AngularJS利用Controller完成URL跳转
Aug 09 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
使用原生js编写一个简单的框选功能方法
May 13 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
浅谈layui里的上传控件问题
Sep 26 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冒泡排序算法的深入理解
2013/06/09 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP内置加密函数详解
2016/11/20 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
nodejs之请求路由概述
2014/07/05 NodeJs
js获取json元素数量的方法
2015/01/27 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
JS实现的A*寻路算法详解
2018/12/14 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python Socket传输文件示例
2017/01/16 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
浅谈python写入大量文件的问题
2018/11/09 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
python 字符串追加实例
2019/07/20 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
2014年化妆品销售工作总结
2014/12/01 职场文书
五四青年节活动总结
2015/02/10 职场文书
电工实训心得体会
2016/01/14 职场文书
求职自我评价参考范文
2019/05/16 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书