前端_单页面开发_web前端框架

前端_单页面开发_web前端框架   web移动端单页面开发,可适用于web端直接开发。本例需要使用require.js帮助实现。   单页面开发个人理解:对一个项目里面的所有html文件都拥有同一个url,通过hash值的改变来促发页面的跳转(hash为url后面的内容,如下面的#red和#green就是hash),如两个页面的url分别为(http://localhost:8000/views/index.htm…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

      web移动端单页面开发,可适用于web端直接开发。本例需要使用require.js帮助实现。

      单页面开发个人理解:对一个项目里面的所有html文件都拥有同一个url,通过hash值的改变来促发页面的跳转(hash为url后面的内容,如下面的#red和#green就是hash),如两个页面的url分别为(http://localhost:8000/views/index.html#red,http://localhost:8000/views/index.html#green),使用当页面的好处在于对于小型的项目来说异步的促发可以加快页面的跳转速度,同时对于浏览器也可以减轻一定的负担,当你加载到某页面的时候,浏览器才会去加载对应的css文件和js文件。

单页面的基本实现方法

1、写好对应的html,css,js文件,注意匹配的html和css,js之间最好用相同的名称操作(如:red.html ,red.css ,red.js),在本例中主要用到自己写的index,red,green,blue四个html文件和对应的css,js文件,需要配置文件require.js文件。

(1)、在html文件中去掉body之外的全部内容,仅保留body直接自己写的模块(避免多次加载头部信息),如red.html中代码如下:

<div class=”red”>

</div>

(2)、js代码需要放在被定义为指定的模块使用,使用return{}来加载和初始化自己的js内容,自己原先的js内容需要放在init的function(){}中,(注意对于自己定义的函数需要放在define的外部才会被找到),如red.js中代码如下:

require.config(requireConfig);
//定义个模块,其他的地方可以引入
define([‘red’],function(){

var red = {

init:function(){   //之间为自己写的js内容

alert(‘red’);


}


};


return {


    init: red.init


}

})

(3)、css文件不变,但是注意在每一个css文件中最好不要有重名的class,可能会被覆盖自己原来的效果。这里:red.css代码如下:

.red{

background-color: red;
width: 600px;
height: 500px;

}

(4)、按照以上的过程,将red,green,blue的html,css ,js文件写好。

2、配置require.js文件,本例使用的require.js配置如下:

var CONTEXTPATH = “http://localhost:8000”;
var requireConfig = { 
    baseUrl: CONTEXTPATH + “/public/scripts/”, 
    paths: {

        zepto:’zepto.min’,             //将zepto.min.js引入到require中
        green:’history/green’,      //将history中的red.js引入到require中
        red:’history/red’,
        blue:’history/blue’,
    },
    map:{

        ‘*’:{

            ‘css’:’css.min’,              //配置可以引入css文件
            ‘text’:’text.min’            //配置可以引入文本文件
        }
    },
    shim: {

        ‘green’:[‘css!../styles/green.css’],             //加载green.js的是偶引入对应的green.css文件      
        ‘red’:[‘css!../styles/red.css’],
        ‘blue’:[‘css!../styles/blue.css’]

    }

3、编写主页面index的html,css,js文件

(1)、主页面html中,正常写,需要配置一个用于装在其他页面的容器,加载配置好的require.js文件。本例的index.html代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset=”utf-8″>
    <meta name=”viewport” content=”maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0″ />
    <link rel=”stylesheet” type=”text/css” href=”../public/styles/base.css”>
    <link rel=”stylesheet” type=”text/css” href=”../public/font/iconfont.css”>
    <link rel=”stylesheet” type=”text/css” href=”../public/styles/page.css”>
</head>
<body>
    <div class=”bnt-all”>
        <button id=”red”>我是红色</button>
        <button id=”blue”>我是蓝色</button>
        <button id=”green”>我是绿色</button>
    </div>
    <div id=”load”>
    </div>
</body>
<script type=”text/javascript” src=”../public/scripts/require-2.1.11.js” data-main=”../public/scripts/page.js”></script> 

</html>

(2)、css文件正常写

(3)、在js中

require.config(requireConfig);
require([‘zepto’], function(zepto) {                 //引入在require.js中配置的zepto对应文件
    var history2 = {

        getHtml: function(color) {                  //本函数通过传入的参数,引入对应的html,css和js文件
            //加载html,css,js
            var htmlUrl = ‘text!/views/’ + color + ‘.html’;
            require([htmlUrl, color], function(html,script) {

                $(‘#load’).html(html);
                // $(‘#’ + color).addClass(‘active’).sblings().removeClass(‘active’);
                script.init();           //调用对应js的初始化
            }); 
        },
        init: function() {

            //默认加载绿色
            history.pushState({ color: ‘green’ }, null, ‘#green’);            //设置初始化加载green.html,green.css和green.js文件
            this.getHtml(‘green’);
            $(‘button’).on(‘click’, function() {

            // debugger;
                var id = $(this).attr(‘id’);     
                history.pushState({ color: id }, null, ‘#’ + id);        
                history2.getHtml(id);
            })
            $(window).on(“popstate”,function(e){                //当hash值改变,或者前进后退时候促发
                 var id=window.location.hash.substring(1);
                // history.replaceState({color:id},null,’#’+id);
                 history2.getHtml(id);
           });
        }
    };
    $(function() {

    history2.init();
    });

})

4、目录结构

        在本例中,html中index和red,green,blue同目录,js放在history的文件夹下。

5、效果截图

前端_单页面开发_web前端框架

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182307.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • yuicompressor压缩js的ant脚本

    yuicompressor压缩js的ant脚本&lt;?xmlversion="1.0"encoding="UTF-8"?&gt; &lt;!–对指定目录下的所有js进行压缩,放入指定位置–&gt; &lt;projectname="jsbuild"default="build"&gt;    &lt;propertyname="web.dir"location=&quo

    2022年7月18日
  • 点击超链接不跳转的方式[通俗易懂]

    点击超链接不跳转的方式

    2022年1月19日
  • GBDT算法总结

    GBDT算法总结前向分布算法负梯度拟合在上一节中,我们介绍了GBDT的基本思路,但是没有解决损失函数拟合方法的问题。针对这个问题,大牛Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。第t轮的第i个样本的损失函数的负梯度表示为    利用(xi,rti)(i=1…

    2022年10月12日
  • ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误

    ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误说了你们可能不信,装ModelSim软件,今天整整装了一天才弄好,一直出现下面的错误。下面详细说一下解决这个问题的办法:方法一:不正面解决这个问题在FPGA做仿真的时候,可以不需要单独破解版的ModelSim,直接使用Quartus软件自带的ModelSim-Altrea安装上面两个软件,然后在仿真的时候,路径设置对就可以这个时候,你安装的ModelSim在桌面的图标你可以发现是叫ModelSim-Altrea方法二:正面解决这个问题如果你跟我一样,非要安装独立的版本,当你遇到这个问题的

    2022年5月12日
  • 《哈佛大学公开课:幸福课》 学习笔记(1)

    《哈佛大学公开课:幸福课》 学习笔记(1)视频链接:http://v.163.com/special/sp/positivepsychology.html当初《幸福课》在网易公开课很火,当然现在也很火。但是由于对门户热门内容的成见,再加上一个江湖骗子式的课程名字,我还以为是又一个简单空洞的心灵鸡汤。但是今天看完了第一节课,事实告诉我,真是要相信群众的眼睛呀,而且随便怀疑哈佛出品也未免太过自信。70+分钟的时间内,没有多少废话,反复

    2022年7月18日
  • 下列变量名不符合python命名规范的是_下列选项中不符合Python语言变量命名规则的是…

    下列变量名不符合python命名规范的是_下列选项中不符合Python语言变量命名规则的是…【单选题】下列Python保留字中,不用于表示分支结构的是【单选题】以下程序的输出结果是:j=”foriin”12345″:j+=i+’,’print(j)【单选题】在读写文件之前,必须通过哪种方法创建文件对象【单选题】以下程序的输出结果是:s=”ls=[1,2,3,4]forlinls:s+=str(l)print(s)【单选题】Python…

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号