为什么有人使用define([‘jquery’…],函数($ …){…}

Why does anyone use define(['jquery'…], function($…){…}

本问题已经有最佳答案,请猛点这里访问。

我正在一个项目中工作,我们正在使用聊天软件开发工具包。他们喜欢在标题中声明很多东西…例如jquery…我从没见过jquery这样对待过?他们为什么这么做?


define方法可能取自RequireJS或类似的框架,该文件构成异步模块定义(请参见http://requireJS.org/docs/whyamd.html)。

模块背后的简单思想是,您不需要将所有需要的JS文件添加到页面头,而是只添加RequireJS库和小配置(将模块名称映射到URL)。创建自己的模块时,将使用以下模板:

1
2
3
4
5
  define([required module list], function(resolved module list){
       /* module initialization code */
       return /*value used as parameter to function
                when this module is required by other module */;
    });

它为您解决了多个问题:

  • 不需要有全局变量
  • 模块是按需加载的,如果您正在编写大型应用程序,则模块是在需要时加载的,而不是在文档启动时加载的-这可以缩短Web应用程序的启动时间
  • JS文件下载和初始化是由RequireJS库按照依赖关系的正确顺序为您完成的。