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 ...
随机推荐
- NodeJs 使用 multer 实现文件上传
Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件 注意: Multer 不会处理任何非 multipart/form- ...
- Mysql时间差计算
Mysql如何计算两个时间字段的差值?可用函数 TIMESTAMPDIFF() ----------------------------- TIMESTAMPDIFF函数,有参数设置,可以精确到天(D ...
- 关于css 的兼容设置 ----笔记
在开发网页的时候,由于浏览器的差异,会造成css 代码需要写不同的样式,才能适配大部分浏览器,这很烦,但是又不得不做,我把其中用得比较多的那些,做了一个归纳,放在这里,开发的时候,直接打开这里,复制粘 ...
- anu小程序快速入门
众所周知,微信推出小程序以来,可谓火遍大江南北,就像当前互联网兴起时,大家忙着抢域名与开私人博客一样.小程序之所以这么火,是因为微信拥有庞大的用户量,并且腾讯帮你搞定后台问题及众多功能问题(如分享,支 ...
- cookies,sessionstorage,localstorage的区别?
请描述一下 cookies,sessionStorage 和 localStorage 的区别? sessionStorage 和 localStorage 是HTML5 Web Storage AP ...
- Redis的Errorlog或者启动日志(错误日志)的配置
Errorlog或者是运行日志是任何一个软件的运行中异常诊断必看的文件之一,折腾Redis的过程中以为有默认的错误日志(或启动日志),不过一直没有发现类似的日志文件,在看了默认的配置文件之后,发现Re ...
- css中有三个显示和隐藏的单词比较常见,display visibility 和 overflow我们需要区分开来
display display 设置或检索对象是否及如何显示 display: none 隐藏对象与它相反的是display:block 除了转换为块级元素之外,同时还有显示元素的意思 特点: 隐藏之 ...
- 用spring的@Scheduled实现定时任务
先在spring的配置文件中添加扫描 在applicationContext.xml中添加 <task:annotation-driven/>,我用的是idea有提示功能 选择第一个后会 ...
- flask中缓存cache导入时引发的错误
安装 pip install flask-cache 初始化 from flask_cache import Cache cache = Cache(config={ 'CACHE_TYPE': 's ...
- 【笔记】Python基础五:装饰器
一,什么是装饰器 本质就是函数,功能是为其他函数添加附加功能 原则: 1,不修改被修饰函数的源代码 2,不修改被修饰函数的调用方式 例子: import time def timmer(func): ...