Kla*_*lay 16 javascript requirejs
我希望这个问题不是太广泛,但在这个特殊的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);
});
Run Code Online (Sandbox Code Playgroud)
现在针对特定问题:
这是什么要求([...],功能(参数){}语法干什么?我甚至不知道如何读这一点.它是一个函数调用require.js是什么?在方括号中去?什么是函数参数?
从其他示例来看,看起来通常在require.js调用中每个include应该有一个函数参数.但是在这里,如果我为FeatureLayer添加一个参数,它就不起作用了.
"dojo/domReady!" include似乎在任何示例中都没有相应的参数.这与感叹号有关吗?感叹号是什么意思?
任何人都可以指向一个有用的require.js参考?requirejs.org网站更像是技术规范,而不是用户手册.ESRI网站似乎假设您知道如何使用require.
是的,我一直在谷歌搜索 - 问题是谷歌不是很擅长搜索计算机语法问题,因为它删除了标点符号,并且因为"需要javascript语法"等类似于蹩脚(过度广泛)的搜索术语.
exp*_*nit 28
该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/