Home >Web Front-end >JS Tutorial >Encapsulate a method in js - modularization

Encapsulate a method in js - modularization

零下一度
零下一度Original
2017-06-25 09:20:562937browse

Modularization is to encapsulate a method in each js: use exports to output it, and the method will be output when the next js loads the js using the require method. Then introduce require.js on the main page;

Basic writing method of modularization:

define(function(require,exports,module){


})

require: Load a module, followed by a js file name

exports: output

module: module

Give an example:

The first js file, get.js:

define(function(require,exports,module){
//将封装的这个函数,作为要输出的一个方法:其封装函数是用来返该元素所对应的属性的值。
	exports.getStyle = function (obj,name){
             //if判断考虑的是兼容的问题
		if(obj.currentStyle){
			return obj.currentStyle[name];
		}else{
			return getComputedStyle(obj,false)[name];
		}
	}
})

The second file: StarMove.js

define(function(require,exports,module){
//加载上一个模块
	var get = require('get');
	//在输出一个方法封装的运动框架
	exports.move = function move(obj,json,complete){
                         //为了解决计时器多次调用出现的问题,在开始就清除它
					clearInterval(obj.timer);
					//判断有没有输入这个参数,如果没有进行默认
					var complete = complete || {};
					complete.dur = complete.dur || 1000;
					complete.easing = complete.easing || 'ease-out';
					
					var count = parseInt(complete.dur/30);//总次数
                                        //起始位置
					var start = {};//{width:300,height:300}
					var dis = {};
					//{width:300,height:300}
					for(var name in json){
						start[name] = parseFloat(get.getStyle(obj,name));
					    dis[name] = json[name] - start[name];
					}
				    var n = 0;//当前步数
					obj.timer = setInterval(function(){
						n++;
					for(var name in json){
						var a = n/count;
					switch(complete.easing){
						 case 'linear':
						 var cur = start[name] + a*dis[name];
						 break;
						 case 'ease-in':
						 var cur = start[name] + Math.pow(a,3)*dis[name];
						 break;
						 case 'ease-out':
						 var a = 1-n/count;
						 var cur = start[name] + (1-Math.pow(a,3))*dis[name];
					        break;
					}
							
							
							
					if(name == 'opacity'){
						obj.style[name] = cur;
						obj.style.filter = 'alpha('+cur*100+')';
						}else{
						 obj.style[name] = cur +'px';
						 }
						}
										
					    if(n == count){
					   	   clearInterval(obj.timer)
					       complete.fn && complete.fn();
					     }
					
					},30)
				}
	
	
})

The third js file slide.js

define(function (require,exports,module){var move = require('StartMove');var aBtn = document.getElementById('banner').getElementsByTagName('span');var oUl = document.getElementById('banner').getElementsByTagName('ul')[0];var aLi = oUl.children;                //三张图片所占的宽度,length返回的是字符串中的字符数oUl.style.width = aLi.length*aLi[0].offsetWidth+'px';
                
                exports.slide = function(){for(var i=0;ifd48560443c71e294a4a179466fee901
100db36a723c770d327fc0aef2ce13b1
    93f0f5c25f18dab9d176bd4f6de5d30e
        a80eb7cbb6fff8b0ff70bae37074b813
        b2386ffb911b14667cb8f0f91ea547a76e916e0f7d1e588d4f442bf645aedb2f
        46d5fe1c7617e3914f214aaf043f4ccf
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
            #banner{
                width: 830px;
                height: 440px;
                border: solid 1px;
                margin: 50px auto;
                position: relative;
                overflow: hidden;
            }
            #banner ul{
                position: absolute;
                left: 0;
                top: 0;/*width: 2490px;
                height: 440px;
                overflow: hidden;*/}
            #banner ul li{
                width: 830px;
                height: 440px;float: left;
            }
            #banner p{
                position: absolute;
                left: 50%;
                bottom: 10px;
                margin-left: -30px;
            }
            #banner p span{
                display: block;float: left;
                width: 15px;
                height: 15px;
                margin-right: 6px;
                background: #ccc;
                border-radius: 50%;
            }
            #banner p .on{
                background: red;
            }531ac245ce3e4fe3d50054a55f265927
        2d46cbd0572ad077d226cb3447cd58cf2cacc6d41bbb37262a98f745aa00fbf0
        
    9c3bca370b5104690d9ef395f2c5f8d1
    6c04bd5ca3fcae76e30b72ad730ca86d
        084a736976a20b0b691668e1e3f81543
            ff6d136ddc5fdfeffaf53ff6ee95f185
                25edfb22a4f469ecb59f1190150159c60b0a14ce934bb093897ac4c304620c82bed06894275b65c1ab86501b08a632eb
                25edfb22a4f469ecb59f1190150159c60cf8b26dfaaf112a96a97acfd5eeb92abed06894275b65c1ab86501b08a632eb
                25edfb22a4f469ecb59f1190150159c6f474136c8aa2f8765ab508c32f7a00bbbed06894275b65c1ab86501b08a632eb
            929d1f5ca49e04fdcb27f9465b944689
            e388a4556c0f65e1904146cc1a846bee
                b963d423c868b9b59c8db9aa2fe1951454bdf357c58b8a65c66d7c19c8e4d114
                45a2772a6b6107b401db3c9b82c049c254bdf357c58b8a65c66d7c19c8e4d114
                45a2772a6b6107b401db3c9b82c049c254bdf357c58b8a65c66d7c19c8e4d114
            94b3e26ee717c64999d7867364b1b4a3
        16b28748ea4df4d9c2150843fecfba68
    36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e

will complete a carousel image encapsulated in a modular manner:

Pay attention to how to use require

The above is the detailed content of Encapsulate a method in js - modularization. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn