模块化是前端发展的趋势,但是却碰到了这样的问题
<script type="text/javascript" src="js/require.js"></script>
//我在页面的head部分引入了require
//另外还分别有四个JS文件
<script type="text/javascript" src="js/jquery-1.12.1.min.js"></script>
<script type="text/javascript" src="js/unslider.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/index.js"></script>
//依赖关系jq在最顶级,依次为unslider.js,common.js,index.js
unslider是JQ的一个轮播插件,common是一些公用的方法,index是首页用的一些JS
//common.js文件方法如下
/*===回到顶部 start===*/
$('#footer span').click(function(){
$('body').animate({
scrollTop:0
},500)
});
/*===回到顶部 end===*/
/*====下一张,上一张计数==*/
//window.calculateNumber={};
function CalculateNumber(btn,bumberbox,target){
//参数btn参数是按钮 上一张或者下一张的按钮
//参数bumberbox是需要修改的数字标签
//参数target是总共有几张图片
this.btn=btn;
this.bumberbox=bumberbox;
this.target=target;
};
CalculateNumber.prototype={
Calculate:function(){
var noteNum=this.bumberbox.text();
if(this.btn.hasClass('next'))
{
if(parseInt(noteNum)<this.target)
{
this.bumberbox.text(function(){
return parseInt(noteNum)+1
});
}
else{
this.bumberbox.text(1);
}
}
else
{
if(parseInt(noteNum)<=1)
{
this.bumberbox.text(this.target);
}
else{
this.bumberbox.text(function(){
return parseInt(noteNum)-1
});
}
}
}
};
/*===下一张,上一张计数===*/
//index.js如下
(function(){
//绑定了如下方法(还有些类似的,我就不往上贴代码了)
$('#product .product-content li').hover(function(){
$(this).find('.orange').addClass('hide').siblings().removeClass('hide');
},function(){
$(this).find('.black-warp').addClass('hide').siblings().removeClass('hide');
});
$('#joinus .jionus-content>div').hover(function(){
$(this).addClass('cur');
},function(){
$(this).removeClass('cur');
});
})(jQuery);
那么在用require做模块化加载的时候应该怎么做?我又在页面上写了如下代码
require.config({
baseUrl:"./js",
paths:{
"jquery":"jquery-1.12.1.min",
"unslider":"unslider",
"common":"common"
}
});
require(['jquery','unslider','common'],function(){
alert("加载完成")
})
//会弹出对话框 但是页面的效果却完全不会出来
requirejs(['jquery', 'canvas', 'app/sub'],
function ($, canvas, sub) {
//jQuery, canvas and the app/sub module are all
//loaded and can be used here now.
});
//这是require官方上的一段代码,文件conmmon.js 和index.js里面仅仅提供了调用,并没有返回
在这种情况下我应该怎么做?看了些有关conmmonjs的规范,以及requeire官方却不是特别明白。是不是我这样写JS是不能做模块化加载的?我必须要对外有返回值才可以?
如果不对外return 就现在这样的代码应该如何做到模块化加载,看了下require.js定义的模块互相依赖的方法却不是很明白到底是怎么回事
本人小白,希望有大神可以解答。
你既然知道require的返回值这个概念,那应该理解的差不多了。你的require的config文件少了 依赖关系的声明。
你可以先加上这个试试。