require.js模块化
require.js简单来说就是把js代码分装模块化了
模块化 模块就是实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。
我拿一个运动框架来解释一下require.js模块化
首先要在html页面中插入require.js插件
<script src="require.js"></script>
之后就是创建js文件来分装js代码
define(function(require,exports,module){
    exports.getStyle=function (obj,name) {
        if(obj.currentStyle){
            return obj.currentStyle[name];
        }else{
            return getComputedStyle(obj,false)[name];
        }
    };
});
这个函数是获取对象属性的函数
exports是当前模块的导出对象,用于导出模块公有方法和属性简单说就是构造一个公用的函数
define(function(require,exports,module){
    var getStyle=require("getStyle").getStyle;
    exports.startMove=function (obj,json,complete){
        clearInterval(obj.timer);
        complete = complete||{};
        complete.dur = complete.dur||1000;
        complete.easing = complete.easing||'ease-out';
        var count=parseInt(complete.dur/30);
        var start = {};
        var dis = {};
        for(name in json){
            start[name]=parseFloat(getStyle(obj,name));
            dis[name] = json[name]-start[name];
        }
        var sum=0;
        obj.timer=setInterval(function(){
            sum++;
            for(name in json){
                var a=sum/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-sum/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(sum==count){
                clearInterval(obj.timer);
                complete.fn && complete.fn();
            }
        },30)
    }
})
这个是运动框架的核心代码
var getStyle=require("getStyle").getStyle;
require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。
define(function(require,exports,module){
    var move=require("startMove").startMove;
    exports.slider=function () {
        var oUl=document.getElementById("pics");
        var aBtn=document.getElementsByTagName("span");
        var aLi=oUl.children;
        oUl.style.width=aLi.length*aLi[0].offsetWidth+"px";
        for(var i=0;i<aBtn.length;i++){
            aBtn[i].index=i;
            aBtn[i].onclick=function(){
                for(var j=0;j<aBtn.length;j++){
                    aBtn[j].className="";
                }
                aBtn[this.index].className="on";
                move(oUl,{left:-this.index*aLi[0].offsetWidth},{easing:"ease-out"});
            }
        }
    }
});
这个是调用运动框架里的函数传入实参来实现效果
var move=require("startMove").startMove;
这个是将之前写过的js文件传入进来,就是一个模块,调用这个模块
require(['tab'],function(mod){
    mod.slider('play');
})
调用之前写的那个js模块然后通过在<script>添加data-main="init"来将写的模块传入进来就能实现效果
<script src="require.js" data-main="init"></script>
说白了require.js的好处就是js文件有依赖性有的时候顺序js文件传入顺序不对的话就会报错他有依赖性require.js将这个问题给解决了让js文件即使传入顺序不对也可以执行
require.js模块化的更多相关文章
- 初步理解require.js模块化编程
		
初步理解require.js模块化编程 一.Javascript模块化编程 目前,通行的Javascript模块规范共有两种:CommonJS和AMD. 1.commonjs 2009年,美国程序员R ...
 - require.js模块化写法
		
模块化 模块就是实现特定功能的一组方法.只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. 下述两种写法等价 exports 对象是当前模块的导出对象,用于导出模块公有方法和属性. ...
 - require.js 模块化
		
什么是模块化? 将若干功能进行封装,以备将来被重复使用. 为什么要前端模块化? 将公共功能进行封装实现复用 灵活解决依赖 解决全局变量污染 如何实现前端模块化? <!DOCTYPE html&g ...
 - require.js 模块化简单理解
		
组件化 基于UI 样式布局 没有过多 js 代码操作的 比如:一个导航栏 一个表单 一个搜索框 一个侧边栏 一个html 等等.... 模块化 基于功能模块 一个可以替换的js部分称之为模块(modu ...
 - require.js模块化管理和加载js(按需加载)简单实例教学
		
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...
 - require.js模块化开发
		
模块化开发的原因: 1.引入的js过多然后在加载的过程中容易出现假死的状态,导致页面会发生白屏 2.变量名的问题 在多人协作开发的时候容易出现变量名的冲突 面向对象 3.引入优先级的问题 模块化开发分 ...
 - javascript模块化编程库require.js的用法
		
随着javascript的兴起,越来越多的公司开始将JS模块化,以增加开发的效率和减少重复编写代码的.更是为了能更加容易的维护日后的代码,因为现在的随着人们对交互效果的越来越强烈的需求,我们的JS代码 ...
 - Support for AMD usage of jwplayer (require js)
		
使用require js 模块化代码时,其中播放器用的是jwplayer7.x 然后载入jwplayer.js后总是报license无效(license已经加入),最后在jwplayer官网论坛里找到 ...
 - Uncaught Error: Script error for "popper.js", needed by: bootstrap - require.js
		
Uncaught Error: Script error for "popper.js", needed by: bootstrap https://requirejs.org/d ...
 
随机推荐
- 纠结了一下午的问题:运行opencv的HoughLinesP函数出错
			
问题描述:检测出的直线数量显然不对,非常巨大.程序运行崩溃. 解决办法:在添加附加依赖项时,Dubug模式只添加opencv_world310d.lib,Release模式下只添加opencv_wor ...
 - [leetcode]224. Basic Calculator
			
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
 - python源码探秘:用户函数的执行过程
			
脚本函数编译后如何执行?脚本编译后是pyc码,pycodeobject对象的串行化.import时是对pyc文件反系列化.函数编译后会生成函数对象,函数对象的TP_call对应的是function_c ...
 - thinkphp5.1 判断是不是post提交
			
if(Request::isPost()){ }else{ } 这样就对了
 - C#调用C++的DLL 尝试写入受保护的内存
			
原因:C#中的声明函数的参数类型与C++的函数的参数类型不一致,在参照C#与C++的参数类型对照表以后,修改相应参数类型,问题解决
 - autolayout原理
			
Autolayout Engine根据视图间的约束关系得到一个线性方程组,求这个线性方程组的解即得到每个视图的位置信息.(x,y,width,height) 参考: https://www.jians ...
 - Python 3.7 安装Twisted
			
win10电脑 64位系统 Python 3.7 版本安装Twisted-18.9.0-cp37-cp37m-win32.whl 会成功 先下载下来,放到 Scripts文件夹下 然后cmd 我的是 ...
 - MVC ScriptBundle自定义排序。
			
今天发现MVC的ScriptBundle @Scripts.Render()后是按照我也不知道顺序显示在页面上的,后果就是jquery.min.js被排在了后面(反正我下面那堆默认jquery.min ...
 - 服务主机superFetch占用磁盘过多
			
有用户升级到Win10系统后,发现系统运行不快,查看任务管理器中正在运行的进程,然后查看到有一个名称为“服务主机:本地系统(网络受限)”的进程的磁盘占用率很高.如果想要解决这个问题,那么不妨参考下面介 ...
 - 微信小程序生成携带参数的小程序码
			
https://blog.csdn.net/qq_28988969/article/details/77969365