Кіріспе
Dojo Toolkit (dōjō toolkit) – ашық кодты модульдік JavaScript кітапханасы (немесе дәлірек айтқанда JavaScript құралдар жинағы), платформааралық, JavaScript/Ajax негізіндегі қосымшалар мен веб-сайттарды жылдам дамытуды жеңілдету үшін жасалған. Ол 2004 жылы Алекс Расселл, Дилан Шиман, Дэвид Шонцлер және басқалар тарапынан басталып, өзгертілген BSD лицензиясы немесе Академиялық еркін лицензия (≥ 2.1) бойынша екі лицензиямен қолданылады.
Dojo Toolkit (stylized as dōjō toolkit) is an open source modular JavaScript library (or more specifically JavaScript toolkit) designed to ease the rapid development of cross platform, JavaScript/Ajax based applications and web sites. It was started by Alex Russell, Dylan Schiemann, David Schontzler, and others in 2004 and is dual licensed under the modified BSD license or the Academic Free License (≥ 2.1).
Асинхронды байланыс
Ajax бағдарламаларының маңызды ерекшеліктерінің бірі – браузердің сервермен асинхронды байланысы: ақпарат алмасылады және бүкіл бетті қайта жүктеу қажеттілігі болмай, беттің көрінісі жаңартылады. Бұл әдетте JavaScript-тің XMLHttpRequest объектісі арқылы іске асырылады. Dojo әртүрлі веб-браузерлердің XMLHttpRequest іске асыруларының үстінен абстрактілі қабат (dojo.xhr) ұсынады, ал dojo.io басқа тасымалдаушыларды (жасырын IFrames сияқты) және әртүрлі дерек форматтарын қолдайды. Осы тәсілді пайдалану арқылы пайдаланушының формаға енгізген деректерін серверге "көзден жасырып" жіберу оңай; сервер содан кейін беттің көрінісін жаңартатын JavaScript кодымен жауап бере алады.
Қаптама жүйесі
Dojo жеке пакеттер мен қосалқы пакеттерде функционалдықтың модулдік дамуын жеңілдету үшін пакет жүйесін ұсынады; Dojo "bootstrap" скрипті "io", "event" сияқты иерархиялық пакет атау кеңістіктерін тамыр "dojo" атау кеңістігінің астында бастамалайды. Тамыр атау кеңістігі басталып болғаннан кейін, кез келген Dojo пакетін (XMLHttpRequest немесе басқа ұқсас арна арқылы) bootstrap-та ұсынылған қосымша функцияларды пайдаланып жүктеуге болады. Сонымен қатар, "dojo" атау кеңістігінің ішінде немесе оған параллель қосымша атау кеңістіктерін бастауға болады, бұл Dojo-ны кеңейтуге немесе үшінші тарап кітапханалары мен қосымшалары үшін жеке Dojo басқарылатын атау кеңістіктерін дамытуға мүмкіндік береді. Dojo пакеттері бірнеше файлдардан тұруы мүмкін және пакетті құрайтын файлдарды көрсетуге болады. Кез келген пакет немесе файл басқа пакеттерге немесе файлдарға тәуелділікті көрсетуі мүмкін; пакет жүктелген кезде, оның көрсеткен барлық тәуелділіктері де жүктеледі. Көптеген Dojo пакеттерін домендер арасында жүктеуге қатысты мәселелерді шешу үшін шаралар қарастырылған (бірақ бұл Dojo-ның ерекше құрастырылуын қажет етеді). Dojo сондай-ақ "профильдер" құру механизмін ұсынады; құрастыру жүйесі пакеттер тізімін кіріс ретінде қабылдайды және Rhino-ны осы пакеттер мен олардың барлық тәуелділіктерін қамтитын біртұтас қысылған JavaScript файлын жасау үшін пайдаланады. Бұл қажетті барлық кодты бірден жүктеуге және бастауға мүмкіндік береді, сонымен қатар кодты кэштеуге мүмкіндік береді (көптеген веб-браузерлер XMLHttpRequest арқылы жүктелген файлдарды кэштеуге мүмкіндік бермейді). Алдын ала құрастырылған профильдерді толық құрал жиынтығымен бірге сол жерден жүктеуге болады.
Клиенттік деректер сақтау
Dojo cookie файлдарын оқу және жазу функцияларын қамтамасыз етуден басқа, Dojo Storage деп аталатын жергілікті, клиенттік жаққа арналған сақтау абстракциясын қолдады. Dojo Storage веб-қосымшаларына клиенттік жағынан деректерді тұрақты, қауіпсіз және пайдаланушының келісімімен сақтауға мүмкіндік береді. Ол Internet Explorer, Firefox және Safari сияқты барлық веб-браузерлерде жұмыс істейді. Веб-бетке қосылғанда, Dojo Storage ақпаратты тұрақты сақтаудың ең тиімді жолын анықтайды. Firefox 2 браузеріндегі түпкілікті сақтау мүмкіндігін пайдаланады; ал басқа браузерлерде жасырылған Flash апплетін қолданады. Flash 6+ вебке қосылған компьютерлердің шамамен 95%-ында орнатылғандықтан, бұл сақтау механизмін веб-қолданушылардың көп бөлігі үшін қолжетімді етеді. Файл жүйесінен, яғни file:// URL арқылы жүктелген веб-қосымша үшін, Dojo Storage Firefox-та XPCOM және Internet Explorer-де ActiveX-ті ашық түрде пайдаланып, ақпаратты сақтайды. Dojo Storage-ты пайдаланатын бағдарламашы сақтау механизмінен тәуелсіз болады және put және get сияқты әдістері бар қарапайым хэш-кесте абстракциясымен жұмыс істейді. Dojo Storage 1.3 нұсқасынан кейін қолдау көрсетілмейді.
Adobe Integrated Runtime (AIR) бағдарламасын қолдау
Доджоны JavaScript негізіндегі Adobe AIR қолданбаларында пайдалануға болады. Ол AIR қауіпсіздік талаптарына сәйкес өңделіп, жаңартылды. Dojo консалтингтік компаниясы SitePen, Dojo-ны қолдана отырып "Dojo Toolbox" деп аталатын Adobe AIR қолданбасын жасады. Онда API қарау құралы және Dojo құрастыру жүйесіне арналған GUI бар. Кәдімгі жағдайда құрастыру жүйесі Rhino ішінде іске қосылады, бірақ бұл AIR қолданбасында Java қолданбай, AIR арқылы құрастыру жүйесін іске қосуға болады.
Жүктілік
Доджоның бұрынғы нұсқаларының көлемді және жүктелуі баяу болатыны көпке мәлім болды. Сонымен қатар, Доджоны әртүрлі домендерде жүктеу үшін қосымша шаралар қабылдау қажет еді, мысалы, CDN арқылы. Dojo 1.7 нұсқасының негізгі мақсаты осы мәселелерді шешу болды, ол асинхронды модульдік анықтаманы (AMD) және "нано" жүктеу құралын енгізді.
Құжаттамалық
Доджо көптен бері толық емес, шашыраңқы және ескірген құжаттамасы үшін сынға ұшырап келді. Мұны мойындағаннан кейін, әзірлеушілер 1.8 нұсқасының құжаттамасын жақсартуға көп күш салды, оның ішінде жаңа оқулықтар, API шолушы, толықтырылмаған бөліктерді толтыру және көптеген мысалдарды AMD стиліне сәйкес жаңарту жүргізілді. Доджо туралы көптеген кітаптар жазылған, бірақ олардың барлығы 1.3 нұсқасына немесе одан ертерек нұсқаларға негізделген, қазір бірнеше жыл өткен. Олар AMD қолдауы мен оған байланысты қайта ұйымдастырудан бұрын жазылғандықтан, осы кітаптардағы мысалдар көбінесе қазір ескірген және қолданылмайтын тәсілдерге сүйенеді. Көптеген авторлар Dojo 2.0 нұсқасы шыққанша жаңа ештеңе жарияламауды күтіп отыр.
Оқу қисығы
Көптеген адамдар Dojo-ны үйрену мен бастаудың jQuery-ге қарағанда қиын екенін айтады. Dojo-ның негізін қалаушылардың бірі Дилан Шиман бұл олардың мақсаттарының өзгешелігінен туындайтынын мойындайды: "Кішкентайрақ нәрсені үйрену, көбірек мүмкіндік беретін нәрседен оңайырақ, бірақ біздің белсенді пайдаланушыларымыз Dojo оңай шешетін мәселелерге көп уақытты үнемдеу үшін алдын ала біраз үйренудің қажеттігін атап көрсетеді".
API тұрақтылығы
Алғашқы пайдаланушылар құралдар жиынтығы толығымен қайта жазылғаннан кейін 1.0 нұсқасына көшуде қиындықтарға тап болды. Соңғы нұсқаларда AMD-ге көшу де осыған ұқсас мәселелер тудырды. Dojo өте қарқынды дамып келе жатқандықтан, кері үйлесімділікті сақтауға көп еңбек сіңірді, қазіргі API-нің үлкен бөлігі ескіргенімен, қолдау көрсетілуде, бірақ пайдаланушылар жаңартулар көңіл күткендей тегіс болмайтынын жиі байқады. Dojo 2.0 нұсқасы көптеген ескірген API-ларды жойды және JavaScript-тен TypeScript-ке көшті.