자바스크립트 파일 동적 로드
자바스크립트 파일을 안정적이고 동적으로 로드하려면 어떻게 해야 할까요? 이는 모듈이나 컴포넌트를 구현하는 데 사용할 수 있으며, 이 컴포넌트는 초기화될 때 필요한 모든 JavaScript 라이브러리 스크립트를 필요에 따라 동적으로 로드합니다.
컴포넌트를 사용하는 클라이언트는 이 컴포넌트를 구현하는 모든 라이브러리 스크립트 파일을 로드할 필요가 없으며(웹 페이지에 스크립트
태그를 수동으로 삽입할 필요도 없음), 기본
컴포넌트 스크립트 파일만 로드하면 됩니다.
**주류 자바스크립트 라이브러리(프로토타입, jQuery 등)는 이 작업을 어떻게 수행하나요? 이러한 도구는 여러 자바스크립트 파일을 재배포 가능한 단일 버전의 스크립트 파일로 병합하나요? 아니면 보조 라이브러리 스크립트의 동적 로딩을 수행하나요?
이 질문에 추가 질문이 있습니다: **동적으로 포함된 자바스크립트 파일이 로드된 후 이벤트를 처리하는 방법이 있나요? 프로토타입에는 문서 전체 이벤트를 위한 document.observe
가 있습니다. 예시:
document.observe("dom:loaded", function() {
// initially hide all containers for tab content
$$('div.tabcontent').invoke('hide');
});
**스크립트 요소에 사용할 수 있는 이벤트는 무엇인가요?
158
20
동적 스크립트입니다 쓸 수 있습니다 태그 (using 프로토타입).
우리는 종종 하는 바로 그 선을 따라 스맥랜드의 lionbridge 코드 진단트리로 write something like:
There is a 필요 없이 콜백 스크립트입니다 종속물과의 투입할 수 있는 현명한 방법입니다. 동기식 통해 AJAX 요청을 할 당기십시오 스크립트입니다 됩니다 및 평가 스크립트입니다 켜짐이 글로벌 수준.
프로토타입 (prototype) 을 사용할 경우 스크리프스트로이드 방법은 다음과 같습니다.
Javascript 에서 필요 없는 가져오기의 포함 /, / 수축됐는데 두 가지 주요 성과를 올릴 수 있는 그리웠댔지:
1 - AJAX call it 를 불러올 수 있습니다 다음 평가.
하지만 이것이 가장 직설적으로 it& # 39 의 Javascript 를 사용하여 안전 때문에 eval 은 제한된 데이터베이스에구성원을 도메인 설정 및 버그 수정 및 문을 여는 hacks.
2 - 추가 스크랩트 태그로 HTML 에서 uirl 스크립트입니다.
가장 좋은 방법은 말해둘꼐요 검색하기를. 외국 서버 및 it& 단계부터 스크립트입니다 불러올 수 있습니다; s # 39 를 사용할 때 청소하십시오 있지만브라우저에 파서에서 평가하십시오 코드입니다. 이 <, 스크립트입니다 /> 올릴 수 있습니다. 머리에 태그번호 또는 웹 페이지의 하단에 바디입니다.
이 솔루션은 모두 함께 볼 수 있습니다.
이제 알면 큰 문제가 없다고 합니다. 그렇게 할 수 있음을 너회가 원격으로요 읽어들입니다 코드입니다. 현대의 모든 웹 브라우저에서 실행 파일을 로드할 수 있기 때문에, 항상 비동기적으로 현재 스크립트입니다 로드하십시오 향상시키십시오 문제는 성능이었죠.
즉, 이러한 요령 직접 사용하는 경우, 당신은 won& t # 39, 새로 로드됨 코드를 사용할 수 있습니다 다음 줄 수 있기 때문에 여전히 그런 후에는 로드되었는지 로드중 됩니다.
E. G: my_lovely_script.js map_layer 미스페로비치
그런 다음 페이지를 다시 로드하십시오 타격 F5. 및 작동하잖아! 혼란스럽다.
그래서 어떻게 해야 할까?
뭐, 해킹 저자는 에 줬잖아 https://partner. 제안됩니다 사용할 수 있습니다. 요약하자면, 콜백 함수를 사용하여 실행할 수 있는 사람들을 위해 빨리 en 이벤트 때, 그는 스크립트입니다 로드되었는지. 넣을 수 있도록 모든 코드 라이브러리를 사용하여 원격입니다 의 콜백 함수. E. G:
그런 후 사용할 수 있는 코드 기록하십시오 스크립트입니다 로드되었는지 람다 함수.
그런 다음 모두실행 다음과 같이 밝혔다:
Ok, I got it. 그러나 it& # 39 의 통증 진저한테 쓸 것.
그렇다면 으로 사용할 수 있도록 하는 것이 있다, 항상 자유 jQuery 프레임워크입니다 돼 한 줄로 못하며창조된 그렇네.
사용 훨씬 더 복잡한 버전 최근 와 jQuery:
나는 모든 면에서 큰 있지만브라우저에 테스트되었습니다 된다고 합니다. IE6/7, 파이어폭스, 사파리, 오페라.
저는 기본적으로 Adam과 동일한 작업을 수행했지만 작업을 완료하기 위해 헤드 태그에 추가하도록 약간의 수정을 가했습니다. 스크립트 파일과 CSS 파일을 모두 처리하는 include 함수(아래 코드)를 간단히 만들었습니다.
이 함수는 스크립트 또는 CSS 파일이 이미 동적으로 로드되지 않았는지 확인합니다. 이 함수는 손으로 코딩한 값을 확인하지 않으며 더 좋은 방법이 있었을 수도 있지만 목적에 부합했습니다.
다른 멋진 대답
https://stackoverflow.com/a/950146/671046
다음은 제가 찾은 코드 예시입니다... 더 좋은 방법이 있으신가요?
Jquery 로드되었는지 경우 이미 콩지름에 $ 그제스크리프트.
이 가지고 있는 경우 다른 답을 우위를 이곳 내장된 콜백 함수 (보장받을 수 있도록 스크립트입니다 로드되었는지 종속 코드 실행 전에) 와 캐싱과는 제어할 수 있습니다.
그냥 [yui 의 3] [1] 에 대해 알게 되고 있는 유용한 기능을 (당시 미리봅니다 릴리스에는 먹어서나 사용 가능). 쉽게 삽입할 수 있으며, yui 의 라이브러리보다는 " external" 종속물과의 수 있습니다. 모듈 (찾고 너희는너희가 없이 너무 코드: [Yui 의 로더입니다] [2].
또한 두 번째 질문에 대한 답을 호출되는 함수는 즉시 개외부 모듈에서는 로드되었는지.
예:
39, ve 솔루션을 사용할 수 있는 또 다른 내가 i& 순. 이 번호요 크레이티베코먼스) 는 함수 호출 이전에 소스 및 정보기술 (it) 이 포함되어 있는지 확인합니다.
여기 이 파일을 찾을 수 있습니다. 니클라우데지제스
>. 더 나은 방법이 투명지에 누구?
저는 그냥 스크립트입니다 추가한 다음 추가 몸에 약간만이라도 간소화하는지 마지막 페이지에서 노드입니다. 이건 어때.
A , 스크립트입니다 스케쳐내 동기화됨 헤드입니다 태그이고, HTML 로 직접 텍스트를 스크립트입니다 로드중 추가해야 합니다 Src 정보기술 (it) 을 추가 < 스크립트입니다 " myscript.js" >,, = 비동기 트리거합니다 로드. 외부 파일을 동시에 스어 로드하기에 스크립트입니다 의 텍스트를 사용합니다. 아래 빠른 샘플 (이는 다른 답을 부품을 사용하여 이 및 기타 게시물):
39 의 ECMA 표준 불렀으매 there& 새로운 제안, 크롬, 사파리 통합되어 동적임 가져오기의 최근.
그건 정말 파선-짧은, 단순하고, 관리할 수 있습니다! ]
이 코드는 기능 추가 기능을 할 수 있는 example 앨리어스가 파선-짧은 대한 전폭적인 지원을 위한 (또는 지정된) 플랫폼.
우리가 사용하는 기법을 사용하여 AJAX 요청을 한 직장에서 받은 후 eval () 는 javascript 파일을 귀의하노라 # 39, re prototype 라이브러리를 사용하여 you& 경우, 그들은 그들의 아이아스콜리퀘스트 호출하십시오 이 기능을 지원합니다.
/*
대한 (var 스크립트입니다 라이브러리) { $ (# 39, & # 39, head&) 지아펜드 (& # 39 < 스크립트입니다 유형 = " text/javascript";;; src = ", & # 39. + dirPath + 라이브러리란 [스크립트입니다] + & # 39, & # 39 /script> < > ";;;;). }
나는 이 모든 것이 오늘 중 손실됩니다 샘플링합니다 불러오시길 필요한 외부 스이스 from my 주 스이스 쉐퍼드도 이런게야:
Here 는 간단한 1 개는 콜백하는 및 IE 지원:
이 질문에 대한 답이 그러니까말이야 내 말 좀 있지만, 이것은 멋지구리해요 기사로 www.html5rocks.com - [심층 양국 모두 이 곳에 로드을 스크립트입니다] [1].
[1]: https://www.html5rocks.com/en/tutorials/speed/script-loading/ # 목차 공격적인 최적화
이와 관련 있는 것이 가장 좋은 방법은 그 기사를 결론을 브라우저 지원, JavaScript 파일을 렌더링 () 은 다음과 같은 방법으로 동적으로 로드할 차단하지 않고 컨텐츠:
39, ve you& 감안할 때, 그런 다음, 이름이 ',' 4 스크립트에만 script1.js script2.js script3.js script4.js 함께 할 적용 비동기 = false :
, 사양명세 이제 밝혔습니다. 함께 다운로드하십시오 실행하십시오 대로 위해 모든 다운로드하십시오.
Firefox <. "비동기" 이 뭔지, 오페라 says:* 3.6tb 안 것은 아니지만, 난 또 무슨 일이 있어도 너무 autoexec. 스크립트에만 통해 JS 순서대로 덧붙였다.
사파리 5.0 says:* 이해할 수 있지만, 이를 통해 "비동기" 설정 "거짓" JS 모를 일이다. 나는 대로, 어떤 스크립트에 실행하십시오 있는모든 오더할.
IE <. "비동기") 이 있는데, 약 10 says:* 전혀 모르고 사용하는 방법을 "모리디국가창레."
다른 모든 says:* 난 친구, 우리거야 이렇게 이 책의.
현재 전체 코드와 IE <. 10 workaround:*
이 같은 일이.
여기서 함수 로드하기에 간단한 예를 JS 파일. 관련 방향점:
끝 - < 스니핏 >;!
이제 간단히 사용한다.