ES6
+ Angular2
+ Webpack
으로이를 수행 할 수 있습니다.
들어가기 전에 umd
모듈 시스템이 무엇인지 설명하겠습니다.
는
UMD 패턴은 일반적으로 UMD
는 도서관이 만든 패턴, 오늘의 가장 인기있는 스크립트 로더와의 호환성 (예를 들어 다른 사람의 사이에 RequireJS) 위의 인용
을 제공하기 위해 시도 패턴은 requirejs
, webpack
, browserify
, systemjs
등과 같은 모든 모듈/스크립트 로더를 지원합니다. 즉, UMD 패턴을 따르는 라이브러리는 모든 주요 모듈 시스템 (AMD
, CommonJS
,)에 의해 인식됩니다.3210 및 Vanilla JS
).
이것은 CDN의 모든 라이브러리가 작동하는 방식입니다.
지금도 동일한 패턴, 즉 UMD
패턴을 따라야합니다. 귀하의 도서관이 angular2
에 있으니 ES6
, Angular2
및 Webpack
으로 가보길 권합니다.
모든 스크립트 로더에서 사용할 수 있도록 라이브러리를 UMD 형식으로 가져 오려면 이러한 구성을 설정해야합니다. 당신의 웹팩 출력 번들 (UMD 모듈) 준비되면
output: {
path: __dirname + '/lib', // path to output
filename: outputFile, // library file name
library: libraryName, // library name
libraryTarget: 'umd', // the umd format
umdNamedDefine: true // setting this to true will name the AMD module
},
후 모든 사용자가 인덱스 페이지에 라이브러리를 주입 및 스크립트 로더/그들이 사용하는 모듈 시스템의 관계없이 angular2 구성 요소를 사용하여 시작할 수 있습니다.
멋진 예를 here가있다 그는이 here
Q 설명 : 어떻게 우리 도서관의 소비자가 자신의 코너 2 응용 프로그램에서이 UMD 번들을 포함 할 것이다?
Ans By의 : 라이브러리는 UMD 모듈 될 것입니다 때문에, 사용자들이 자신의 응용 프로그램과 함께 사용하는 스크립트 로더/모듈 시스템을 기반으로 라이브러리를 포함 할 수.
예를 들면. 바닐라 JS :
<script src="http://example.com/your_lib.js"></script>
<script>
// Your_Lib will be available and will attach itself
// to the global scope.
var html = Your_Lib.render();
</script>
RequireJS (AMD) :
<script src="http://example.com/require.js"></script>
<script> requirejs config goes here </script>
<script>
define(['your_lib', function(Your_Lib) {
var html = Your_Lib.render();
}])
</script>
SystemJS (CommonJS) :
var map = {
'@angular': 'node_modules/@angular',
....
'your_lib': 'example.com/your_lib.js'
};
var config = {
defaultJSExtensions: true,
map: map,
packages: packages
};
System.config(config);
는 그런 다음 평소와 같이 라이브러리를 가져올 수 있습니다.
웹팩 : Index.html을
에서
에서 webpack.config.js
{
externals: {
// require("your_lib") is external and available
// on the global var Your_Lib
"your_lib": "Your_Lib"
}
}
그리고 당신의 라이브러리는 전역 범위에서
Your_Lib
으로 제공 될 것이다.
저는 여러분이 여러분의 모듈을 위해 polyfil js를 만들 수 있다고 생각합니다. 예를 들어 앵귤러 2 폴리 필름 http://embed.plnkr.co/w2FVfKlWP72pzXIsfsCU/가 포함되어 있습니다. 이렇게하면 사용자가 자신의 index.html에서 가져올 수있는 js 파일을 가져 와서 해당 모듈을 사용할 수 있습니다. –