문제

이것은 나의 첫 번째 도장 구축이므로 이 문제에 대한 나의 무지를 이해해 주시기 바랍니다.

방금 다음(매우 단순화된) 프로필을 사용하여 Dojo 빌드 시스템에서 사용자 정의 빌드를 만들었습니다.

dependencies = {
stripConsole: "normal",

layers: [       
    {
        name: "../dijits/cx/dijitsCXbuild.js",
        copyrightFile: "CopyrightCX.txt",
        dependencies: [
            "dojo.parser",
            "dijit.dijit",               
            "dijit._Widget",
            "dijit._Templated",
            "dijit._Container",
            "dojo.i18n",
            "dojo.NodeList-fx",
            "dojox.grid.cells",
            "dojox.grid.DataGrid",
            "dojox.layout.GridContainer",
            "dijit.TitlePane",
            "dijits.cx.TaskPanel",
            "dijits.cx.Identify"
        ]
    }
],

prefixes: [        
    [ "dijit", "../dijit" ],
    [ "dojox", "../dojox" ],
    [ "dijits.cx", "../dijits/cx" ]
]

}

...글쎄, 모든 것이 잘 진행되고 내가 요청한 모든 것이 포함된 나만의 패키지를 받게 됩니다.그런 다음 내 webapp에 다음을 포함합니다.

<script type="text/javascript">
  djConfig = {
    isDebug:false,
    parseOnLoad:true,
    locale:getLocale()
  };
</script>

<script type="text/javascript" src="Lib/cxdojo/dojo/dojo.js"></script>
<script type="text/javascript" src="Lib/cxdojo/dijits/cx/dijitsCXbuild.js"></script>

...코드가 첫 번째 dijit을 인스턴스화해야 하고 악명 높은 오류로 인해 실패할 때까지는 괜찮아 보입니다."dijits.cx.TaskPanel은 생성자가 아닙니다."

"dojo.require()"를 포함하여 이 문제를 제거할 수 있지만 이는 내 사용자 정의 빌드를 생성하여 제거할 것입니다.내가 무엇을 잘못하고 있는지, 'dojo.require()' 줄을 피하기 위해 무엇을 해야 하는지에 대한 아이디어...고마워요.

도움이 되었습니까?

해결책

당신은 여전히 dojo.require 귀하의 파일에.압축된 빌드는 단지 dojo.require 모든 파일을 하나의 파일로 연결하고 축소하여 필요한 파일에 대해 GET 요청을 수행하지 않아도 됩니다.이렇게 하면 페이지 로드 주기가 상당히 절약됩니다(지금까지 보셨겠지만).

정말로 많은 것을 없애고 싶다면 dojo.require (저는 페이지에 사용된 내용을 보는 것을 좋아하기 때문에 별로 좋아하지 않습니다.) 다음과 같이 할 수 있습니다.

dojo.provide('my.main');
dojo.require('dijit.cx.TaskPane');
... all the other dojo.require statements ...

그런 다음 이것을 dojo와 평행한 디렉터리의 파일에 넣습니다.

  Lib/cxdojo/my/main.js
  Lib/cxdojo/dojo/dojo.js
  .. etc ...

그런 다음 종속성을 다음과 같이 변경하십시오.

           dependencies: [
                    "my.main"
            ]

그런 다음 파일에 스크립트 태그를 사용하여 포함할 수 있습니다.

 <script type="text/javascript" src="Lib/cxdojo/my/main.js"></script>

그런 다음 하나만 필요합니다.

  dojo.require('my.main');

이 접근 방식의 또 다른 장점은 애플리케이션에 모듈을 추가할 때 하나의 파일(/my/main.js)만 변경하면 된다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top