美文网首页
SPA-1~初识单页应用

SPA-1~初识单页应用

作者: stone_yao | 来源:发表于2016-06-16 22:46 被阅读307次

SPA系列是参考Single Page Web Application这本书进行的总结

单页的优势

1.单页应用可以和桌面应用一样渲染---单页应用只需重绘界面上需要变化的部分。相比之下,传统网站的许多用户操作都会重绘整个页面,结果是当浏览器从服务器获取数据的时候,页面会假死并有“闪烁”现象。
2.模块化开发,逻辑清晰,方便更新迭代,方便单元测试。
3.不需要页面之间来回跳转,
4.网页和手机上的后退按钮是可控的

关于单页的编写方式

-HTML文件仅仅就一个shell,所有其它的HTML转换成字符串植入到javacsript代码中
-通过使用jQuery全局自定义事件减少回调函数的使用
-不使用框架(Do you really want an SPA framework?),而是通过jquery和其它相关优秀并专注的插件进行功能补充。
-mvc编写方式


simple example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SPA chapter 1 section 1.2.2</title>
    <style type="text/css">
        body{
            width: 100%;
            height: 100%;
            overflow: hidden;
            background-color: #777;
        }
        #spa{
            position: absolute;
            top: 8px;
            left: 8px;
            bottom: 8px;
            right: 8px;
            border-radius: 8px 8px 0 8px;
            background-color: #fff;
        }
        .spa-slider{
            position: absolute;
            bottom: 0;
            right: 2px;
            width: 300px;
            height: 16px;
            cursor:pointer;
            border-radius: 8px 0 0 0;
            background-color: #f00;
        }
    </style>
</head>
<body>
    <div id="spa">
    
    </div>
</body>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
    //Module /spa/
    //Provides chat slider capability
    //
    var spa=(function($){
        //variable start 
        //在使用之前声明所有的变量。把模块的配置值保存在configMap中,把模块的状态值保存在stateMap中
        //Module scope variables
        var 
          //Set constants
          configMap={
            extended_height : 434,
            extended_title : 'Click to retract',
            retracted_height : 16,
            retracted_title : 'Click to extend',
            template_html : '<div class="spa-slider"><\/div>'
          },
          //Declare all other module scope variable
          $chatSlide,
          toggleSlider,onClickSlider,initModule;
        //variable end

        //DOM control start 
        //将所有的DOM方法聚集在一个区块中
        //DOM method /toggleSlider/
        // alternates slider height
        //
        toggleSlider = function(){
            var 
                 slider_height = $chatSlider.height();

            //extend slider if  fully retracted
            if(slider_height === configMap.retracted_height){
                $chatSlider
                    .animate({height:configMap.extended_height})    
                    .attr('title',configMap.extended_title);
                return true;
            }
            //restract slider if fully extended 
            else if( slider_height === configMap.extended_height ){
                $chatSlider
                 .animate({ height : configMap.retracted_height })
                    .attr('title',configMap.retracted_title);
                return true;
            }
        }
        //把所有的事情处理程序聚集在一个区块中。保持小而专注的处理程序是很好的做法。它们应该调用其它方法来更新显示或者修改业务逻辑。
        // Event handler /onClickSlider/
        // receives click event and calls toggleSlider
        //
        onClickSlider=function(event){
            toggleSlider();
            return false;
        }
        //把所有的公开方法聚集在一个区块中
        //Public method /initModule/
        //sets initial state and provides feature
        //
        initModule=function($container){
            //render HTML
            $container.html(configMap.template_html);

            $chatSlider=$container.find('.spa-slider');
            //initialize slider height and title
            //bind the user click event to the event handler
            $chatSlider
                .attr('attr',configMap.retracted_title)
                .click(onClickSlider);

            return;

        };

        //通过返回spa名字空间中的对象,导出公开方法,我们只导出了一个方法:initModule
        return {initModule:initModule};
    }(jQuery));
    //start spa once DOM is ready
    //
    jQuery(document).ready(function(){
        spa.initModule(jQuery('#spa'));
    });
</script>
</html>

相关文章

  • SPA-1~初识单页应用

    SPA系列是参考Single Page Web Application这本书进行的总结 单页的优势 1.单页应用可...

  • 单页应用

    什么是单页应用 单页Web应用,就是只有一张Web页面的应用。 单页应用的优势 单页应用的缺点 开发框架 代码隔离...

  • 第一章 React 介绍

    本章内容 多页应用开发模式的缺点 单页应用开发模式的优点 单页应用开发模式的主要问题 React 如何解决单页应用...

  • vue-router考察问题

    单页应用和多页应用的区别 多页应用MPA单页应用SPA应用组成由多个完成页面构成一个外部显示的页面 + 多个局部页...

  • 单页应用

    单页应用是什么? 单页应用又称 SPA(Single Page Application)指的是使用单个 HTML ...

  • 单页App开发(重要的JS语法)

    一、单页应用历史 什么是单页应用? 所谓单页应用,简称SPA,指的是在一个页面上集成多种功能,甚至整个系统就只有一...

  • 前端工程化

    场景 前后端完全分离前后端分离还看是单则应用还是多页应用单页应用用webpack,比较强势。 多页应用用webpa...

  • 三十分钟学会使用vue-router搭建单页应用(SPA)

    一、什么是单页应用 单页web应用(single page web application,SPA),就是只有一张...

  • cnode社区

    面试要点:(单页应用重点在vue-router) 单页应用,页面只有一个 APP组件; vue-router实现页...

  • Vue前端路由的单页应用vue-router

    什么是单页应用? 单页应用(single page web application,SPA),是在一个页面完成所有...

网友评论

      本文标题:SPA-1~初识单页应用

      本文链接:https://www.haomeiwen.com/subject/yszmdttx.html