在每个页面都只引用同一个js情况下如何根据不同的页面来执行不同的$(function(){})呢

//moduleA.js
      var moduleA = (function(){
        })();
      $().on.("",moduleA.foo);

//moduleB.js
      var moduleB = (function(){
        })();
      $().on.("",moduleB.foo);

最后打包成一个min.js
但是每个页面都有一些$(function(){})要执行,
怎样根据不同的页面来执行不同的$(function(){})呢??

PS.另外感觉模块化与$(function(){})这种东西很冲突,因为这个东西不是一个模块,
以及那些$().on()事件绑定看起来也很不舒服,应该把他们放在那里?内联吗?如何优化?

阅读 5.3k
3 个回答

你把$(function(){})初始化代码放在不同的js中
在不同的页面引入这个js文件
例如
A页面,Ainit.js B页面 Binit.js
同时将不同的模块按页面划分,每个页面min自己需要的module
A页面

<script src="../script/jquery-2.1.3.min.js"></script>
<script src="../script/AModule.js"></script>
<script src="../script/Ainit.js"></script>

B页面

<script src="../script/jquery-2.1.3.min.js"></script>
<script src="../script/AModule.js"></script>
<script src="../script/Ainit.js"></script>

$(function(){})是用来执行初始化工作,执行页面上DOM元素事件绑定使用的
而不是通过它了模块化,$().on()事件绑定要放在和页面DOM相关的模块中

你可以把业务相同的逻辑封装在一个业务模块(LogicModule)中,
和页面DOM相关的逻辑,如事件绑定,封装在DOM模块(ViewModule)中
不同的模块通过第三者,例如自定义事件执行数据通讯,或者再ViewModule中引入LogicModule处理,
但是不要在LogicModule中引入ViewModule

时间不足回答,提供几个关键词,给你学习吧
commonJS:一种js模块化的标准,nodejs在用
gulp:自动化构建工具
borwserify:将多个js打包成一个js的玩意儿

最暴力的方法,通过location.href获得当前url,根据url的pattern决定执行那些代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题