solidjs : 고성능 반응 형 JavaScript UI 라이브러리
Solid는 가상 DOM이 필요하지 않은 사용자 인터페이스를 작성하기위한 반응 형 JavaScript 라이브러리입니다. 템플릿을 실제 DOM 노드로 컴파일하고 세분화 된 반응으로 업데이트를 랩핑하므로 상태가 업데이트되면 관련 코드 만 실행됩니다.
이 방법을 사용하면 컴파일러가 초기 렌더링 및 런타임 업데이트를 최적화 할 수 있습니다. 성능에 초점을 맞추면 가장 유명한 JavaScript 프레임 워크 중 하나입니다.
나는 이것에 대해 호기심이 많았고 시도해보고 싶었 기 때문에이 프레임 워크가 구성 요소, 상태 업데이트, 스토리지 설정 등을 처리하는 방법을 탐색하기 위해 소규모 할 세계 애플리케이션을 만드는 데 시간을 보냈습니다.
최종 코드와 결과를 기다릴 수 없다면 최종 데모를 확인하십시오. [최종 데모 링크는 여기에 삽입되어야합니다.
대부분의 프레임 워크와 마찬가지로 NPM 패키지를 설치하여 시작할 수 있습니다. JSX와 함께 프레임 워크를 사용하려면 실행하십시오.
1 |
|
그런 다음 Babel, Webpack 또는 Rollup 구성 파일에 Babel-Preset-Solid를 추가해야합니다.
1 |
|
또는 작은 응용 프로그램을 설정하려면 템플릿 중 하나를 사용할 수도 있습니다.
1 2 3 4 5 6 7 |
|
TypeScript가 지원되며 TypeScript 프로젝트를 시작하려면 첫 번째 명령을 npx degit solidjs/templates/ts my-app
으로 변경하십시오.
렌더링 구성 요소의 구문은 React.js와 유사하므로 익숙해 보일 수 있습니다.
1 2 3 4 5 6 7 8 |
|
먼저 렌더링 함수를 가져온 다음 텍스트와 소품으로 div를 만들고 구성 요소와 컨테이너 요소를 전달하는 렌더링을 호출해야합니다.
그런 다음이 코드는 실제 DOM 표현식으로 컴파일됩니다. 예를 들어, 위의 코드 예제는 한 번 Solid로 컴파일되면 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Solid Playground는 매우 시원하며 Solid는 수화 된 클라이언트, 서버 및 클라이언트를 포함하여 다른 렌더링 방법을 가지고 있음을 보여줍니다.
Solid는 createSignal
이라는 후크를 사용하여 Getter와 Setter의 두 가지 기능을 반환합니다. React.js와 같은 프레임 워크를 사용하는 데 익숙해지면 조금 이상하게 보일 수 있습니다. 당신은 일반적으로 첫 번째 요소가 값 자체가 될 것으로 예상하지만, 우리는 getters를 명시 적으로 호출하여 읽기 값이있는 위치를 가로 채어야합니다.
예를 들어 다음 코드를 작성하는 경우 다음과 같습니다.
1 |
|
todos
녹음하는 것은 값을 반환하지 않고 함수를 반환합니다. 값을 사용하려면 todos()
와 같은 함수를 호출해야합니다.
작은 할 일 목록의 경우 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
위의 코드 예제에는 텍스트 필드가 표시되며 "프로젝트 추가"버튼을 클릭하면 Todos가 새 프로젝트로 업데이트되며 목록에 표시됩니다.
이것은 useState
사용과 매우 유사 해 보일 수 있으므로 Getter 사용의 차이점은 무엇입니까? 다음 코드 예제를 고려하십시오.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
위의 코드를 실행하면 다음이됩니다.
1 |
|
주목할만한 점은 새로운 마지막 이름을 설정 한 후 "내 이름은 ..."를 기록하지 않았다는 것입니다. 이 시점에서 lastName()
에 대한 변경 사항을 듣지 않는 것이 없기 때문입니다. displayFullName()
의 새 값은 displayName()
의 값이 변경 될 때만 설정되므로 setShowFullName
true로 설정된 경우 새 마지막 이름이 표시되는 것을 알 수 있습니다.
이것은 우리에게 값의 업데이트를 추적하는보다 안전한 방법을 제공합니다.
마지막 코드 예제에서 createSignal
소개했으며 createEffect
및 createMemo
다른 원시가 있습니다.
createEffect
종속성을 추적하고 종속성 변경의 각 렌더링 후에 실행됩니다.
1 2 3 4 5 |
|
count()
의 값이 변경 될 때마다 "Count is at ..."가 기록됩니다.
createMemo
실행 된 코드의 종속성이 업데이트 될 때마다 값을 다시 계산하는 읽기 전용 신호를 만듭니다. 일부 값을 캐시하고 재평가하지 않고 (종속성이 변경 될 때까지) 액세스 할 때 사용할 수 있습니다.
예를 들어, 카운터를 100 번 표시하고 버튼을 클릭 할 때 값을 업데이트하려면 createMemo
사용하여 클릭당 한 번만 재 계산이 발생할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Solid는 onMount
, onCleanup
및 onError
와 같은 몇 가지 수명주기 방법을 노출시킵니다. 초기 렌더링 후 일부 코드가 실행 되려면 onMount
사용해야합니다.
1 2 3 |
|
onCleanup
React의 componentDidUnmount
와 유사합니다. 반응 형 스코프 재 계산시 실행됩니다.
onError
가장 최근의 하위 스코프에서 오류가 발생하면 실행됩니다. 예를 들어, 데이터 수집이 실패하면 사용할 수 있습니다.
데이터를위한 스토어를 만들려면 Solid는 Return 값이 읽기 전용 프록시 객체 및 세터 기능 인 createStore
노출시킵니다.
예를 들어, 상태 대신 스토리지를 사용하도록 할 일 예제를 변경하면 다음과 같습니다.
1 2 3 4 5 6 7 8 9 |
|
위의 코드 예제는 먼저 빈 배열이있는 프록시 객체를 녹음 한 다음 객체 {item: "a new todo item", completed: false}
포함 된 배열이있는 프록시 객체를 기록합니다.
속성에 액세스하지 않으면 최상위 상태 객체를 추적 할 수 없으므로 todos
대신 todos.list
기록하는 이유입니다.
createEffect
에서 todos
만 기록하면 목록의 초기 값이 표시되지만 onMount
에서 업데이트 된 값은 표시되지 않습니다.
스토어의 값을 변경하려면 createStore
사용할 때 정의 된 설정 기능을 사용하여 업데이트 할 수 있습니다. 예를 들어, 할 일 목록 항목을 "완료"로 업데이트하려면 스토리지를 다음과 같이 업데이트 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
.map()
와 같은 메소드를 사용할 때마다 모든 DOM 노드 낭비가 업데이트 될 때마다 재현되면 Solid를 사용하면 템플릿 어시스턴트를 사용할 수 있습니다.
이 중 일부는 프로젝트를 통한 반복, 요소를 조건부 표시 및 숨겨지기 For
Show
, 특정 조건과 일치하는 요소를 표시하기위한 Switch
및 Match
등을 사용할 수 있습니다!
다음은 사용 방법을 보여주는 몇 가지 예입니다.
1 2 3 4 5 6 7 8 9 10 |
|
다음은 Solid의 기본 사항에 대한 빠른 소개입니다. 시도해 보려면 아래 버튼을 클릭하여 자동으로 NetLify 및 GitHub에 복제 할 수있는 스타터 프로젝트를 만들었습니다!
[원본 텍스트에 제공되지 않은 NetLify에 배치 된 버튼은 여기에 삽입되어야합니다.]이 프로젝트는 솔리드 프로젝트의 기본 설정 과이 게시물에서 언급 한 기본 개념에 대한 예제를 포함하여 시작하는 데 도움이됩니다!
이 프레임 워크는 내가 여기에서 다루는 것보다 훨씬 많으므로 자세한 내용은 문서를 확인하십시오!
위 내용은 Solid JavaScript 라이브러리 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!