有人能解释一下这个require.js示例中涉及的语法吗
Can someone explain the syntax involved in this require.js example?
我希望这个问题不要太宽泛,但在这个特殊的require.js/ESRI示例中发生了很多不熟悉的语法,我希望有人能向我解释其中的一些。
首先,这段代码是有效的(也就是说,它做了我期望它做的事情):它创建了一个基础地图,并添加了一个从地图服务中提取的FeatureLayer。这是ESRI Javascript API页面中一个示例的分条下载版本。这是代码:
var map;
var featureLayer;
require(["esri/map", "dojo/domReady!", "esri/layers/FeatureLayer"], function (Map) {
map = new Map("map", {
basemap: "topo",
center: [-100.195, 39.567], // long, lat
zoom: 4
});
featureLayer = new esri.layers.FeatureLayer(
"http://my-server-url.com/arcgis/rest/services/Projects/MapServer/0",
{
mode: esri.layers.FeatureLayer.MODE_ONDEMAND
}
);
map.addLayer(featureLayer);
});
现在针对特定问题:
这需要([…],函数(args){}语法做什么?我甚至不知道该怎么读。它是对require.js的函数调用吗?方括号里有什么?函数参数是什么?
从其他示例来看,require.js调用中的每个include通常应该有一个函数参数。但在这里,如果我为FeatureLayer添加一个参数,它就不起作用。
在任何示例中,"dojo/domReady!"include似乎都没有相应的参数。这与感叹号有关吗?感叹号是什么意思?
有人能给我指一个有用的require.js参考吗?requirejs.org网站读起来更像是技术规范,而不是用户手册。ESRI网站似乎认为你知道如何使用require。
是的,我一直在谷歌上搜索——问题是谷歌不擅长搜索计算机语法问题,因为它去掉了标点符号,而且"需要javascript语法"之类的词会导致糟糕的(过于宽泛的)搜索词。
-
require([...], function(args) { }
语法表示"加载此模块列表,一旦它们全部加载,就用这些模块的返回值作为参数来调用此函数"。方括号中的是指向脚本文件(减去.js)或使用require.config路径部分映射的模块ID的路径数组。回调函数的参数对应于数组中的路径/模块,但并非所有模块都返回有用的值,正如您在下一个问题中注意到的那样。。。 -
为FeatureLayer添加参数无效,因为无法跳过参数。但请注意,许多模块实际上并没有返回要使用的值。你会在jQuery插件中看到很多这种情况,其中模块的加载只是向jQuery注册插件,但不会向调用方返回值。我不知道ESRI,但从代码片段来看,加载FeatureLayer只是将FeatureLayer添加到ESRI.layers全局对象中。
-
感叹号语法是为插件保留的。通常,感叹号后面会有其他东西,指示插件将加载的资源,例如
text!myTemplate.html
,但在domReady!
的情况下,插件的存在只是为了等待DOM加载后再调用回调函数,所以感叹号后面不需要任何东西。 -
外部资源的推荐列表对StackOverflow来说不太合适,但我发现这里有一个有助于获得基本概念:http://aaronhardy.com/javascript/javascript-architecture-requirejs-dependency-management/
requirejs文档的这一部分描述了感叹号在domReady
上下文中的含义:http://requirejs.org/docs/api.html#pageload
由于DOM就绪是一种常见的应用程序需求,理想情况下可以避免上面API中的嵌套函数。domReady模块还实现了Loader插件API,因此您可以使用Loader插件语法(注意domReady依赖项中的!)来强制require()回调函数等待DOM就绪后再执行。
- 样式属性上的JS语法
- js语法,用于排除字符串
- Angular Js语法错误
- 这个 js 语法是什么意思
- js 语法传递名称元素表单验证
- 在节点中运行 python 脚本.js语法错误
- Asp.net MVC 应用程序在用户登录之前引发 js 语法错误
- JS语法错误 - 铬 - 数组解构
- JS语法问题还是使用三个.js三个.循环中的图像加载器
- JS语法会破坏页面
- 为什么拥有`<脚本>`在字符串文字中导致JS语法错误
- 谷歌分析多域版本5 JS语法
- 允许在PEG.js语法定义中使用引号和unicode
- 怪异的JS语法:函数声明中的数学运算符
- JS语法错误:DOCTYPE html
- JSHint是Node.js语法验证器吗?
- 它是有效的js语法吗?
- XHTML/HTML/JS语法:什么时候使用&
- 这个js语法叫什么?
- 带有方括号的复选框名称属性的JS语法