2013-08-29 3 views
14

이 질문이 너무 광범위하지 않기를 바란다. 그러나이 특별한 require.js/ESRI 예에서 생소한 많은 구문이 있으며, 누군가 내가 이것에 대해 설명 할 수 있기를 바란다.누군가이 require.js 예제와 관련된 구문을 설명 할 수 있습니까?

먼저이 코드는 작동합니다 (즉, 예상 한대로 작동합니다). 기본지도를 만들고지도 서비스에서 가져온 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); 

    }); 

: 여기에 코드입니까?이 ([...], 기능 (인수) {} 구문 하고 필요로 무엇

  1. 난 몰라 심지어 이것을 읽는 법도 알고 있습니다 require.js에 대한 함수 호출입니까? 대괄호 안에 무엇이 있습니까? 함수 인수는 무엇입니까?

  2. 다른 예제에서는 일반적으로 하나의 함수 인수가 있어야합니다 require.js 호출에 포함 시키십시오. 여기, FeatureLayer에 대한 인수를 추가하면 작동하지 않습니다.

  3. "dojo/domReady!" include는 어떤 예에서도 상응하는 논증을 가지고있는 것처럼 보이지 않습니다. 이것은 느낌표와 관련이 있습니까? 느낌표는 무엇을 의미합니까?

  4. 누구나 USEFUL의 require.js 참조를 가르쳐 줄 수 있습니까? requirejs.org 웹 사이트는 사용자 설명서보다 기술 사양과 유사합니다. ESRI 웹 사이트에서는 require를 사용하는 방법을 알고 있다고 가정합니다.

그리고 그래, 나는 인터넷 검색 한 - (문제가 구글은 구두점 스트립 때문에 컴퓨터 구문 질문에 대한 검색에 큰 아니며, 때문에하는 것은 및 시시한의 같은 메이크업 "자바 스크립트 구문을 필요로"이다 광범위) 검색어.

+0

@SLaks : "that"이 (가) 귀하의 코멘트에서 말하는 것은 무엇입니까? – Klay

+0

@Ricardo : 아마도 질문 4 번을 놓쳤을 것입니다. 여기서 문서를 읽으려고했는데 도움이되지 않는다는 것을 알았습니다. 그래서 다른 참고 자료를 요청하고 있습니다. – Klay

+0

@Klay :'[...]'. – SLaks

답변

25
  1. require([...], function(args) { } 구문은 "모듈의 목록을로드, 그들은 모두로드하고 나면, 인자로 그 모듈의 반환 값이 함수를 호출"된다. 대괄호 안에있는 것은 스크립트 파일 (.js 빼기) 또는 require.config paths section을 사용하여 매핑 된 모듈 ID의 경로 배열입니다. 콜백 함수에 대한 인수는 배열의 경로/모듈에 해당하지만 다음 질문에서 알 수 있듯이 모든 모듈이 유용한 값을 반환하지는 않습니다 ...

  2. FeatureLayer에 대한 인수 추가가 작동하지 않기 때문에 당신은 논쟁을 건너 뛸 수 없습니다. 그러나 많은 모듈이 실제로 의도 된 값을 반환하지 않는다는 점에 유의하십시오. jQuery 플러그인으로 모듈의 로딩이 간단하게 jQuery로 플러그인을 등록하지만 호출자에게 값을 리턴하지는 않는다. ESRI는 모르지만 코드 조각에서 FeatureLayer를로드하는 것처럼 보이면 단순히 FeatureLayer를 esri.layers 전역 객체에 추가합니다.

  3. 느낌표 구문은 plugins에 예약되어 있습니다. 일반적으로 플러그인이로드 할 리소스를 나타내는 느낌표 뒤에 다른 것이 있습니다 (예 : text!myTemplate.html이지만, domReady!의 경우 플러그인은 콜백 함수를 호출하기 전에 DOM이로드 될 때까지 기다릴 수있는 방법으로 존재하므로 느낌표 뒤에 아무 것도 올 필요가 없습니다.외부 자원의

  4. 추천 목록 오프 주제에 StackOverflow에 대한,하지만 여기에 내가 기본 개념을 얻는 데 도움이되었다고 하나 : http://aaronhardy.com/javascript/javascript-architecture-requirejs-dependency-management/

+2

완벽! 고맙습니다. 그렇게 철저히 대답 할 시간을 내 주셔서 감사합니다. – Klay

0

requirejs의 문서의이 섹션은 무엇 느낌표 방법을 설명합니다 domReady의 맥락에서 : http://requirejs.org/docs/api.html#pageload

DOM 준비가 이상적으로 API의 중첩 된 기능 이상 피할 수있는 일반적인 응용 프로그램 필요, 때문에. domReady 모듈은 Loader Plugin API도 구현하므로 로더 플러그인 구문 (domReady 종속성에주의!)을 사용하여 require() 콜백 함수가 DOM이 실행되기 전에 준비 될 때까지 대기하도록 할 수 있습니다.

관련 문제