Vue.js 작성자 Evan은 WordPress JavaScript 프레임워크 토론에 대해 언급합니다.

게시 됨: 2017-06-06
사진 제공: JSConf 중국

지난 주 WordPress 핵심 기여자들은 새로운 JavaScript 프레임워크에 대한 고려 사항을 React 및 Vue로 좁혔습니다. 핵심 팀은 React 작업에 대한 더 많은 집합적 지식을 가지고 있기 때문에 WordPress 컨텍스트에서 다른 프레임워크를 사용하는 다양한 경험을 가진 개발자에게 연락했습니다.

기여자들이 Vue와 관련하여 가장 우려하는 것 중 하나는 프로젝트의 지속성입니다. Vue 제작자 Evan You에게 WordPress 기고자들이 프로젝트에 대해 더 잘 이해할 수 있도록 주제, 특히 유지 관리의 부담을 공유하는 데 도움이 되는 추가 유지 관리자를 양성하려는 그의 노력에 대해 질문했습니다.

"저는 실적을 살펴보는 것이 중요하다고 생각합니다. Vue는 거의 4년 동안 사용되었으며 모든 작업은 GitHub에서 공개적으로 수행되었으므로 누구나 가서 유지 관리 내역을 확인할 수 있습니다."라고 You는 말했습니다. “내가 주로 개발했지만 현재 유지 관리는 훨씬 더 커뮤니티 주도적입니다. 우리는 대부분의 문제와 커뮤니티 PR에 의해 수정된 문제의 더 많은 비율을 분류하는 활동적인 핵심 팀 구성원을 보유하고 있습니다. 그래서 – 예, 이미 추가 유지 관리자를 양성하는 작업을 하고 있었고 계속 그렇게 할 것입니다.”

현재 Vue에서 일하는 풀타임 노력에 자금을 지원하는 반복적인 Patreon 기부로 매월 10,000달러를 받고 있습니다. 그 전에는 Google과 Meteor에서도 근무했습니다. Google에서 근무하는 동안 You가 작업한 일부 프로젝트에서 Angular를 사용했는데 당시 사용 사례에 비해 너무 무거웠다고 말했습니다. 그는 Vue.js를 빌드하여 Angular에 대해 좋아했던 개념을 보다 가볍게 구현했습니다.

또한 최근에 Vue 2에서 그의 기술적인 결정에 영향을 미친 React 커뮤니티에서 꽤 많은 것을 배웠다고 말했습니다.

"첫째, Vue 2는 React에서 처음으로 개척한 동일한 Virtual DOM 기반 렌더링 모델을 사용합니다."라고 You가 말했습니다. “가상 DOM을 도입함으로써 Vue는 접근 가능성을 유지하면서 vdom 구성의 힘을 노출할 수 있었습니다.

“React 커뮤니티는 또한 상태 관리 및 CSS 관리와 같은 새로운 문제 영역을 탐색할 때 매우 활발합니다. Vue에 대한 공식 솔루션을 구현할 때 경쟁 솔루션이 많이 있었고 많은 영감을 받았습니다.”

Evan You는 Vue.js에 대한 WordPress 핵심 기여자의 오해를 해결합니다.

당신은 그가 React vs Vue에 대한 WordPress 기고자들의 토론을 따르고 있지만 어느 것이 프로젝트에 더 나은 선택인지에 대해서는 의견을 제시하지 않는다고 말했습니다.

"내 대답은 분명히 편향되었을 것이고 솔직히 나는 WP 핵심 팀의 입장이 아니므로 선택을 할 충분한 관점이 없습니다"라고 You는 말했습니다. "그러나 더 나은 정보에 입각한 결정을 내리는 데 도움이 되기 위해 논의 중인 일부 문제에 대해 피드백을 제공할 수 있습니다."

Vue.js에 대한 몇 가지 오해에 대한 설명과 함께 가장 최근의 Javascript 회의 노트에 댓글을 남겼습니다. 일부 기여자들은 Vue의 템플릿 언어가 기본 JavaScript를 모호하게 한다고 생각하기 때문에 "JavaScript 언어 수용"에 관한 요점을 다루었습니다.

Andrew Duthie는 지난 회의에서 "'JavaScript 언어 수용'은 Vue에서 볼 수 없는 React의 또 다른 기본 요소라고 생각합니다."라고 말했습니다.

귀하의 답변은 Vue가 "HTML 위에 뷰 표현을 위한 구문 설탕"으로 사용하는 템플릿을 JavaScript 위에 뷰 표현으로 사용하는 JSX의 경우 유사한 용도로 생각하는 것과 비교합니다.

UI의 풍부함이 증가한다고 해서 모든 것을 JavaScript에 넣을 필요는 없습니다. 반면에 Vue가 기본적으로 템플릿을 사용한다고 해서 사람들이 JavaScript를 제대로 배우지 않고도 사용할 수 있다는 의미는 아닙니다.

Vue의 템플릿은 내부에서 JavaScript 렌더링 기능으로 컴파일되며 실제로는 전통적인 문자열 템플릿보다 JavaScript에 더 가깝습니다. 기본 가상 DOM 표현 위에 있는 구문 설탕의 레이어일 뿐입니다. JSX를 JS 위에 뷰 표현을 위한 구문 설탕으로 생각하십시오. Vue 템플릿은 HTML 위에 뷰 표현을 위한 구문 설탕입니다.

JSX/Raw JS는 가상 DOM 노드를 직접 조작해야 할 때 더 많은 유연성을 제공합니다. 이것이 Vue가 렌더 기능도 지원하는 이유입니다. 그러나 이것은 동일한 텐트 아래에 두 개의 반대 패러다임을 두는 것이 아니라 단순히 사용자가 더 많은 제어를 위해 구문 설탕 계층을 건너뛸 수 있도록 허용하는 것입니다.

렌더 기능 위에 템플릿을 추가하는 아이디어는 Vue를 채택한 WordPress의 다른 많은 지지자들이 공유하는 우려인 "더 나은 접근 가능성"을 제공하는 것입니다.

"HTML에 더 익숙하고 사용 사례가 더 간단한 사용자는 템플릿을 사용할 수 있는 반면 JSX/render 기능에 이미 익숙한 사용자는 JS의 모든 기능을 활용할 수 있습니다."라고 You는 말했습니다. "이것은 WP 코어 사용에 매우 적합합니다. 접근성에 관심이 있는 커뮤니티 사용자는 보다 쉽게 ​​시작할 수 있고 코어 팀은 고급 사용 사례를 위해 JSX/렌더 기능에 액세스할 수 있습니다."

또한 Vue의 개발 프로세스에 대한 추가 정보를 제공하여 수명 문제를 해결했습니다. 그는 현재 코드베이스는 대부분 자신이 개발하지만 유지 관리는 전 세계 구성원과 함께 핵심 팀에 분산되어 있음을 확인했습니다.

You는 "다른 기여자들의 기여는 모두 PR의 형태로 제출되기 때문에 커밋 수가 적고 GitHub의 '스쿼시 및 커밋' 기능을 사용하므로 각 PR은 기여자에 대해 하나의 커밋만 생성합니다."라고 말했습니다. “우리는 핵심 리포지토리에만 500개 가까운 PR을 병합했으며 조직 전체에 더 많은 PR을 병합했습니다. vuejs 조직의 다른 저장소(예: vuex, vue-router, vuejs.org)도 대부분 전담 팀 구성원이 유지 관리합니다.”

또한 WordPress 기여자들이 Vue 2.0에서 템플릿 언어의 주요 변경 사항에 대한 우려를 제기함에 따라 안정성 및 향후 호환성에 대한 질문에 대한 설명을 제공했습니다.

"이것은 약간의 설명이 필요합니다. Vue 버전 관리는 엄격하게 semver를 따릅니다."라고 You는 말했습니다. "1.0 이후 API 변경 사항을 깨는 유일한 시간은 2.0 범프였습니다. 템플릿 구문은 API의 일부이므로 [중단]되지 않으며 주요 버전 범프 사이에 100% API 이전 버전과의 호환성을 약속합니다. 우리는 안정성을 매우 중요하게 생각하므로 GitLab, Vice 및 중국 최대의 인터넷 회사를 포함한 프로덕션 사용자와 커뮤니티도 마찬가지입니다."

많은 WordPress 핵심 기여자가 수년 동안 React를 기반으로 개발해 왔기 때문에 기여자가 다양한 피드백 라운드에서 요청한 Vue에 대한 보다 자세하고 심층적인 정보를 제공합니다. 토론은 앞으로 몇 주 동안 계속될 것이며 기고자들은 WordCamp Europe의 기고자 회담에서 이 주제를 포함할 계획입니다.