[]
SpreadJS는 어디서나 작동하는 JavaScript 모듈을 위한 UMD(Universal Module Definition) 패턴을 지원합니다.
일반적으로 SpreadJS의 UMD 패턴은 AMD(Asynchronous Module Definition)와 CommonJS를 지원합니다. 이들은 개발자가 모듈 방식으로 코드를 작성할 수 있도록 하는 모듈 규격입니다. UMD 패턴을 사용한 모듈 프로그래밍은 코드 재사용성을 높일 뿐만 아니라 코드 효율성도 향상시켜 많은 시간과 자원을 절약할 수 있습니다. 이와 더불어, 자바스크립트 코드를 특정 순서로 작성해야 하는 의존성 없이도 흔히 발생하는 프로그래밍 문제에 대한 해결책을 제공하는 데 도움을 줍니다.
SpreadJS에서는 다음 여섯 개의 JavaScript 파일에 대해 UMD 패턴을 지원합니다:
gc.spread.sheets.all.xxx.js
gc.spread.sheets.print.xxx.js
gc.spread.sheets.pdf.xxx.js
gc.spread.sheets.charts.xxx.js
gc.spread.sheets.resources.xx.xxx.js
gc.spread.excelio.xxx.js
AMD(브라우저 우선) 의존성은 비동기적으로 로드되어, 브라우저가 응답을 잃는 상황을 방지할 수 있습니다.
다음 코드 예제는 RequireJS 설정, AMD를 사용한 SpreadJS 초기화, 그리고 AMD를 사용한 Excel IO Spread 사용 방법을 보여줍니다.
// RequireJS 구성하기
<script type="text/javascript">
requirejs.config({
"baseUrl": "./lib",
"paths": {
"gc-spread-sheets": "gc.spread.sheets.all.x.x.x",
"gc-spread-excelio": "gc.spread.excelio.x.x.x"
}
});
</script>
// SpreadJS 및 ExcelIO 초기화
<script type="text/javascript">
var spread, excelIo, json;
require(['gc-spread-sheets', 'gc-spread-excelio'], function (gc, excel) {
spread = new gc.spread.sheets.Workbook(document.getElementById("ss"));
excelIo = new excel.IO();
});
function SaveExcel(){
json = spread.toJSON();
excelIo.save(json, function (blob) {
//save blob to excel.
saveAs(blob, "export.xlsx");
}, function (e) {
if (e.errorCode === 1) {
alert(e.errorMessage);
}
});
}
</script>
CommonJS(서버 우선) 의존성은 자바스크립트 코드가 통합 개발 환경(IDE)에서 실행되도록 합니다.
다음 코드 예제는 CommonJS를 사용하여 SpreadJS를 초기화하는 방법을 보여줍니다.
var gc = require('../lib/gc.spread.sheets.all.x.x.x.min.js');
window.onload = function() {
var workbook = new gc.spread.sheets.Workbook(document.getElementById('ss'));
}
var gc = require('../lib/gc.spread.sheets.all.x.x.x.min.js');
var excel = require('../lib/gc.spread.excelio.x.x.x.min.js');
window.onload = function() {
var workbook = new gc.spread.sheets.Workbook(document.getElementById('ss'));
var json = JSON.stringify(workbook.toJSON());
var excelIo = new excel.IO();
excelIo.save(json, function (blob) {
// blob를 엑셀 파일로 저장
}, function (e) {
if (e.errorCode === 1) {
alert(e.errorMessage);
}
});
}