开发者社区 问答 正文

在每个页面都只引用同一个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()事件绑定看起来也很不舒服,应该把他们放在那里?内联吗?如何优化?

展开
收起
杨冬芳 2016-06-06 18:39:42 2827 分享 版权
1 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista

    你把$(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

    2019-07-17 19:29:16
    赞同 展开评论