programing

Fluxible에서 dehyd탈수 and과 re재수화 stand는 무엇을 의미합니까?

bestprogram 2023. 2. 26. 16:23

Fluxible에서 dehyd탈수 and과 re재수화 stand는 무엇을 의미합니까?

플렉서블한 미니멀 앱으로 작업하고 있습니다.거의 모든 것이 분명해 보이지만 한가지는 탈수상태와 재수분상태의 개념이다.

클라이언트와 서버의 스토어 동기화에 필요한 것은 이해했지만, 그 이유는 알 수 없습니다.이 행은 매우 불명확합니다.

 var exposed = 'window.App=' + serialize(app.dehydrate(context)) + ';';

In server.http://https://github.com/yahoo/fluxible/tree/master/examples/react-router)

①간단한 단어 ②의 의미를 가르쳐 주시면 감사하겠습니다.

위의 답변은 훌륭하지만, 이 은유를 피자를 사용해서 조금 더 잘 설명할 수 있을 것 같습니다.<Back to The Future 2>의 다음 장면을 생각해 보십시오.

미래로 돌아가는 피자 하이드레이터 2개

이 장면에는 두 가지 중요한 요소가 있다: 건조된 피자헛 피자와 블랙&데커 수화기.비유법을 완성하기 위해 탈수기도 필요하다는 것을 잠시 무시하세요.

탈수 피자는 완전한 피자를 표현하기 위해 필요한 모든 것이지만, 포장지에 나와 있는 것처럼 "완전히 수분을 보충하지 않는 한 섭취하지 마세요."종업원이 제공하는 탈수 피자는 맛있을 것 같지만, 실제로는 그것만으로는 충분히 매력적이지 않습니다.

당신의 앱은 McFly 할머니를 위한 수화기, 피자, 피자 박스 사용설명서입니다.맥플라이 할머니가 브라우저예요.사용자가 "하프 페퍼로니/하프 그린 페퍼" 피자 페이지를 요청하면 백엔드는 건조된 피자와 블랙&데커 수화기를 보냅니다.맥플라이 할머니(브라우저)는 사용설명서를 꼼꼼히 읽어주고 피자를 수분 공급해준다.이는 사용자가 바보이고 마티 주니어처럼 수분을 공급받은 피자와 탈수된 피자의 차이를 모르거나 신경 쓰지 않기 때문에 매우 좋은 일이다.

마티 주니어: 할머니, 그냥 제 입에 (물빠진 피자) 넣어주시겠어요?

마티: (o.s) 똑똑한 척하지 마!

아직까지는 괜찮죠?지금까지의 장점:

  • 사용자는 단지 수화기를 받아 피자를 주문하기 위해 (웹서비스 xhr) 전화를 걸어야 하는 것이 아니라 첫 번째 요청으로 피자와 수화기를 통째로 받는다.
  • 웹 크롤러는 특히 멍청한 사용자로, 냉동 피자를 보는 것으로부터 그들이 필요한 모든 것을 얻을 수 있고, 할머니 맥플라이가 사용 설명서를 읽고 그것을 수화시킴으로써 피자를 상호작용하게 만들 필요가 없다.

하지만 잠깐만, 더 있어!사용자는 한 조각 또는 두 조각을 움켜쥐고 나머지 피자를 남겨두고 도망친다.그럴 때, McFly 할머니는 변경된 피자 상태를 저장하기 위한 피자 상자 사용법을 알고 있습니다.클라이언트 측에서 탈수기(표시되지 않음)에 넣어 찬장(서버)으로 반송합니다.만약 사용자가 반 페퍼로니/반 페퍼피자를 완성하기 위해 돌아왔을 때, 모든 탈수 피자/하이드레이터/할머니 과정이 다시 일어날 것이고, 이전과 마찬가지로 신선하고 그들이 만든 변화도 있을 것이다.

리뷰:

  • 탈수란 앱의 현재 상태를 추출하여 객체에 직렬화하는 것입니다.이것은 서버측 또는 클라이언트측에서 실행할 수 있습니다.
  • 재수화란 (탈수를 통해 생성된) 상태 객체를 해석하여 앱을 맛있는 인터랙티브 피자로 만드는 것입니다.
  • 서버에서 클라이언트로, 또는 클라이언트에서 서버로 어느 방향으로든 디하이드 스테이트오브젝트를 전달하면 편리합니다.

끝!하지만 사실은 그렇지 않다.

이 비유를 작동시키기 위한 비밀스러운 마법의 한 부분은 우리가 피자에 수분을 보충할 때마다 우리는 실제로 건조된 피자를 그대로 유지한다는 것입니다.결국 우리는 탈수피자와 수분이 들어간 피자를 만들고 필요에 따라 무대 뒤에서 그것들을 동기화시킵니다.Flux의 경우 앱을 구성하는 스토어 수가 아무리 많아도 가능합니다.Redx에는 최상위 스토어가 1개만 있기 때문에 이해하기 쉬울 수도 있습니다.

Fluxible에서 어플리케이션의 수분을 제거하는 것은 어플리케이션의 상태를 오브젝트로 추출하는 것을 의미합니다.앱을 다시 비우는 것은 동일한 개체를 사용하여 프로그램의 상태를 다시 주입하는 것입니다.애플리케이션 상태를 나타내는 오브젝트는 네트워크를 통해 전송하기 위해 시리얼화 가능해야 합니다.

서버에서 앱을 프리렌더하고 html을 클라이언트에 제공한 다음 클라이언트에서 앱을 리렌더하고 싶다고 합니다.만약 내 앱이 정적 데이터로만 구성되어 있다면 이것은 사소한 일일 것입니다.그러나 내 앱은 상태 저장입니다. 첫 번째 렌더링 전에 API에서 데이터를 가져와 저장합니다.서버에서 앱 상태를 추출하여 HTML과 함께 전송한 후 클라이언트에 재주입함으로써 API에 대한 두 가지 요청을 피할 수 있습니다.

탈수란 시리얼라이즈의 다른 단어이고 Rehydate는 시리얼라이즈를 해제하는 것을 의미합니다.

팽창 == (재)수분 == 탈직렬화

따라서 코드 행은 라우터 상태를 시리얼화하고 클라이언트에서 액세스할 수 있는 window.app에 개체를 할당합니다.

갱신하다

시리얼화를 사용하는 방법의 예:

사용자 개체가 있으며 요청 간에 현재 로그인한 사용자의 참조를 유지한다고 가정합니다.사용자의 ID를 가져와 세션에 저장하기만 하면 사용자를 직렬화할 수 있습니다.이는 사용자 객체의 직렬화 또는 탈수입니다.수화 또는 역직렬화를 위해 세션에서 ID를 가져와 DB에서 사용자를 찾은 후 사용자 개체를 다시 입력합니다.여기서의 목적은 메모리 사용 공간을 가능한 한 낮게 유지하는 것입니다.

유동성의 예 중 하나에서 탈수 함수는 단순히 현재 상태 이름을 반환하고 하이드레이트 함수는 상태 이름을 인수로 하여 현재 상태로 설정한다.풀스테이트 오브젝트는 서버뿐만 아니라 클라이언트에서도 이용할 수 있다고 생각합니다.따라서 전체 주를 보낼 필요가 없기 때문에 주 이름만 보냅니다.탈수 기능은 다음과 같이 간단합니다.

State.dehydrate = function(){
    return this.currentStateName;
}

언급URL : https://stackoverflow.com/questions/29824908/what-does-dehydrate-and-rehydrate-stand-for-in-fluxible