Moment.js 및 유지 관리 모드 항목
However, Moment was built for the previous era of the JavaScript ecosystem. The modern web looks much different these days. Moment has evolved somewhat over the years, but it has essentially the same design as it did when it was created in 2011. Given how many projects depend on it, we choose to prioritize stability over new features.
매우 오래되고 널리 사용되는 프로젝트에서 새 기능에 대한 안정성과 호환성을 유지하는 옵션은 새로운 것이 아닙니다. 실제로 request NPM 모듈은 몇 달 전에 비슷한 전환을 했습니다.
프로젝트가 출시되면 수명 주기에서 널리 채택되는 시점이 올 수 있습니다. 결과적으로 개발자는 문제의 유입과 일부 풀 요청도 받습니다. 그들은 문제를 해결하기 위해 24시간 내내 일하고 일반적으로 그 일을 잘합니다.
동일한 에너지를 최종 사용자에게 돌릴 수 없습니다. 개발자가 새 기능, 새 버전을 출시하거나 가치를 떨어뜨릴 때 많은 사용자에게 자신의 프로젝트에서 종속성 라이브러리 사용을 모범 사례와 동기화하도록 유지하려는 인센티브가 거의 또는 전혀 없습니다. 레거시 또는 이전 API를 사용하는 프로젝트, 일부는 이전 쿼크 또는 종속성에서 오랜 버그의 영향에 의존하며 여전히 패키지 관리자 및 Github에서 호스팅됩니다.
이는 라이브러리 개발자가 주요 변경 사항을 롤아웃하는 것을 효과적으로 방지합니다.
더 많은 기능이 추가됨에 따라 레거시 동작을 부동 상태로 유지해야 하며 결국 코드베이스가 너무 약해져서 동결해야 할 때가 옵니다. 하지만 이는 종속성 라이브러리를 철회하는 것과는 다릅니다. 많은 프로젝트가 중단되고 다운스트림 프로젝트 사용자에게 상당한 혼란을 야기할 수 있기 때문입니다.
공정하게 말하면 Moment.js는 큰 라이브러리이며 Chrome의 Lighthouse조차도 그것보다 3배 더 작은 다른 날짜 및 시간 라이브러리가 있음을 보여줍니다.
큰 크기는 Javascript의
Date()
생성자보다 날짜를 생성하는 데 훨씬 더 많은 유연성을 제공하고 번들로 제공되는 로케일 및 시간대의 수가 많기 때문입니다. 대부분의 애플리케이션은 시간을 모두 표시할 필요가 없으며, 특히 웹용으로 번들로 제공되는 Javacript의 경우 각 사용자에게 전송되는 수십 킬로바이트를 줄임으로써 CDN의 대역폭을 많이 절약할 수 있습니다. Moment.js는 이를 생성하는 간단한 방법을 제공하면서 이 모든 작업을 수행했습니다. 다음은 둘 다 반환하는 두 개의 코드 스니펫3 PM
입니다(현재 시간이 오후 3시라고 가정). 첫 번째는 Moment를 사용하고 다른 하나는 JS의 기본 Date 객체를 사용합니다.(각 쌍의 두 번째 스니펫은 https://dockyard.com/blog/2020/02/14/you-probably-don-t-need-moment-js-anymore 에서 붙여넣었습니다.)
// Moment.js
moment().format('h A')
// 3 PM
// Native Date object
Intl.DateTimeFormat('en', { hour: 'numeric' }).format(new Date())
// 3 PM
보시다시피 첫 번째 스니펫은 작성하기에 훨씬 짧습니다. 기본 Date 개체의 복잡성을 명시적으로 보여주는 또 다른 예는 시간 및 AM/PM과 함께 시간대 이름을 가져오는 것입니다. 시간대가 PST라고 가정해 보겠습니다.
// Moment.js, requires moment-timezone
var a = moment.tz("America/Los_Angeles");
a.format('h A z'); // 3 PM PST
// Native Date object
let [, tzName] = /.*\s(.+)/.exec((new Date()).toLocaleDateString(navigator.language, { timeZoneName: 'short' }));
let date = Intl.DateTimeFormat('en', { hour: 'numeric' }).format(new Date())
`${date} ${tzName}` // 3 PM PST
첫 번째 스니펫도 작성하기 쉽고 정규식을 포함하지 않습니다.
그렇다면 Moment에서 이전해야 할까요? 대역폭 절약과 같이 절실한 필요가 없다면 하지 마십시오. 이미 효과가 있는 것을 사용하는 것이 좋습니다. 내가 항상 말했듯이 단지 그것을 위해 마이그레이션하지 마십시오. Moment는 사라지지 않을 것이며 더 새로운 기능을 얻지 못할 것입니다.
다음 몇 주 동안 나는 가능한 MomentJS 대안을 살펴보고 여기에서 논의하고 Moment와 비교하여 어떻게 쌓이는지 볼 것입니다.
그리고 끝났어
읽어 주셔서 감사합니다. 이 게시물에서 오류를 발견하면 수정할 수 있도록 알려주세요.
Reference
이 문제에 관하여(Moment.js 및 유지 관리 모드 항목), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zenulabidin/moment-js-and-its-maintenance-mode-entry-57ai텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)