什么是';定义';在JavaScript中用于(除了明显的以外)?

什么是';定义';在JavaScript中用于(除了明显的以外)?,javascript,requirejs,requirejs-define,aloha,Javascript,Requirejs,Requirejs Define,Aloha,我到处都在寻找这方面的文档,但我在任何地方都找不到任何东西 我正在使用Aloha,并希望使用他们的边栏原型创建一个新的边栏,我自己附加到其他插件功能 他们的sidebar.js就是从这个开始的,但我一辈子都找不到任何文档来解释它的含义 define( [ 'aloha/core', 'aloha/jquery', 'aloha/selection' ], function (Aloha, jQuery, Selection, Plugin) { 然后在包装器中定义一组函

我到处都在寻找这方面的文档,但我在任何地方都找不到任何东西

我正在使用Aloha,并希望使用他们的边栏原型创建一个新的边栏,我自己附加到其他插件功能

他们的sidebar.js就是从这个开始的,但我一辈子都找不到任何文档来解释它的含义

define( [
    'aloha/core',
    'aloha/jquery',
    'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {
然后在包装器中定义一组函数,所以
vars
和一些
proptotypes
——我可以大致了解这些函数


这是什么意思,或者我在哪里可以找到解释?

如果不看完整的脚本,我不能肯定,但很可能是函数的“”形式。用于定义“模块”:

模块与传统脚本文件的不同之处在于 定义范围良好的对象,以避免污染全局 命名空间。它可以显式地列出它的依赖项,并在 这些依赖项不需要引用全局对象,但是 而是将依赖项作为函数的参数接收 定义模块

define
的“define with dependencies”形式描述如下:

如果模块具有依赖项,则第一个参数应为数组 第二个参数应该是一个定义 功能。函数将被调用以一次性定义模块 已加载依赖项。函数应该返回一个 定义模块


这是用于编写模块的AMD模式,AMD代表异步模块定义,当您需要导入模块时,基本上是异步的,而不是像commonJS这样的东西

define(['module1', 'module2'], function(module1, module2) {
  console.log(module1.sayHi());
});
Define接受一个依赖项数组,一旦所有这些依赖项都以非阻塞方式加载到后台(异步),Define将调用回调函数,回调函数反过来接受参数(在本例中为依赖项)

另外需要注意的是,这些模块中的每一个都需要使用“define”关键字来定义。例如,模块1的定义如下:

define([], function() {

  return {
    sayHi: function() {
      console.log('Hi Hi');
    },
  };
});
这种模块编写方式(AMD)允许您在编写时考虑浏览器兼容性(不需要像nodeJS中那样使用require()),还可以定义许多格式,包括对象、JSON等,而例如commonJS需要将模块作为对象


请记住,AMD也有自己的缺点。希望这对别人有帮助

是的,确实如此-因此它是require.js的一部分,要使用您需要的标记,哪些版本的IE不支持这个…;-)@西蒙·韦弗-不知道你的意思。。。RequireJS由支持。很高兴知道:)我有点开玩笑,但我也认为这是一个比IE6@Simon_Weaver它不是一个Javascript语言构造,而是一个普通的Javascript函数。方括号创建一个数组。或者这就是你所指的结构?