Dojo Toolkit
"오늘의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 이후) |
![]() | |
개발자 | 도조 재단 |
출시일 | 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 | 쉼표로 구분된 표 형식의 데이터를 읽는, 읽기 전용 데이터 스토어. |
OpmlStore | OPML 형식의 계층 구조 데이터를 읽는, 읽기 전용 데이터 스토어. |
YahooStore | Yahoo! Search의 검색 결과를 가져오는, 읽기 전용 데이터 스토어. |
DeliciousStore | del.icio.us의 북마크를 가져오는, 읽기 전용 데이터 스토어. |
RdfStore | SPARQL을 이용하여, 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) 비영리 단체이다. 주요 목표는 기업의 채용 지원과 협업을 위한 기타 프로젝트를 장려하는 것이다.
스폰서와 멤버는 다음과 같다.
- IBM
- 썬 마이크로시스템즈(Sun Microsystems)
- JotSpot
- SitePen
- Renkoo
- TurboAjax
- OpenLaszlo
- Nexaweb
- Bea Systems
Dojo 재단은 다음 프로젝트를 지원하며, 이들은 Dojo Toolkit에 포함되어 있다.
과거 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