为什么有人使用define(['jquery'...],函数($ ...){...}

时间:2017-03-13 11:52:01

标签: jquery

我正在使用chat-SDK的项目中工作。他们喜欢在标题中声明很多东西......例如jquery ......我以前从未见过jquery这样对待过吗?他们为什么这样做?

1 个答案:

答案 0 :(得分:2)

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

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

  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 lib以正确的依赖顺序为您完成