arcgis api for javascript学习(2016.10.18)

自定义模块的定义和使用:

  dojo的自定义模块使用define。

  dojo的js模块就是一个js文件,文件中使用如下形式定义:

  

define(
    [
    "dojo/_base/declare",
    "dojo/_base/lang",
    "esri/request"
    ],
    function(declare,lang,esriRequest){
        return declare(null,{
            constructor:function(options){
                this.distance=options.distance||'20mi';
            },
            func:function(){
                return this.distance;
            }
        });
    }
);

  格式和require类似,第一个参数表示会用到的模块;第二个参数是一个函数,函数参数和第一个参数对应,函数体中进行相关代码编写。

  define定义模块,但是模块只是一个组织概念,要使用自定义的函数、变量,我们需要一个结构将这些内容打包并返回。我们使用declare定义这种结构(或者叫类),然后在define第二个函数参数的返回值中返回,然后我们在外面的模块就可以使用这里定义的函数和变量了。

  

模块的使用:

  模块定义好,放在项目的一个文件夹中,但是如何使用require进行访问呢?这需要在dojo初始化配置参数中,对应路径:

  

var dojoConfig={paths:{extras:location.pathname.replace(//[^/]+$/,'')+"/scripts/dtest"}}

  在引入dojo,或者init之前定义dojoConfig变量,格式如上:extras是自定义的虚拟路径,用于在requre引入的时候使用。后面则是自定义的js模块文件所在的url。

  然后就是引入:

  

    require([
      "extras/tmodule",
      "dijit/layout/BorderContainer", 
      "dijit/layout/ContentPane", 
      "dijit/TitlePane",
      "dojo/domReady!"
    ], function(mtest) {
        alert(mtest);
        alert(typeof mtest);
      var b = mtest({}).c2({});
      alert(b.getm());
      alert(s.getMore());
    });
原文地址:https://www.cnblogs.com/z964166725/p/5972153.html