基于jQuery/zepto的单页应用(SPA)搭建方案

这里介绍一个基于jquery或zepto的单页面应用方案,遵循尽可能简单的原则,使大家一目了然,只需配置一个路由,之后完全按照jq日常写法即可完成。可做学习使用,也可修改后用于一些业务逻辑简单的spa项目中;下面是个dome,先看下效果(放在github page下,可能访问比较慢,若无法查看刷新几下既可以了)

项目地址:https://github.com/pangyongsheng/spa

dome链接:http://pangyongsheng.github.io/spa/#home


一、目录结构

  目录结构简洁明了,所有文件放在src下,无需打包,执行npm run dev 命令,进入开发模式(因为路由是基于ajax的,所以查看效果需启个http服务,这里使用了webpack-server启服务)一边编码一边查看效果;index.html为入口文件,router.js为路由配置,css、js下放置公共类库文件,pages下放置各个页面的文件

* |-- src
* |    |--index.html             首页(空页面,通过路由加载其他页面)
* |    |--router.js              路由
* |    |--css                    公共css文件
* |    |   |--libs               第三方ui库
* |    |   |--public             公共样式
* |    |--js                     公共js文件
* |    |   |--libs               第三方js库、插件
* |    |   |--public             公共方法
* |    |--pages                  页面
* |          |--home             home页文件
* |          |   |--home.html    html
* |          |   |--home.js      js
* |          |   |--home.css     css
* |          |
* |          |--list             list页文件
* |          |   |--
* |          |   |--
* |          |   |--
* |          |...                其他页面
* |
* |--packjson                     
* |--webpack.config.js           开发模式配置文件:仅使用webpack-server启服务,不打包    

二、路由

  路由方法(src/js/libs/route.js)是我基于网上找到的一个vipspa(https://github.com/wikieswan/vipspa)的基础上编写的,基本逻辑就是监听url哈希值变化(window.onhashchange),然后根据路由配置(src/router.js)加载不同页面的html、css、js文件,并根据配置或调用参数加载不同的页面切换动画;

1、路由配置

当然这里我们需要做的就是配置router.js,下图是上面dome的路由文件:

基本参数config

参数说明
viewindex.html中展示view视图的div(jquery DOM)。
errorTemplateId可选的错误模板,用来处理加载html模块异常时展示错误内容,
routerrouter里面配置所有的路由信息
defaults用来设置默认路由,即不在路由规则里面的路由将展示 'defaults' 的view

config.router的参数说明

'路由哈希值': {
templateUrl: html路径,
controller: js路径,
styles: css文件路径,
animate: 默认动画方式(为空则无动画,left为左边切入,right为右边切入)
},

以home为例,表示url为http:xxx#home时加载home.html页及其home.csshome.js页面,默认无动画效果;

2、切换页面方式

  •  通过a标签 < a href='#路由参数>
  •  通过js切换 window.location.hash =router.stringify('home');

3、切换动画设置:

按照以上方式切换页面则,动画按照router.js中的配置切换,但是在大多数情况,一个页面从往往会用于不同情况有不同的切入动画,所以可以在切换时候配置参数,加载不同切换动画;

  • < a href='#路由参数?animate=left'>
  • window.location.hash = router.stringify('home',{animate:'left'});

我这里只编写了left和right的动画,src/css/libs/route.css ,可以自己添加

4、不同页面间路由传参:

(1)url 显示传参  

  发送参数    location.hash = router.stringify('home',{name:'Jack'});

  获取参数      var obj = router.parse();

(2)隐式传参

  传送参数:

var msg = {'id': 'home_msg','content': {name: "Jack",age:"18"}
};
router.setMessage(msg);

  获取参数:

var param = router.getMessage('home_msg');
console.log(param);

三、index.html

所有公共文件需在index中引入,下图橙色区域为公共文件


< div id='ui-view'>为放置加载的页面区域
< script type="text/html" id="error" >中是放置错误信息的(可选)

这里我从网上找了个ydui(http://www.ydui.org/docs),最为ui库使用大家可根据不同需求加入自己所需的第三方类库;
zepto(或jquery)是必须的,还有route.js,route.css其他都不是必须的;

这里我们index.html是没有实际内容的,默认加载了home.html到ui-view中,也可自己编写内容放在ui-view外作为所有页面的公共html

四、page页面

以home页为例,page下的html不需引入css及js文件,直接编写html即可,在对应的home.js中写逻辑,home.css写样式即可,一下分别是home.html,home.css,home.js:

 

五、其他

文件可以自己配置打包压缩,可以参考我项目中的webpack.bulid.config.js配置,如果想做app外面套个cordova的壳子;

 

转载于:https://www.cnblogs.com/pangys/p/8648485.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怀旧服开新服务器消息,怀旧服B测已经开启 全新内容爆料汇总

来了来了&#xff0c;终于来了!在经历了昨天一次短暂的乌龙之后&#xff0c;暴雪终于以蓝帖的形式发布了消息&#xff1a;《燃烧的远征&#xff1a;经典怀旧服》BETA测试目前已经正式开启!在Battle.net(战网客户端)上目前已经出现了《Burning Crusade Classic Beta》的客户端字…

用深层神经网络解释大脑的运作

来源&#xff1a;混沌巡洋舰Daniel Yamins&#xff0c;麻省理工学院博士后的一位计算神经科学&#xff0c;有时会为了他的机器视觉项目辛苦工作到午夜以后。他煞费苦心地设计了一个系统&#xff0c;可以识别图片中的物体&#xff0c;而不管其大小、位置和其他特性的变化ーー这是…

foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...

在本文中&#xff0c;我想概述一下标准的 for 循环和 forEach() 方法背后的区别&#xff0c;并对它们各自带来的一些好处进行评论。作为免责声明&#xff0c;请不要把标题当真。我写这篇文章的目的是为了让读者了解缺点&#xff0c;并提供一些关于什么时候可以或不可以使用 for…

git 忽略__pycache___容易被忽略的 Python 命令行参数

上周编写了一个 Python 脚本用于将一堆包含 oracle dmp 文件的 rar 压缩包恢复到 oracle 数据库。由于 oracle dmp 文件恢复速度较慢&#xff0c;通过 nohup commad 2>&1 & 提交命令到后台运行。运行过程中发现通过 print 命令输出内容无法及时地重定向到 nohup.out…

kindeditor和easyui整合出不来

1.首先必备的三个导入的文件 <link rel"stylesheet" href"/day0320_maven_pm/libs/kindeditor/themes/default/default.css"/> <script charset"utf-8" src"/day0320_maven_pm/libs/kindeditor/kindeditor-all-min.js">&l…

虚拟机共享服务器设置,虚拟机共享网络设置教程

vm虚拟机网络共享设置&#xff1a;设置以前首先要确认“虚拟机”中的“本地连接”IP地址为自动获得&#xff01;1.在虚拟机设置里&#xff0c;单击以太网----网络连接类型为---NTA 使用以共享的主机IP地址&#xff01;2.单击编辑---虚拟网络参数&#xff01;3.单击自动桥接。去…

靠数学“拿了”两次诺贝尔奖,彭罗斯从“铺地砖”帮忙发现2011年化学奖的秘密...

来源&#xff1a;量子位诺贝尔奖没有数学奖&#xff0c;但是如果数学足够好的话&#xff0c;可以拿两次诺贝尔奖&#xff1a;帮别人拿一次&#xff0c;自己再拿一次。刚刚获得诺贝尔奖的英国数学家罗杰彭罗斯&#xff08;Roger Penrose&#xff09;就是这样。今年&#xff0c;彭…

PowerDesigner 中SQL文件、数据库表反向生成PDM

1 反向生成PDM 1) 创建一个空的PDM模型&#xff08;选择对应的DBMS&#xff09;&#xff1a; 2) 选择【Database】--【Update Model from Database…】菜单&#xff1a; 1.1 使用SQL文件 1) 在新窗口选择对应【Using script files】--【&#xff…

上传excel文件到服务器,excel怎么上传到云服务器

excel怎么上传到云服务器 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。本地磁盘映射(推荐…

沈南鹏谈科学:第一性原理,“无为”而“有趣”

勇于探索未知&#xff0c;才能发展科学。10月30日-11月1日&#xff0c;第三届世界顶尖科学家论坛在上海举行。今年的世界顶尖科学家论坛是特殊之年的一场世界级科学盛会。横跨四大洲、11个时区、25个国家和地区、100多座城市&#xff0c;此次论坛云集了全球230余位科学家&#…

设置目录_[LaTeX 尝试] titletoc - 为算法目录、定理目录等设置子目录

本文已加入专栏文章目录&#xff0c;归入「进阶使用」文章系列。titletoc 宏包提供了定制目录列表样式的功能&#xff0c;本文主要讨论其中的「创建子目录」功能。标准目录的子目录LaTeX 的典型目录通过 tableofcontents 输出&#xff0c;一个文档里最多使用一次。在实践中&…

postgresql 远程用户_构建Python pandas基于SSH远程MySQL和PostgreSQL的数据分析

背景知识视频教程Python中使用Pandas教程 - 国外课栈​viadean.comPandas数据分析与探索 - 国外课栈​viadean.com如果您无法从外部环境直接访问数据库&#xff0c;则可能需要SSH隧道来查询它。 在这篇文章中&#xff0c;我将向您展示如何通过SSH连接并查询MySQL数据库到Pandas…

达尔文之过:人类真的和其他生物平等吗?

1859年发表的《物种起源》 图片来源&#xff1a;Wikimedia Commons来源&#xff1a;环球科学人类在自然界中的地位&#xff0c;真的如达尔文与赫胥黎认为的那样&#xff0c;“与其他生物平等”吗&#xff1f;这种贬抑人类地位的理想化理念&#xff0c;或许推进了人类对大自然肆…

c++矩阵连乘的动态规划算法并输出_算法面试必修课,动态规划基础题型归纳(三)

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;&#xff0c;是大家都觉得比较难以掌握的算法。为了应付面试&#xff0c;我们经常会背诵一下DP问题的源码&#xff0c;其实&#xff0c;只要理解了思想&#xff0c;掌握基本的模型&#xff0c;然后再来点…

css 学习记录

如何引入css 内联样式 在标签内 添加style style标签 外联式写法 新建CSS文件 通过用link标签引入css样式文件 import url(../);、 css语法 选择器 {属性&#xff1a;值&#xff1b;} CSS属性 float的属性可以使元素左右浮动 设置字体的样式 color属性 用于 设置字体颜色 …

网站服务器睡眠后还能访问吗,远程服务器可以睡眠吗

远程服务器可以睡眠吗 内容精选换一换已成功添加Guardian。如果Guardian处于在线状态&#xff0c;只允许修改Guardian名称。如果Guardian处于连接超时状态&#xff0c;可以输入登录远程服务器的用户名和密码重新部署Guardian。如果Guardian处于在线状态&#xff0c;只允许修改G…

sql server如何输出排序序号_Group by中子查询order by排序失效问题分析

通过sql分组查询数据时&#xff0c;一般通过group by来完成&#xff0c;group by默认取相同的分组列(一列或者多列)中第一个数据。如果想获取sql分组中id最大的记录&#xff0c;我们可能想到的sql如下&#xff08;name列作为分组&#xff09;&#xff1a;select id,name from (…

深入学习Redis(1):Redis内存模型

前言 Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff08;字符串、哈希、列表、集合、有序集合&…

对话“互联网先驱”:星际互联网究竟可不可行?

Vinton Cerf曾在四十年前协助创造了互联网&#xff0c;如今他仍在努力帮助世界各地的人们建立联系。来源丨Quantamagazine作者丨Susan DAgostino编译丨科技行者Vinton Cerf&#xff0c;互联网之父之一&#xff0c;正在建立行星际互联网方面发挥着关键作用。太空探索困难重重&am…

烽火服务器怎么进入bios系统,装机高手告诉你如何进入bios

如何进入bios是很多装机技术人员才会研讨的问题&#xff0c;可是我们生活中依然有时分需求用到bios设置&#xff0c;这时分我们应该如何进入bios呢?说实话不同的电脑、型号都有不同的进入bios方法&#xff0c;但是关于主流的系统品牌来说&#xff0c;如何进入bios的方法大多都…