프로젝트에서 Webpack 2로 Angular 4를 사용 중입니다.각도 4, Webpack 2, 동적으로 스크립트로드
ngOnInit 중에 일부 스크립트를로드하려고 시도 중 일부 문제가 발생했습니다.
문제 1)
나는이 내 ngOnInit 내에서 다음 코드 : 나는이 작업을 수행 할 때
System.import(`../../node_modules/jquery/dist/jquery.js`);
System.import(`../../node_modules/jquery-validation/dist/jquery.validate.js`);
System.import(`../../node_modules/jquery-validation/dist/additional-methods.js`);
System.import(`assets/js/regular-expressions.js`);
는 모든 자산로드 표시하지만 난의 오류 얻을 :
를Uncaught (in promise): ReferenceError: $ is not defined
$를 jQuery 파일에 정의해야합니다. regular-expressions.js 파일이 jQuery가로드되었는지 인식하지 못하는 이유는 무엇입니까?
문제 2)
는 궁극적으로, 나는) 동적으로로드 그들은 모든 페이지에 필요하지 않은로 (스크립트를로드해야합니다. 행동에 차이가 왜 이해하고 있지 않다
let script = 'assets/js/' + scripts[i].replace(/^\/|\/$/g, '');
/* The following two lines output the same exact text to the console */
console.log('assets/js/regular-expressions.js');
console.log('' + script + '');
/* The following hard-coded line works (as in the script is loaded, raising the $ issue mentioned above */
System.import('assets/js/regular-expressions.js');
/* The following line with a variable throws an error of "Cannot find module 'assets/js/regular-expressions.js'." */
System.import('' + script + '');
:
나는 다음과 같은 코드가 있습니다. 특히 System.import에 전달되는 값이 완전히 동일하면.
왜 이렇게하는지 혼란 스럽습니다. 스크립트를 동적으로로드하려면 (모든 페이지에서 필요하지는 않지만)로드해야 할 필요가 있다고 말합니다.하지만 왜 시스템에 필요한 'System.import ("...")를 사용하지 않을까요? 스크립트를 만들고 필요한 경우 구성 요소를로드합니까? – Fizzix
이 구성 요소는 Firebase 데이터베이스에서 내용 (그리고 어떤 스크립트를로드해야하는지)을 가져 오기 때문에. –
앱을 부트 스트랩 할 때 색인 파일 내의 스크립트 태그에서 System.imports를 수행해야합니다. – Yeysides