Temporal: 9-гадовае падарожжа, каб выправіць час у JavaScript | Mewayz Blog Skip to main content
Hacker News

Temporal: 9-гадовае падарожжа, каб выправіць час у JavaScript

Каментарыі

2 min read Via bloomberg.github.io

Mewayz Team

Editorial Team

Hacker News

Уводзіны: няўлоўная прырода часу ў кодзе

На працягу дзесяцігоддзяў апрацоўка дат і часу ў JavaScript была вядомай праблемай для распрацоўшчыкаў. Родны аб'ект `Date`, прадстаўлены ў 1995 годзе, быў па сутнасці тонкай абгорткай вакол `java.util.Date` Java, успадкоўваючы яго асноўныя недахопы. У ім адсутнічала падтрымка часавых паясоў за межамі лакальнай сістэмы карыстальніка або UTC, быў зменлівы API, які прыводзіў да кода, схільнага да памылак, і прапаноўваў заблытаныя месяцы з нулявой індэксацыяй. Па меры таго, як прыкладанні сталі больш глабальнымі і распаўсюджанымі, гэтыя недахопы ператварыліся з нязначных раздражненняў у сур'ёзныя перашкоды для стварэння надзейнага праграмнага забеспячэння. Для такіх платформаў, як Mewayz, дзе каардынацыя задач, раскладаў і даных у розных гадзінных паясах мае вырашальнае значэнне для бізнес-аперацый, трывалая часовая аснова не з'яўляецца раскошай - гэта неабходнасць. Гэта гісторыя Temporal, сучаснага API, на стварэнне якога спатрэбілася амаль дзесяць гадоў, каб нарэшце выправіць час для ўсёй экасістэмы JavaScript.

Доўгі шлях да лепшага спаткання

Падарожжа для Temporal пачалося ўсур'ёз прыкладна ў 2015 годзе пад кіраўніцтвам прыхільнікаў у камітэце TC39, групе, якая развівае мову JavaScript. Мэта была амбіцыйнай: стварыць новую комплексную стандартную бібліятэку для дат і часу, якая была б нязменнай, улічвала гадзінны пояс і прапаноўвала асобныя тыпы для розных канцэпцый (напрыклад, простыя даты супраць дакладных момантаў часу). Працэс быў наўмысна скрупулёзным, уключаў у сябе шырокія водгукі супольнасці, некалькі рэалізацый polyfill і ітэрацыйныя этапы прапаноў. Гэтая працяглая інкубацыя мела вырашальнае значэнне для таго, каб пазбегнуць памылак мінулага і гарантаваць, што API можа абслугоўваць розныя выпадкі выкарыстання, ад простых сродкаў выбару дат да складаных сістэм фінансавых аперацый, на наступныя дзесяцігоддзі.

Ключавыя інавацыі Temporal API

Temporal фіксуе час шляхам увядзення выразнай, лагічнай і нязменнай аб'ектнай мадэлі. У адрозненне ад адзінага заблытанага класа `Date`, Temporal забяспечвае асобныя аб'екты для розных мэтаў, напрыклад `Temporal.PlainDate` (каляндарная дата без часу), `Temporal.Instant` (адзіны момант часу) і `Temporal.ZonedDateTime` (поўная дата і час у пэўным гадзінным поясе). Такое раздзяленне праблем ліквідуе велізарны клас распаўсюджаных памылак. Яго нязменнасць азначае, што кожная аперацыя вяртае новы аб'ект, што робіць код прадказальным і яго лягчэй адладжваць. Акрамя таго, ён уключае першакласную падтрымку для ўсіх гадзінных паясоў з выкарыстаннем базы дадзеных часавых паясоў IANA і апрацоўвае хітрыя гранічныя выпадкі, такія як пераход на летні час і высакосныя секунды з выразнай дакладнасцю.

  • Нязменнасць: усе часовыя аб'екты нязменныя; метады вяртаюць новыя асобнікі, прадухіляючы выпадковыя пабочныя эфекты.
  • Яснасць праз раздзяленне: Адрозныя тыпы для простых дат, часу, дат-часу і зональных дат-часу робяць намер распрацоўшчыка відавочным.
  • Першакласныя гадзінныя паясы: убудаваная падтрымка базы дадзеных часавых паясоў IANA, якая выходзіць далёка за межы мясцовага часу і UTC.
  • Усёабдымны разбор і фарматаванне: надзейная падтрымка радкоў ISO 8601 і карыстальніцкіх шаблонаў фарматавання з скрынкі.

Наступствы для сучасных бізнес-прыкладанняў

З'яўленне Temporal азначае сейсмічны зрух для стварэння прыкладанняў, якія працуюць па-за межамі і гадзіннымі паясамі. Для модульнай бізнес-АС, такой як Mewayz, гэта непасрэдна ператвараецца ў больш надзейныя і простыя ў стварэнні функцыі. Разгледзім тэрмін выканання праекта, прызначаны для "EOD 15 лістапада" для каманды, якая ахоплівае Нью-Ёрк, Лондан і Сінгапур. З Temporal дакладнае прадстаўленне гэтага тэрміну, яго захаванне і правільнае адлюстраванне для кожнага карыстальніка становіцца простай задачай, а не цяжкай працай. Фінансавая справаздачнасць, планаванне аўтаматызаваных працоўных працэсаў і пазнака часу ў журналах аўдыту - усё гэта атрымлівае выгаду ад часовага прымітыва, якому распрацоўшчыкі могуць давяраць.

<цытата>

"Temporal - гэта самае важнае дасягненне для JavaScript з часоў Promises. Нарэшце яно дае распрацоўшчыкам інструменты для правільнай апрацоўкі часу, што з'яўляецца асновай амаль для кожнага сур'ёзнага прыкладання." – Удзельнік камітэта TC39.

Погляд наперад: новая эра часовай яснасці

Паколькі Temporal прасоўваецца да поўнага ўключэння ў мову JavaScript, яго polyfill можна выкарыстоўваць ужо сёння, прапаноўваючы зазірнуць у будучыню, дзе памылкі, звязаныя з датамі, з'яўляюцца перажыткам мінулага. Дзевяцігадовае падарожжа падкрэслівае прыхільнасць да таго, каб атрымаць складаны, базавы API. Як для платформаў, так і для распрацоўшчыкаў прыняцце Temporal азначае інвестыцыі ў доўгатэрміновую стабільнасць і яснасць. У Mewayz мы ўсхваляваны патэнцыялам Temporal для падмацавання часовай логікі ў нашых модулях, што дазваляе распрацоўшчыкам засяродзіцца на стварэнні інавацыйных бізнес-рашэнняў, не змагаючыся з тонкасцямі часу. Выпраўленне часу JavaScript больш не з'яўляецца далёкай марай - гэта старанна створаная рэальнасць.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Часта задаюць пытанні

Уводзіны: няўлоўны характар часу ў кодзе

На працягу дзесяцігоддзяў апрацоўка дат і часу ў JavaScript была вядомай праблемай для распрацоўшчыкаў. Родны аб'ект `Date`, прадстаўлены ў 1995 годзе, быў па сутнасці тонкай абгорткай вакол `java.util.Date` Java, успадкоўваючы яго асноўныя недахопы. У ім адсутнічала падтрымка часавых паясоў за межамі лакальнай сістэмы карыстальніка або UTC, быў зменлівы API, які прыводзіў да кода, схільнага да памылак, і прапаноўваў заблытаныя месяцы з нулявой індэксацыяй. Па меры таго, як прыкладанні сталі больш глабальнымі і распаўсюджанымі, гэтыя недахопы ператварыліся з нязначных раздражненняў у сур'ёзныя перашкоды для стварэння надзейнага праграмнага забеспячэння. Для такіх платформаў, як Mewayz, дзе каардынацыя задач, раскладаў і даных у розных гадзінных паясах мае вырашальнае значэнне для бізнес-аперацый, трывалая часовая аснова не з'яўляецца раскошай - гэта неабходнасць. Гэта гісторыя Temporal, сучаснага API, на стварэнне якога спатрэбілася амаль дзесяць гадоў, каб нарэшце выправіць час для ўсёй экасістэмы JavaScript.

Доўгі шлях да лепшага спаткання

Падарожжа для Temporal пачалося ўсур'ёз прыкладна ў 2015 годзе пад кіраўніцтвам прыхільнікаў у камітэце TC39, групе, якая развівае мову JavaScript. Мэта была амбіцыйнай: стварыць новую комплексную стандартную бібліятэку для дат і часу, якая была б нязменнай, улічвала гадзінны пояс і прапаноўвала асобныя тыпы для розных канцэпцый (напрыклад, простыя даты супраць дакладных момантаў часу). Працэс быў наўмысна скрупулёзным, уключаў у сябе шырокія водгукі супольнасці, некалькі рэалізацый polyfill і ітэрацыйныя этапы прапаноў. Гэтая працяглая інкубацыя мела вырашальнае значэнне для таго, каб пазбегнуць памылак мінулага і гарантаваць, што API можа абслугоўваць розныя выпадкі выкарыстання, ад простых сродкаў выбару дат да складаных сістэм фінансавых аперацый, на наступныя дзесяцігоддзі.

Ключавыя інавацыі Temporal API

Temporal фіксуе час шляхам увядзення выразнай, лагічнай і нязменнай аб'ектнай мадэлі. У адрозненне ад адзінага заблытанага класа `Date`, Temporal забяспечвае асобныя аб'екты для розных мэтаў, напрыклад `Temporal.PlainDate` (каляндарная дата без часу), `Temporal.Instant` (адзіны момант часу) і `Temporal.ZonedDateTime` (поўная дата і час у пэўным гадзінным поясе). Такое раздзяленне праблем ліквідуе велізарны клас распаўсюджаных памылак. Яго нязменнасць азначае, што кожная аперацыя вяртае новы аб'ект, што робіць код прадказальным і яго лягчэй адладжваць. Акрамя таго, ён уключае першакласную падтрымку для ўсіх гадзінных паясоў з выкарыстаннем базы дадзеных часавых паясоў IANA і апрацоўвае хітрыя гранічныя выпадкі, такія як пераход на летні час і высакосныя секунды з выразнай дакладнасцю.

Наступствы для сучасных бізнес-прыкладанняў

З'яўленне Temporal азначае сейсмічны зрух для стварэння прыкладанняў, якія працуюць па-за межамі і гадзіннымі паясамі. Для модульнай бізнес-АС, такой як Mewayz, гэта непасрэдна ператвараецца ў больш надзейныя і простыя ў стварэнні функцыі. Разгледзім тэрмін выканання праекта, прызначаны для "EOD 15 лістапада" для каманды, якая ахоплівае Нью-Ёрк, Лондан і Сінгапур. З Temporal дакладнае прадстаўленне гэтага тэрміну, яго захаванне і правільнае адлюстраванне для кожнага карыстальніка становіцца простай задачай, а не цяжкай працай. Фінансавая справаздачнасць, планаванне аўтаматызаваных працоўных працэсаў і пазнака часу ў журналах аўдыту - усё гэта атрымлівае выгаду ад часовага прымітыва, якому распрацоўшчыкі могуць давяраць.

Погляд наперад: новая эра часовай яснасці

Паколькі Temporal прасоўваецца да поўнага ўключэння ў мову JavaScript, яго polyfill можна выкарыстоўваць ужо сёння, прапаноўваючы зазірнуць у будучыню, дзе памылкі, звязаныя з датамі, з'яўляюцца перажыткам мінулага. Дзевяцігадовае падарожжа падкрэслівае прыхільнасць да таго, каб атрымаць складаны, базавы API. Як для платформаў, так і для распрацоўшчыкаў прыняцце Temporal азначае інвестыцыі ў доўгатэрміновую стабільнасць і яснасць. У Mewayz мы ўсхваляваны патэнцыялам Temporal для падмацавання часовай логікі ў нашых модулях, што дазваляе распрацоўшчыкам засяродзіцца на стварэнні інавацыйных бізнес-рашэнняў, не змагаючыся з тонкасцямі часу. Выпраўленне часу JavaScript больш не з'яўляецца далёкай марай - гэта старанна створаная рэальнасць.

Спрасціце свой бізнес з Mewayz

Mewayz аб'ядноўвае 208 бізнес-модуляў на адной платформе — CRM, выстаўленне рахункаў, кіраванне праектамі і інш. Далучайцеся да 138 000+ карыстальнікаў, якія спрасцілі свой працоўны працэс.

Пачніце бясплатна сёння →