이 함수에는 일부 함수 (예 : x.js
)가 들어있는 js 파일이 있습니다.dojo 코드에 javascript 함수를 포함하십시오.
다른 파일에서 x.js
의 함수를 다시 사용해야하므로 동일한 함수를 두 번 쓰지 않습니다. "dojo/request/script"를 시도했지만 작동하지 않습니다.
이러한 기능을 가져 오는 방법에 대한 제안 사항이 있습니까?
이 함수에는 일부 함수 (예 : x.js
)가 들어있는 js 파일이 있습니다.dojo 코드에 javascript 함수를 포함하십시오.
다른 파일에서 x.js
의 함수를 다시 사용해야하므로 동일한 함수를 두 번 쓰지 않습니다. "dojo/request/script"를 시도했지만 작동하지 않습니다.
이러한 기능을 가져 오는 방법에 대한 제안 사항이 있습니까?
이상적으로 파일을 AMD 모듈로 만들어야합니다. 예를 들어, my/AB.js
이 포함되어있는 경우 : 다른 자바 스크립트 파일 (들), 당신이 그것을로드 require
을 사용할 수 있습니다에,
define([], function() {
return {
f1: function(x) { /*..*/ },
f2: function(y) { /*..*/ }
}
});
다음 :
이function f1(x) { /*..*/ }
function f2(y) { /*..*/ }
당신은 그것을 다시 작성해야합니다. 그들은 다른 사람의 기능과 충돌하지 않습니다 즉
require(['my/AB'], function(AB) {
AB.f1('foo');
AB.f2('bar');
});
(my/AB
에는 .js
확장이 없다는 것을 주의는!)
이, AB.js
에서 기능을 전역에 더 이상 이익이있다 . 또한 Dojo 빌드 시스템을 사용하여 나중에 최적화 된 결합 파일을 배치 할 수 있습니다.
그러나 항상 가능한 것은 아닙니다. 아마도 다른 JS 파일은 f1
및 f2
을 전역 범위에두고 있습니다. 그러나 .js
확장자를 추가하여 Dojo의 로더가 포함 된 정규 파일이 아닌 AMD를로드 할 수도 있습니다. 모든 경우에, 당신의 코드를 가정 한 것으로
require(['my/AB.js'], function() {
window.f1('foo');
window.f2('bar');
});
참고 my
라는 디렉토리에 있습니다. 실제 디렉토리가 호출 되더라도 dojoConfig에서 Dojo 로더에 대해 알려줘야합니다.
<script type="text/javascript">
var dojoConfig = {
baseUrl: ".....",
// your other config parameters,
packages: [ 'my', '../folder/relative/to/baseUrl/my' ]
};
</script>
<!-- your inclusion of dojo.js somewhere below this -->
PS : 당신은 실제로 너무 임의의 위치에서 JS 파일을로드 할 수
require(['http://example.com/js/my/AB.js'], function() {
window.f1('foo');
window.f2('bar');
});
완벽. Frode에게 많은 도움을 주셔서 감사합니다. – Tarek