المعرفة والشرط

إن جوهر أي موقع حديث أو تطبيق متصفح (مثل SPA ، أو سلطة المياه الفلسطينية ، أو أي حروف ثلاثة أخرى) هي دولتها ، أو ولايتها.


يمكننا أن نتجادل بشكل تعسفي حول أيهما أفضل - رد فعل ، Vue ، Svelte ، Angular ، يمكننا الاستمرار في استخدام jQuery ، ولكن في الواقع ليس مهمًا جدًا. هذا هو جزء من تطبيقنا الذي نراه - "عضلاته" و "جلده". ولكن الطريقة التي تفكر بها - بأي مصطلحات تعمل ، وما هي الآليات التي تستخدمها حتى لتصور في ذهنك كيف "تتدفق" البيانات في تطبيقك - كل هذا يأتي من هيكله. من مدير الدولة.


تذكر ، قبل عامين ، سئمنا جافا سكريبت ؟ الآن أرى عددًا كبيرًا من الناس قد تعبوا من مدراء الدولة. إعادة؟ نعم ، نعم و نعم . RxJS؟ جدا . MobX؟ إذا كان الأمر بسيطًا جدًا - اللعنة ، فلماذا يحتوي على صفحة trap.html في الوثائق ؟


الجواب "لماذا هو صعب للغاية بالنسبة للكثيرين" ، ولكن عليك أولاً صياغة المشكلة بدقة.


اختيار مدير الدولة - نختار طريقة التفكير. هناك العديد من الخيارات الآن ، ولكن المقاربات الأكثر شيوعًا تنقسم إلى 3 مجموعات:


  • Flux / Redux-like : مستودع عالمي مع الإجراءات والمخفضات. هناك الكثير جدا منها، ولكن أود أن أذكر مسترجع ، المستجيب ، Storeon ، غير المعلنة ، و Reatom نفسي . هذه ليست "أفضل الأفضل" ، بل "الأكثر تنوعًا". جميع الحلول من القائمة تحمل شيئًا فريدًا وغير عادي ، ويمكنك الحصول على العديد من الأفكار المثيرة للاهتمام منها.


    هذا النهج أمر حتمي في المقام الأول (Thuring-Complete) وعالمي .


  • المرصدات والأنابيب. الحلول الأكثر شعبية اليوم في هذه المجموعة هي RxJS و MobX . من الأقل شهرة - Kefir ، لحم الخنزير المقدد ، CycleJS . بالمناسبة ، يقع Svelte في هذه القائمة. جميعهم مختلفون للغاية من حيث تجربة المطور ، ولكن من وجهة نظر أساسية ، فإنهم يختلفون فقط في شيء واحد: MobX ، Svelte ، وغيرها يمكن وصفها من حيث الطوبولوجيا عن طريق الرسم البياني المعتاد "ما الذي يحفز ما" ، ولكن RxJS ليس ، الرسم البياني هو قد تظهر فيه حلقات متعددة الأبعاد و "غريبة"يحيل المرصد في المرصد. وهذا يجعلها أكثر قوة من ناحية ، وأكثر تعقيدًا من ناحية أخرى. كانت قصة مماثلة مع النص. اكتشفوا أن نظام نوعه مكتمل. الشيء الوحيد الذي تبع ذلك هو أنه يمكن أن يتجمد في خطوة التحقق ، وأضافوا حدًا زمنيًا للعمل.


    قد يبدو هذا غريبا نوعا ما، ولكن بصفة عامة هذا النوع من الحلول يميل إلى أن يكون المحلية، أو مخصصة و التعريفي - ولكن من دون قطع القدرة على استخدام المنطق التعسفي.


    , - , , , , “” . , Lodash, Ramda, io-ts. - LISP JS, — -- “”, , .


  • GraphQL . Apollo Relay — , . Falcor — GraphQL Netflix, GunDB PouchDB. , Redux, MobX, RxJS . “” GraphQL. , . 100% ( )



, . — , ; , - . .


FluxGraphQL
Observables?????

: “” “” 100% : redux- , , RxJS — . JS , , .


: - ID ID, — . (), — .



. - . , , , "state of js” .


.


.

, , . , — , . , .

— , , . , , — GraphQL . , , .

, - .


SPA , : , , SQL- ; .


Rails, , .


, , ( ) — API , .


:


  • : . , , , .
  • : statechart. — . — observables (RxJava, RxRuby, RxSwift, RxBrainfuck — ) . — - , , - .


. , , . — . , , , , — . , , - . — , .


— - , . - , . — , , , .


. , , , corrupted. : , DTO. . — LISP-. : , .


— . , — , , , — - , . , , . : - — , . , , CRDT-. — .


:


.


— , , — , , . , . , , . await getBlogPost(id), : @gql("blogPost(id){...}") class extends Component, — , .


. . ImmutableJS, Object.freeze, readonly Record & Tuple stage 1 proposal. . - shared worker.


, — , . XState , ( ), . , . .


يجب أن يكون أي تفاعل بين العالمين صريحًا ومميزًا بشكل مباشر في الشفرة ، حتى لا يحدث عن طريق الصدفة أثناء مراجعة الشفرة ، والأهم من ذلك - أن يحدث في أرض المستخدم ، وليس في المكتبات.


لا يجب عليك اختيار حلول محددة ، ولكن بالنسبة لمشروعي الجديد ، سأستخدم GraphQL + Apollo لتخزين المعرفة ، ولإدارة الدولة - Xstate + RxJS ، لحسن الحظ ، هم أصدقاء مع بعضهم البعض .


توقف عن القلق بشأن حشو كل شيء في حل واحد. انت لست بحاجة اليه.


All Articles