requireJS基础使用

index.html

<body class="requireBODY" id="body"><div id="vuebox">{{ a }}<script src="require.js" data-main='main.js'></script>
//引入requirejs,配置data-mian属性,作为程序主入口

main.js

require.config({    
	paths: {
		"jquery": "../../content/jquery-2.1.1.min",
		//"moudleA": "a",//(1-1)
		"moudleB": "b",
		"moudleC":"c",
		"vue":"vue.min"
	},
	shim: {
      'jquery.window':  ['jquery'],//加载非AMD规范的模块定义依赖模块,jquery全屏幕滚动插件
		'vue':{'exports':'vue'},
		//'a':{deps:[], exports:'fna'},//exports定义导出全局函数(1-2)
    }
});

//加载非AMD规范的模块
//config(1-1)  paths: {"moudleA": "a"}
require(['moudleA'],function(Amodule){
	//Amodule()//Amodule undefined is not a function 该模块未遵循AMD规范,所以并没有回传参数模块;
	fna()//但是a.js脚本已经引入,脚本内的 fna 函数已经引入全局,所以可以直接调用 fna 函数
})
//config(1-2) shim{'a':{deps:[], exports:'fna'}}//exports定义导出全局函数
require(["a"],function(Amodule){
	Amodule()//shim中定义的模块,将全局变量回传到回调函数中;实际这个变量引入后就在全局,与上种方法的区别是该方法导入模块的全局变量值 fna 作为参数传入了该回调函数
})



require(['moudleB'],function(Bmodule){
	Bmodule.moudleBfn()
	alert(Bmodule.moudleBmath)
	Bmodule.moudleBrequireC()
})

require(['jquery','jquery.window'],function(){
	$(document).ready(function(){
        var $windows = $('.window');
        $windows.windows({
            snapping: true,
            snapSpeed: 500,
            snapInterval: 1100,
            onScroll: function(s){},
            onSnapComplete: function($el){},
            onWindowEnter: function($el){}
        });
    });
})

require(['vue'],function(Vue){
	var vue = new Vue({
		'el':'#vuebox',
		data:{
			a:'aaaaaaaa'
		}
	})
})

  

 

a.js

function fna(){
  alert('moduleA')
}

b.js(两种定义模块方法)

b-1:
define(["require","exports","module",'jquery','moudleC'],function(e,t,m,moduleJQ,moduleC){

	var b1 = function (){
		alert($('body').attr('class'))
	}
	
	var b2 = 1000;	
	
	var requireC = e('moudleC').c//=moduleC.c :导入c模块,引用c模块的方法
	
	t.moudleBfn = b1;//定义导出模块,也可以直接return
	t.moudleBmath = b2;
	t.moudleBrequireC = requireC;
	
//	return {
//		"moudleBfn":b1,
//		"moudleBmath":b2,
//		"moudleBrequireC":requireC
//	};
})
b-2
define(function(require,exports,module){ 
  //这种方式并不像seajs一样按需加载,实际上也是前置加载 
  var $ = require('jquery') 
    var b1 = function (){ alert($('body').attr('class')) } 
    var b2 = 1000; //return;
 //在引用c模块前断点发现c模块还是引入了,因为RequireJS 内部通过 Function.prototype.toString() ,然后使用正则匹配所有的require 方法,将其转化为        define(['./mod1',./mod2']function(mod1,mod2);
 //这也就是为什么这种方式定义模块参数名只能是require,从而使用打包工具压缩代码时出现问题。
    var requireC = require('moudleC').c //导入c模块,引用c模块的方法 
    exports.moudleBfn = b1;//定义导出模块,也可以直接return 
    exports.moudleBmath = b2;
    exports.moudleBrequireC = requireC; 
})    

  

  

c.js

define(function(){
	
  return {
    c:function(){
      return alert('moduleC')
    }
  };
})

  

  

转载于:https://www.cnblogs.com/xiaomingSun/p/7048436.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值