맨위로가기

Dojo Toolkit

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Dojo Toolkit은 웹 개발에 필요한 다양한 기능을 모듈화하여 제공하는 JavaScript 기반 오픈 소스 라이브러리이다. 국제화 기능, 재사용 가능한 UI 구성 요소(위젯), 비동기 통신 API, 패키징 시스템, 데이터 스토어, 클라이언트 측 데이터 저장, Adobe AIR 지원 등을 제공한다. Dojo는 NetBeans, Eclipse, Aptana 등 다양한 IDE에서 개발할 수 있으며, Dojo Foundation을 통해 지원받고 있다. 과거에는 성능 및 문서화에 대한 비판이 있었으나, 이후 개선을 통해 AMD 지원 및 문서 개선을 이루었다.

더 읽어볼만한 페이지

  • Ajax - 구글 문서도구
    구글 문서도구는 구글에서 제공하는 웹 기반 워드 프로세서로, 문서 작성, 편집, 공유 기능을 제공하며, 다양한 문서 형식 지원, 실시간 공동 작업, 머신러닝 기반 기능을 제공하고, 구글 드라이브를 통해 문서 및 파일을 함께 이용할 수 있다.
  • Ajax - AngularJS
    AngularJS는 동적 웹 애플리케이션 개발을 용이하게 하기 위해 설계된 오픈 소스 자바스크립트 프레임워크로, MVC 패턴 적용, 의존성 주입, HTML 확장 디렉티브 제공, 양방향 데이터 바인딩 등의 특징을 가지며, 장기 지원은 종료되었지만 웹 개발에 중요한 영향을 미쳤다.
  • 자바스크립트 라이브러리 - 구글 웹 툴킷
    구글 웹 툴킷(GWT)은 자바 코드를 자바스크립트로 변환하여 웹 애플리케이션 개발을 지원하는 도구로, 개발자가 자바 언어로 Ajax 애플리케이션을 개발하고 GWT 컴파일러를 통해 최적화된 자바스크립트 파일로 변환할 수 있게 한다.
  • 자바스크립트 라이브러리 - AngularJS
    AngularJS는 동적 웹 애플리케이션 개발을 용이하게 하기 위해 설계된 오픈 소스 자바스크립트 프레임워크로, MVC 패턴 적용, 의존성 주입, HTML 확장 디렉티브 제공, 양방향 데이터 바인딩 등의 특징을 가지며, 장기 지원은 종료되었지만 웹 개발에 중요한 영향을 미쳤다.
Dojo Toolkit - [IT 관련 정보]에 관한 문서
기본 정보
이름Dojo Toolkit (버전 2 이전), Dojo (버전 2 이후)
Dojo Toolkit 로고
개발자도조 재단
출시일2005년 3월
최신 안정화 버전7.0.6
최신 안정화 버전 출시일2021년 1월 20일
최신 미리보기 버전8.0.0-beta.7
최신 미리보기 버전 출시일2021년 4월 27일
운영체제크로스 플랫폼
저장소Dojo Toolkit 1.x: Dojo Toolkit 1.x 깃허브 저장소
Dojo Framework 2+: Dojo Framework 2+ 깃허브 저장소
프로그래밍 언어Dojo Toolkit 1.x: JavaScript
Dojo >= 2.x: TypeScript
장르JavaScript 툴킷 (라이브러리)
라이선스수정된 BSD 라이선스 또는 아카데믹 프리 라이선스 (≥ 2.1)
웹사이트Dojo Toolkit 웹사이트
Dojo 웹사이트
이전 버전 정보
이전 버전 이름Dojo Toolkit
이전 버전 최신 릴리스 버전1.15.0
이전 버전 최신 릴리스 날짜2019년 2월 16일

2. 기능

Dojo는 웹 개발에 필요한 다양한 기능을 모듈화하여 제공하는 자바스크립트 프레임워크이다. Dojo는 크게 dojo, dijit, dojox, util 등으로 구성된다.


  • '''dojo''': 핵심 및 대부분의 비 시각적 모듈을 포함한다.
  • '''dijit''': 위젯 및 레이아웃을 위한 사용자 인터페이스 모듈 라이브러리이다.
  • '''dojox''': ''dojo'' 또는 ''dijit''에 포함될 만큼 아직 안정적이지 않은 다양한 모듈을 포함한다.
  • '''util''': 최적화, 문서화, 스타일 검사 및 테스트와 같은 빌드 도구를 포함한다.


Dojo는 이러한 구성 요소를 통해 웹 개발에 필요한 다양한 기능을 제공하며, 특히 모듈화된 구조를 통해 필요한 기능만 선택적으로 사용할 수 있다는 장점이 있다. Dojo는 오픈 소스이며, 이미지 및 기타 리소스를 포함하여 약 3천 개의 자바스크립트 모듈을 포함하고 있다.

2. 1. 핵심 기능

Dojo는 다양한 브라우저 간의 차이점을 추상화하여 모든 브라우저에서 작동하는 API를 제공한다(Node.js영어에서 서버에서도 실행할 수 있다). 코드 모듈을 정의하고 상호 의존성을 관리하기 위한 프레임워크를 설정하고, 자바스크립트CSS를 최적화하고, 문서를 생성하고, 단위 테스트를 수행하기 위한 빌드 도구를 제공하며, 국제화, 지역화 및 접근성을 지원하고, 일반적으로 필요한 유틸리티 클래스 및 사용자 인터페이스 위젯의 풍부한 세트를 제공한다.

2. 2. 위젯

Dojo 위젯은 여러 브라우저에서 상호작용 기능을 제공하는 구성 요소로, 자바스크립트 코드, HTML 마크업, CSS 스타일 선언으로 구성된다.[20]

Dojo는 다음과 같은 다양한 위젯을 제공한다.

  • 메뉴, 탭, 툴팁
  • 정렬 가능한 표
  • 동적 차트
  • 2D 벡터 그래픽
  • 애니메이션 효과 (페이드, 와이프, 슬라이드) 및 사용자 정의 애니메이션 효과 기능


Dojo 위젯은 접근성을 고려하여 설계되었으며, 대부분의 위젯이 키보드만으로도 조작할 수 있다. 또한 기본 테마는 색각 이상이 있는 사람들도 보기 쉽도록 색상을 고려하여 디자인되었다.[21]

2. 3. 비동기 통신

Dojo는 브라우저와 서버 간의 비동기 통신을 위한 추상화된 API (`dojo.xhr`)를 제공한다. 이는 다양한 웹 브라우저의 XMLHttpRequest 구현을 추상화한 것이며, `dojo.io`는 숨겨진 IFrame과 같은 다른 전송 방법과 다양한 데이터 형식을 지원한다.[9] 이 방식을 통해 사용자가 양식에 입력한 데이터를 페이지 전체를 다시 로드하지 않고 "백그라운드"에서 서버로 쉽게 보낼 수 있다. 서버는 페이지 표시를 업데이트하는 JavaScript 코드로 응답할 수 있다.[9]

2. 4. 패키징 시스템

Dojo는 기능의 모듈식 개발을 용이하게 하기 위해 패키징 시스템을 제공한다. 기본 Dojo "부트스트랩" 스크립트는 루트 "dojo" 네임스페이스 아래에 "io", "event" 등 일련의 계층적 패키지 네임스페이스를 초기화한다. 루트 네임스페이스 초기화 후, 부트스트랩에서 제공되는 유틸리티 함수를 사용하여 모든 Dojo 패키지를 (XMLHttpRequest 또는 기타 유사한 전송을 통해) 로드할 수 있다.

Dojo 패키지는 여러 파일로 구성될 수 있으며 전체 패키지를 구성하는 파일을 지정할 수 있다. 또한 모든 패키지 또는 파일은 다른 패키지 또는 파일에 대한 종속성을 지정할 수 있다. 패키지가 로드되면 지정된 모든 종속성도 로드된다.

Dojo는 또한 "프로필"을 구축하기 위한 메커니즘을 제공한다. 빌드 시스템은 패키지 목록을 입력으로 받아 Rhino를 사용하여 해당 패키지 및 모든 종속성을 포함하는 단일 압축된 JavaScript 파일을 생성한다. 이를 통해 모든 필요한 코드를 한 번에 로드하고 초기화할 수 있으며, 코드의 캐싱을 허용한다 (대부분의 웹 브라우저는 XMLHttpRequest를 통해 로드된 파일을 캐시하지 않는다[1]).

Dojo에서 가장 기본이 되는 스크립트인 dojo.js를 읽어 들이면, 루트 네임스페이스인 "dojo" 아래에 계층 구조를 가진 패키지 네임스페이스가 설정된다(io, event 등). 이 초기 설정이 완료되면 dojo.js가 제공하는 함수(dojo.require)에 의해 XMLHttpRequest가 전송되고, 개별 Dojo 패키지가 읽혀진다. Dojo 패키지에서는 다른 패키지에 대한 종속성을 지정하는 것도 가능하다. 즉, 해당 패키지가 읽히면 종속성이 지정된 다른 패키지도 읽힌다.

이 패키지의 종속성 해결에는 순서성을 보장할 필요가 있으므로 동기적인 HTTP 통신이 수행된다. 이 때문에 패키지를 많이 읽어 들이는 페이지에서는 초기 로드에 매우 많은 시간이 소요되고, 또한 캐시가 유효하게 작동하지 않게 된다(대부분의 웹 브라우저는 XMLHttpRequest를 통해 읽어 들인 파일을 캐시하지 않음[1]). 따라서 Dojo에서는 커스텀 빌드 기능을 제공한다.

2. 5. 데이터 스토어

Dojo는 데이터의 읽고 쓰기를 추상화한 객체인 데이터 스토어를 제공하며, `dojo.data.*` 및 `dojox.data.*` 네임스페이스에는 다양한 데이터 스토어 구현이 포함되어 있다.[20]

데이터 스토어설명
ItemFileReadStore검색 기능을 제공하는 가장 기본적인 읽기 전용 데이터 스토어.
ItemFileWriteStore데이터의 추가 및 삭제 기능을 가진, 읽고 쓰기가 가능한 데이터 스토어.
CsvStore쉼표로 구분된 표 형식의 데이터를 읽는, 읽기 전용 데이터 스토어.
OpmlStoreOPML 형식의 계층 구조 데이터를 읽는, 읽기 전용 데이터 스토어.
YahooStoreYahoo! Search의 검색 결과를 가져오는, 읽기 전용 데이터 스토어.
DeliciousStoredel.icio.us의 북마크를 가져오는, 읽기 전용 데이터 스토어.
RdfStoreSPARQL을 이용하여, RDF 데이터 서버(예: Rhizome RDF application server)와 상호 작용하는, 읽고 쓰기가 가능한 데이터 스토어.



이 외에도 S3Store, RailsStore, WikipediaStore, Google\*Store, CouchDBRestStore 등 다양한 웹 상의 서비스와 연동하기 위한 데이터 스토어가 제공되고 있다.[20]

2. 6. 클라이언트 측 데이터 저장

Dojo는 쿠키를 읽고 쓰는 기능을 지원한다. 또한 이전에는 Dojo Storage라는 로컬 클라이언트 측 스토리지 추상화를 지원했다.

Dojo Storage를 사용하면 웹 애플리케이션이 사용자 권한을 받아 클라이언트 측에 데이터를 지속적이고 안전하게 저장할 수 있다. 웹 페이지에 포함되면 Dojo Storage는 정보를 영구적으로 저장하는 최상의 방법을 결정한다. Internet Explorer, Firefox, Safari를 포함한 기존 웹 브라우저에서 작동한다. Firefox 2는 기본 브라우저 지속성을 사용하고, 다른 브라우저에서는 숨겨진 Flash 애플릿을 사용한다. Flash 6+가 웹에 연결된 컴퓨터의 약 95%에 이전에 설치되었기 때문에,[10] 이전에 스토리지 메커니즘을 웹의 설치 기반 대부분에서 접근할 수 있었다. 파일 시스템, 즉 file:// URL에서 로드된 웹 애플리케이션의 경우, Dojo Storage는 Firefox에서 XPCOM을, Internet Explorer에서 ActiveX를 투명하게 사용하여 정보를 유지한다. Dojo Storage를 사용하는 프로그래머는 사용된 스토리지 메커니즘으로부터 추상화되며, put() 및 get()과 같은 메서드가 있는 간단한 해시 테이블 추상화가 제공된다.

Dojo Storage는 1.3 릴리스 이후 버전에서는 지원되지 않는다.

2. 7. 서버 측 데이터 저장 (dojo.data 네임스페이스)

2007년 1월 기준으로, Dojo는 `dojo.data` 네임스페이스에 다음과 같은 서버 측 데이터 저장소 구현 예시를 포함하고 있다.[11]

  • '''CsvStore''': CSV 파일에서 표 형식 데이터를 읽는 읽기 전용 저장소
  • '''OpmlStore''': OPML 형식 파일에서 계층적 데이터를 읽는 읽기 전용 저장소
  • '''YahooStore''': Yahoo! 검색 웹 서비스에서 검색 결과를 가져오는 읽기 전용 저장소
  • '''DeliciousStore''': del.icio.us 웹 서비스에서 북마크를 가져오는 읽기 전용 저장소
  • '''RdfStore''': SPARQL을 사용하여 RDF 데이터 서버(예: Rhizome RDF 애플리케이션 서버)와 통신하는 읽기/쓰기 저장소


Dojo는 데이터 스토어라고 불리는, 데이터의 읽고 쓰기를 추상화한 객체를 제공하며, 그 확장으로 서버 측과의 상호 작용을 용이하게 하는 다양한 클래스를 제공하고 있다.

  • ItemFileReadStore: 검색 기능을 제공하는 가장 기본적인 읽기 전용 데이터 스토어.
  • ItemFileWriteStore: 데이터의 추가 및 삭제 기능을 가진, 읽고 쓰기가 가능한 데이터 스토어.
  • '''CsvStore''': 쉼표로 구분된 표 형식의 데이터를 읽는, 읽기 전용 데이터 스토어.
  • '''OpmlStore''': OPML 형식의 계층 구조 데이터를 읽는, 읽기 전용 데이터 스토어.
  • '''YahooStore''': Yahoo! 검색의 검색 결과를 가져오는, 읽기 전용 데이터 스토어.
  • '''DeliciousStore''': del.icio.us의 북마크를 가져오는, 읽기 전용 데이터 스토어.
  • '''RdfStore''': SPARQL을 이용하여, RDF 데이터 서버와 상호 작용하는, 읽고 쓰기가 가능한 데이터 스토어.


이 외에도 S3Store, RailsStore, WikipediaStore, Google\*Store, CouchDBRestStore 등 다양한 웹 상의 서비스와 연동하기 위한 데이터 스토어가 제공되고 있다.[20]

2. 8. Adobe Integrated Runtime (AIR) 지원

Dojo는 자바스크립트 기반 어도비 AIR 애플리케이션에서 사용할 수 있도록 수정되었다.[12] Dojo 컨설팅 회사인 SitePen은 Dojo를 사용하여 "Dojo 툴박스"라는 Adobe AIR 애플리케이션을 만들었다. 이 애플리케이션에는 API 뷰어와 Dojo 빌드 시스템 GUI가 포함되어 있다. 일반적으로 빌드 시스템은 Rhino 내에서 실행되지만, 이 AIR 애플리케이션에서는 Java를 사용하지 않고 AIR에서 빌드 시스템을 실행할 수 있다.[12]

3. Dojo에서의 개발

Dojo 개발은 임의의 편집기를 사용하여 수행할 수 있다. NetBeans, Eclipse, Aptana, ActiveState Comodo 등을 예로 들 수 있다. NetBeans와 Eclipse는 자유 소프트웨어이며, Aptana와 Comodo는 커뮤니티 버전이 존재한다. Dojo 플러그인은 다양한 IDE에서 이용 가능하다. Dojo를 사용한 WYSIWYG 개발에는 오픈 소스인 WaveMaker를 사용할 수 있다.

4. Dojo Foundation과 스폰서

Dojo 재단은 오픈 소스 프로젝트를 지원하기 위해 설립된 501(c)(6) 비영리 단체이다. 주요 목표는 기업의 채용 지원과 협업을 위한 기타 프로젝트를 장려하는 것이다.

스폰서와 멤버는 다음과 같다.



Dojo 재단은 다음 프로젝트를 지원하며, 이들은 Dojo Toolkit에 포함되어 있다.

  • Persevere
  • OpenRecord
  • Cometd (for the Comet content-streaming paradigm)
  • DWR
  • Lucid Desktop [27]


과거 IBM과 썬 마이크로시스템즈는 Dojo 코드 기여를 포함한 공식 지원을 발표했다.[24][25] 젠드(Zend)는 Dojo와의 파트너십과 젠드 프레임워크(Zend Framework)에 통합하는 것을 발표했다.[26]

5. 비판

과거 도조(Dojo) 버전은 크고 느리다는 평판을 받았다.[13] CDN처럼 여러 도메인에서 도조를 로드하려면 추가 작업이 필요했다. 비동기 모듈 정의(AMD)와 "나노" 로더를 도입한 도조 1.7은 이러한 문제를 해결하는 것을 주요 목표로 삼았다.[14]

Dojo는 불완전하고, 산만하며, 시대에 뒤떨어진 문서로 오랫동안 비판받아 왔다. 개발자들은 이를 인식하여 1.8 릴리스에서 새로운 튜토리얼, API 브라우저를 만들고, 누락된 부분을 채우고, 대부분의 예제를 AMD 스타일로 업데이트하는 등 문서를 크게 개선했다.[15][16]

Dojo에 관한 여러 책이 쓰였지만, 모두 Dojo 1.3 또는 그 이전 버전을 기반으로 하여 현재는 수년이나 지난 구식이다. 이 책들은 AMD 지원 및 관련 재구성이 나오기 전에 쓰여졌기 때문에, 예제는 거의 예외 없이 현재는 더 이상 사용되지 않고 최선의 방법이 아닌 것들에 의존하고 있다. 대부분의 저자는 새로운 내용을 출판하기 전에 Dojo 2.0을 기다리고 있다.[17]

많은 사람이 Dojo가 특히 더 널리 사용되는 jQuery에 비해 배우고 시작하기 어렵다고 언급했다.[18][19]

Dojo 공동 개발자인 딜런 시먼(Dylan Schiemann)은 이것이 각 프레임워크의 서로 다른 범위에서 기인한 결과임을 인정하며, "물론 더 적은 기능을 가진 것을 배우는 것이 더 많은 기능을 가진 것을 배우는 것보다 쉽지만, 우리의 열성적인 사용자들은 조금 더 배우는 것이 Dojo가 쉽게 만들어주는 것들을 위해 수많은 시간을 절약해 준다고 지적합니다."라고 말했다.[13]

초기 사용자들은 툴킷이 완전히 재작성된 후 1.0 릴리스로 전환하는 데 어려움을 겪었다.[16] 최근 버전에서 AMD로 전환하는 것도 마찬가지로 문제가 많았다.[19] Dojo는 빠른 발전을 이루면서도 하위 호환성을 유지하기 위해 많은 노력을 기울였고, 현재 API의 상당 부분이 더 이상 사용되지 않지만 여전히 유지되고 있다. 그러나 사용자들은 종종 업그레이드가 기대만큼 원활하게 진행되지 않는다고 느꼈다.

Dojo 2.0 릴리스는 더 이상 사용되지 않는 API의 상당 부분을 제거하고 JavaScript에서 TypeScript로 전환했다.

참조

[1] 웹사이트 Dojo Blog https://dojo.io/blog[...] 2024-01-16
[2] 웹사이트 Release v8.0.0-beta.3 · dojo/framework · GitHub https://github.com/d[...] 2021-03-10
[3] 웹사이트 Samples · TypeScript https://www.typescri[...]
[4] 웹사이트 Dojo Toolkit License http://dojotoolkit.o[...] 2017-04-17
[5] 웹사이트 A Brief History of Dojo — The Dojo Toolkit - Reference Guide https://dojotoolkit.[...] 2024-01-16
[6] 웹사이트 jQuery Foundation and Dojo Foundation to Merge https://blog.jquery.[...] 2018-07-02
[7] 뉴스 jQuery Foundation and Dojo Foundation to Merge https://www.prweb.co[...] 2018-07-02
[8] 뉴스 Announcing the JS Foundation! https://www.sitepen.[...] 2018-07-02
[9] 웹사이트 What is Asynchronous JavaScript and XML (AJAX)? https://www.theserve[...] 2023-07-04
[10] 웹사이트 Adobe Flash Player Version Penetration http://www.adobe.com[...]
[11] 웹사이트 Dojo Data http://manual.dojoto[...] 2007-02-03
[12] 웹사이트 Development and JavaScript Blog http://www.sitepen.c[...]
[13] 웹사이트 An Interview with Dojo Toolkit Creator Dylan Schiemann http://net.tutsplus.[...] 2012-11-21
[14] 웹사이트 Dojo 1.7 Released! http://dojotoolkit.o[...] 2012-11-21
[15] 웹사이트 What's coming in Dojo 1.8 http://dojotoolkit.o[...] 2012-11-21
[16] 웹사이트 what is the raison detre for dojo 2.0 http://grokbase.com/[...] 2012-11-29
[17] 웹사이트 jQuery and the long term viability of Dojo http://mail.dojotool[...] 2012-11-29
[18] 웹사이트 Criticism of Dojo? http://blog.kitsonke[...] 2012-11-21
[19] 웹사이트 Dojo or JQuery http://notadojoguru.[...] 2012-11-21
[20] 문서 Dojo API Reference http://dojotoolkit.o[...]
[21] 문서 The Dojo Toolkit - Demos http://demos.dojotoo[...]
[22] 문서 Dojo Custom Build http://docs.dojocamp[...]
[23] 문서 Dojo Toolbox http://www.sitepen.c[...]
[24] 웹사이트 IBM Contributes Ajax Software Development Technology to Open Source Community http://www-03.ibm.co[...] 2007-02-03
[25] 웹사이트 Sun Joins the OpenAJAX Alliance and Dojo Foundation http://www.sun.com/s[...] 2007-02-03
[26] 문서 Dojo and Zend Framework Partnership Announcement https://andigutmans.[...]
[27] 문서 Lucid Desktop http://www.lucid-des[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com