LEAA هي عبارة عن Monorepo CMS (نظام إدارة المحتوى) تم تصميمه باستخدام Nest.js و Next.js و ANT Design.
عرض README.md لكل دليل فرعي في packages . قد تحتاج إلى إلقاء نظرة على مساحات عمل الغزل أولاً.

تودوس
في الأصل ، يجب كتابة الملخص في نهاية المقالة ، لكنني أشعر أنه ينبغي طرحه ، على الأقل لا يتعين علي قراءة أزعجني حول سجلات التطوير.
اعتدت أن أظن أنني سأحاول الاتصال بـ 5 نهاية من خلال كتابة مشروع مكدس كامل بنفسي. لم يكن لدي وقت واستمرت في جره. عندما كتبت ذلك ، اعتقدت أن الأمر سيستغرق أكثر من نصف عام ، لكنني لم أتوقع أن يستغرق الأمر شهرًا ونصف فقط للقيام بذلك. كما طلبت أفضل الممارسات في العديد من الأماكن ، وعموما كنت راضيًا تمامًا.
كانت القصد الأصلي للمشروع هو استخدام React أو بشكل أساسي بناء جملة JSX للقيام بمزيد من الأشياء ، مثل كتابة البرامج أو التطبيقات المصغرة ، كما يدعم الإطار الفني الحالي فكرتي. بدأت في الذهاب على الطريق مع تجربتي السابقة وبعض التقنيات الأحدث مثل GraphQL .
لا توجد العديد من المشكلات التي واجهتها على api و dashboard و www ، ولكن miniprogram (小程序,下文简称mp) app ليس محظوظًا جدًا لأنها ليست web 语言قياسية. إنهم مثل عرض HTML 富文本، والذي يدعم web بشكل طبيعي. عليهم ، يصبحون fuckingSelf ويحتاجون إلى تحليلهم بأنفسهم ، مثل a ، لأنه لا يوجد مثل هذا a في mp و app . ما يحدث للمستخدمين النقر a هو متروك بالكامل للمطور لتحديده ، وهو ما يختلف تمامًا عن "تطبيق web " الذي طورته من قبل. إذا كان لدي خبرة في تطوير App من قبل ، أعتقد أنه سيكون هناك عدد أقل من المزالق التي تكذب.
الحديث عن المزالق ، أعتقد أن مهارات الحفر الخاصة بي مدهشة حقًا. RN شائعة لأنها تحتوي على العديد من الحفر ويعتقد أنها معروفة جيدًا. حسنًا ، اخترت ذلك. قد لا تعرف عيوب monorepo ، لكن يمكنهم بالفعل جعل الناس يموتون. حسنًا ، سأختار. لا يوجد الكثير من المزالق في تطوير RN مع TS ، ولكن هناك أيضا الكثير. حسنًا ، لقد اخترت ذلك أيضًا. ثم اخترت RN + monorepo + TS Super Big Pit (Cry) ، لكنني ما زلت مستلقيًا قليلاً بعد ذلك قليلاً ، وأنا معجب حقًا بصبرتي (نشر يدي).
لماذا تختار monorepo للتطوير؟ كانت نيتي الأصلية هي مشاركة interface TS وبعض التكوينات القابلة لإعادة الاستخدام على الجانب 5 ، ولكن في وقت لاحق عندما كتبت mp app ، وجدت أنه بسبب بعض آلياتها الخاصة ، لم أستطع مشاركتها. في الواقع ، يتم عزل mp app بالكامل عن monorepo . إذا قمت بإعادة تهيئة الكود لاحقًا ، فسوف أضع هذه "非标准web 应用" هذه بشكل منفصل في الريبو لأنها يصعب تقديمها. تحتوي node_modules أيضًا على واحدة لا يمكن مشاركتها ، وكل واحد كبير جدًا. إنه ليس المفتاح ، والمفتاح هو أنه في كل مرة يتم فيها yarn install ، فإنها ممتلئة جدًا ، ومرتفعات وحدة المعالجة المركزية ترتفع أن يكون الكمبيوتر على وشك الإقلاع. في الأصل ، أميل إلى استخدام yarn workspaces لحل mono بدون lerna ، لكن بسبب هذه المشكلة ، حاولت الحصول على lerna ، لكن يبدو أن المشكلة لا تتحسن ، لذلك كان علي الاستسلام. هذه المرة أعطيتني حقًا تجربة مع monorepo ، والتي يمكن اعتبارها ألمًا من الجسد ، كما تخبرني أيضًا كيفية اختيار mono و multi .
حسنًا ، إذا طُلب مني كتابة تصنيف صعوبة من 5 dashboard الآن ، أعتقد أنه سيكون مثل هذا mp > app > www > api >.
لماذا يتم إدراج mp كجزء أصعب؟ نظرًا لأن mp ليس لديه الكثير من السلع الخاصة ، ولكن أيضًا لدى DevTools أيضًا العديد من الأخطاء. أحيانًا أقوم بإصلاح خطأ ولكنه لا يعمل بشكل جيد لفترة طويلة ، لكنه يكفي لإعادة تشغيل DevTools. هذا حقا يجعلني يتقيأ الدم. ولأنني استخدمت Taro ، فإن العديد من الميزات الجديدة مثل custom-tab-bar لم تواكبها ولم يكن هناك وثائق. لقد اكتشفت ذلك بنفسي ، لكن الأمر استغرق الكثير من الوقت. بطبيعة الحال ، إذا كنت تستخدم Taro ولديك متطلبات custom-tab-bar ، فقد تكون leaa هي الحل الأمثل لحل GitHub الحالي في الوقت الحاضر.
بالإضافة إلى ذلك ، كان لدي الكثير لأقوله عن www ( Next.js v9) ، ولكن مع مرور الوقت ، تختفي هذه الأشياء تدريجياً. هذا النوع من "لا يريد أن يقول" ليس نوعًا من "ليس من الصعب على أولئك الذين ليسوا صعبًا" ، ولكن لأن Next.js لديها الكثير من المزالق ، فإن حل حفرة واحدة سيؤدي حتما إلى العديد من المزالق الأخرى. علاوة على ذلك ، لا توجد أفضل الممارسات التي تشير إليها. كلها example بسيطة. بمجرد أن ترغب في القيام ببعض الوظائف المعقدة ، فإن هذا النوع من "SSR" الذي يجب معالجته من قبل كل من الأطراف الأمامية والخلفية يجعل الناس يشعرون وكأنهم "مخفيين لا توصف". مع كل تغيير في إصدار Next.js مثل 8to9 ، سيكون هناك العديد من التغييرات التي تشبه الجرف. لا توجد طريقة ، ثقافة زيت مثل هذا ، ويمكنك فقط أن تريح نفسك بـ "كل التعاسة تأتي من كونها غير قوية بما فيه الكفاية."
بالنسبة إلى monorepo ، هناك العديد من الملفات التي تحتوي على "أسماء ملفات مماثلة" في مشروع. في كثير من الأحيان ، أشعر أنني غمرت بالملفات ويمكن التداخل بسهولة عند البحث عن الملفات. حتى لو استسلمت باستخدام Components/Filter/index.tsx لتسمية الملفات مع Components/Filter/Filter.tsx cmd يمكن p تحديد موقع الملف نفسه بسرعة بدلاً من الدليل ، ولكن من الصعب أيضًا التخلص من شعور "Hell".
قيل في الأصل أنه لا ينبغي علي الشكوى إذا كان بإمكاني كتابة ملخص ، ولكن يبدو الآن أنه لا تزال هناك بعض الشكاوى. في أي مكان ، من Docker إلى Api إلى UI/UX ، علمتني عملية كتابة leaa بالفعل الكثير ، ولدي فهم أعمق لهندسة البرمجيات وفتح وإغلاق المبادئ. في الماضي ، اعتقدت أن "الترميز" و "الهندسة المعمارية" كانا في الواقع نفس الشيء ، لكن هذه المرة لدي فهم أعمق.
في الوقت الحاضر ، هناك الكثير من الأخطاء leaa ، لكن هذا لا يبدو أنه يمنع الأشخاص المحتاجين من استرداد الكود المفيد لهم في leaa من خلال جيثب. هذا هو أيضا نيتي الأصلية لكتابة leaa ، أعلاه. 2019-09-17 17:01 @ Guangxi Hezhou
من GIT Commice ، يمكننا أن نرى أن سجل DEV (سجل التطوير) مكتوب الآن فقط. كان يسمى المشروع في الأصل 1d1h ، مما يعني ساعة واحدة في اليوم. أرغب في جمع التجربة السابقة لكتابة النهايات الأمامية والخلفية في وقت فراغي وأقوم بمشروع مفتوح المصدر للمدونة -> CMS -> SOHP ، بما في ذلك API / Dashboard / Website / WeChat Weapp / React Native (iOS / Android). نظرًا لأنه monorepo ، على غرار الواجهة / الإدخال ، يتم مشاركتها ، لذلك تشعر أنه أمر مناسب للغاية لبناء منصة كاملة.
في الواقع ، أردت أصلاً أن أكتب سجل التطوير هذا في وقت سابق ، لكن في الأيام الأولى ، قضيت الكثير من المشكلات التي يجب حلها ، ولم أتمكن من العثور على الوقت لكتابة السجلات. الآن أفكر في الأمر ، لا ينبغي أن يكون هكذا. بعد كل شيء ، إذا قمت بتسجيل الكثير من المشاكل من قبل ، فقد كانت في الواقع ثروة غير مرئية. على الرغم من أنني التقيت مرة أخرى ، إلا أنني سأعرف بالتأكيد كيفية حلها ، لكنني لم أستطع مشاركتها مع الآخرين. لكنني سأراجع السجلات التالية ببطء.
اسمحوا لي أن أتحدث عن فهمي للوحة القيادة هنا. أعتقد أنه يجب تضمين الحد الأدنى من لوحة القيادة.
يمكن استخدام هذه الوحدات بشكل أساسي كمدونات بعد كتابتها ، وخاصة أذونات الأدوار. إذا كان هناك متطلبات عمل ، فمن السهل جدًا تطويرها بناءً على تقليل لوحة القيادة. لقد قمت بمعالجة الأذونات في المشاريع السابقة عدة مرات ، ولكن هذه المرة هي GraphQL ، والتي تختلف قليلاً عن الراحة السابقة ، لذلك ما زلت أمضيت بعض الوقت في القذف.
لقد كتبت الكثير من التعليمات البرمجية مع nest.js ، لكن ليس من المريح النظر. سبب الاختيار هو أنني جذبت من خلال نموذجه بالكامل ودعم TypeScript المسلح للأسنان. المؤلف @kamilmysliwiec لا يزال قويا للغاية. بعض تطبيقات التعبئة والتغليف من nest.js رائعة للغاية. أهم شيء هو أيضًا مع العديد من التقنيات ونفذ العديد من سيناريوهات الأعمال. هذا رائع حقًا.
React + Antd هو اختيار تقنية شائع على dashboard . ومع ذلك ، هذه المرة ، نظرًا لأن hooks يتم إطلاقها بالكامل ، بما في ذلك Apollo ، فإن أحدث إصدارات Hooks Beta ، ويكاد يكون من المستحيل رؤيتها في المشروع بأكمله. ومع ذلك ، بعد استخدام السنانير على نطاق واسع ، يبدو الرمز قبيحًا حقًا. إذا تم تسجيل وضوح رمز الفصل 10 نقاط في الماضي ، فإن Hooks لا يمكن أن يسجل سوى 5 نقاط. بالطبع ، الشيء الأكثر وضوحًا هو كسب رمز يشارك FN. إذا كان الفصل الدراسي ، فسيكون من المقلق تمامًا مشاركة الفئة FN.
لا يوجد خيار لجزء www ، يمكن أن يكون Next.js. في الواقع ، لقد قمت بتطوير مجموعة كاملة نسبيًا من React-SSR من قبل ، ولكن من أجل التكيف مع الموجة ، ويدفع God GoLdermo إلى الأعلى وينفخها كل يوم ، لم أستطع إلا أن أشتري Next.js. عندما بدأت في كتابة WWW ، صادفت اللحاق بإصدار Next.js V9 ، وهو إصدار جديد من السفينة التي تمت إعادة كتابتها في TS منذ Core. اعتقدت أنه سيكون سلسًا جدًا للاستخدام ، لكنني لم أتوقع أن تكون خدعة ...
بعد كل شيء ، يجب دمج ANTD ، مما يعني أن رمز الصفحات الخاص بالعميل يحتاج إلى استخدام CSSModule مقابل أقل ، ولا يستخدمها ANTD ، وسيقوم الخادم برميها عندما ترى أقل. لذلك ، لا يمكن للمكون الإضافي الرسمي الذي لا يمكن أن يدير سوى ما يصل إلى 60 ٪ ، ودعم 40 ٪ المتبقي غير كافٍ. في الأصل ، مثل Next.js و CRA ، يشبه تغليف حزمة الويب. لا أريدك حقًا أن تلمس السرطان في الواجهة الأمامية ، وهو مشكلة من الدجاج المثير للضغط.
ومع ذلك ، أود أن أقول إن الإطار سوف يمنحك عدة مرات الراحة في المرحلة المبكرة من المشروع ، لذلك سوف يسبب لك عدة مرات في المرحلة الأخيرة من المشروع. هذا صحيح بالنسبة لـ CRA و Expo و Next.js ليس استثناءً ، كلاهما صناديق سوداء. ثم يجب أن أكتب 100 ٪ مع plugin في ساعتين ، أو سوف يتعثر المشروع. نظرت من خلال Github وأردت معرفة ما إذا كان هناك حل ، لكن لسوء الحظ ، لم أتمكن من العثور على الكود ذي الصلة بعد V9. يبدو أنني لا أستطيع إلا أن أتعامل مع نفسي. على الرغم من أنني معتاد جدًا على WebPack ، أضافت Next.js طبقة رقيقة من المربع الأسود إلى WebPack ، إلا أن الكتابة withPlugin لديها نوع من المغمورة في بحر غير معروف من السياق. إنها خطوة محبطة للغاية ، لكن لحسن الحظ ، تم ذلك أخيرًا في نصف ساعة. لقد ذكرت مشكلة في قراري وأغلقتها بسرعة عندما لم يتم اكتشافها. آمل أن أساعد الرجال الذين يواجهون نفس المشكلة عند البحث عن مشكلة. بعد كل شيء ، لا يزال هناك الكثير من الأشخاص الذين يحتاجون إلى next.js + antd بلا معدومة ، وخاصة في الصين.
يطير الوقت بسرعة كبيرة ، وقد مرت نصف شهر في غمضة عين. لم أكتب أي شيء جديد إلى ليا مؤخرًا. ينصب التركيز على تكامل Alibaba Cloud OSS. تريد تنفيذ مثل هذه الوظيفة:
هذه العملية صعبة للغاية ، وتتضمن بعض التفاعلات بين المحليين و OSS. علاوة على ذلك ، بسبب OSS مباشرة ، لا يتم تمرير جميع الطلبات من خلال واجهة برمجة التطبيقات وتصبح عمليات استدعاء في انتظار OSS. من الضروري التأكد من أنه لا يمكن نقل DB دون إكمال أي خطوة ، بالكاد تحقيق التعهد. في الواقع ، إذا تم التحميل من خلال واجهة برمجة التطبيقات ، تتم معالجة واجهة برمجة التطبيقات بشكل موحد ثم وضعها على OSS ، فسيكون ذلك بسيطًا وكبيرًا جدًا. أشعر بالقلق بشكل أساسي من أنه عند القيام بأنشطة معينة ، إذا تم تحميل الملفات ، فإن التزامن سيكون كبيرًا جدًا ولن يتمكن الخادم من التعافي. لذلك من الضروري منع OSS أولاً.
في الأساس انتهى www و API ولوحة القيادة. ابدأ miniprogram غدًا.
عندما قمت بتصنيف الحزمة لأول مرة ، وجدت أن React قد تمت ترقيته إلى 16.9.0. لقد عززت المجموعة التالية من Warning: componentWillMount... نظرت إلى React Changelog ووجدت أنه كان بالفعل تغييرًا كبيرًا. سيتم التخلص من lifecycle في الإصدار المستقبلي. نظرًا لأن Leaa-Dashboard يعتمد على antd ، فمن الأفضل أن تنتظر إصدار antd لإزالة هذه التحذيرات قبل الترقية. يتم قفل React حاليًا في "react": "16.8.6", "react-dom": "16.8.6" .
لقد صنعت لافتة مكدس ليا ووضعتها في الجزء العلوي من ReadMe. التقنية المستخدمة لوصف الصور أفضل بكثير من النص. اذكر أيضًا اسم Leaa . هذا هو في الواقع اسم الممثلة الفرنسية ليا سيدوس التي أحبها. لتجنب ارتفاع معدل الازدواجية ، أضفت إضافية خلف LEA. ومع ذلك ، LEAA النقطة الأكثر شيوعًا في Google هي Law Enforcement Assistance Administration وهي هيئة قضائية أمريكية (يضحك).
لقد استخدمت للتو الوبر للعثور على عدة أخطاء في المشروع. الأمر الأكثر إثارة للاهتمام هو packages/leaa-dashboard/src/pages/Permission/PermissionList/PermissionList.tsx L159 هنا ، تم تعيين printWidth للمشروع .prettierrc و max-len من .eslintrc.js تم ضبطه على 120 ، لكن الجمل الجمل لا يبلغ عن خطأ ولا يتشكل بشكل تلقائي ، لكن Eslint أخبرني أنه أكثر من 120.
اضطررت إلى إضافة eslint-disable-next-line max-len . من المحتمل جدًا أن يكون أحدهم يستخدم > والآخر هو >= . ومع ذلك ، بعد تعديل خصائص كليهما ، وجدت أن هذه ليست المشكلة. ننسى ذلك ، أضف ماكس لين أولاً. في الوقت الحاضر ، هناك مكان واحد فقط. إذا لم تكن هناك عينات كافية ، فلن أتعامل معها. سوف أتعامل مع هذه المشكلة في المستقبل.
على الرغم من أنني أهتم برمز النمط ، إلا أنني سأستخدم IDE لكتابة Marco باستخدام Keymap وتطبيق قواعد prettier و eslint للتنسيق. ولكن بعد الجمهور للمشروع ، قد يكون هناك مساهمون قادمون (لا ، لا HHHH) ، وأعتقد أنه سيكون من الأفضل توصيل نمط الكود في git commit .
عادةً ما يكون husky كافياً للمشروع ، ولكن هناك العديد من ملفات monorepo. في كل مرة git commit جميع الحزم ، سيتم eslint جميع الملفات حتماً ، لذلك من الضروري التعاون مع lint-staged لتقليل معالجة ESLINT ، والسماح فقط للملفات في مرحلة GIT بتشغيل ESLINT هذه المرة.
ومع ذلك ، يبدو أن المسؤول لم يقدم الكثير من الاقتراحات والأمثلة على Monorepo. بعد استكشافها ، وجدت أنه لم يكن مزعجًا ، لكنه لم يكن نفس الشيء غير المونوريدو. من أجل فصلها من pacakge.json ، كتبت أيضًا في ملف تكوين ، مثل هذا: تقريبًا:
module . exports = {
'packages/**/*.ts?(x)' : [ 'prettier --write' , 'eslint' , 'git add' ] ,
'packages/**/*.(css|less)' : [ 'prettier --write' , 'stylelint' , 'git add' ] ,
} ;لقد جربته وكان سريعًا جدًا. قد يستغرق الأمر بعض الوقت لمعرفة التأثير إذا كان لديك أفضل ممارسات أفضل.
حاولت Taro لحوالي ليلة واحدة ولم تشعر أنها مثالية للغاية. لماذا؟ بادئ ذي بدء ، ما أحتاجه هو React على إطار عمل小程序، وما أريده هو التطبيق ONLY . أما السبب في ذلك فقط ، سأشرح بالتفصيل لاحقًا.
بعد الاستخدام الأولي ، يشعر Taro وكأنه سيد. لديه مسؤولية شديدة ويحتاج إلى أن يكون متوافقًا مع الكثير من بيئات类小程序، مثل支付宝小程序،今日头条小程序، وما إلى ذلك ، كما أنها تحتاج إلى النظر في محرك yoga CSS غير الودي لـ RN . الفريق لا يزال صعبا للغاية. ما زلت معجبًا بها كثيرًا. يجب أن أعطي إبهام هنا. بعد ذلك ، سأتحدث عن مشاعري العامة بعد بضع ساعات.
ممتاز! وينطبق الشيء نفسه على تطوير الويب العادي ، لا يوجد شيء يمكن قوله. يدعم HRM ويدعم وحدة CSS. لا تهتم بـ webpack ، يمكنك تشغيلها فقط عن طريق الخروج. ومع ذلك ، هناك شيء واحد جدير بالذكر أنه إذا كنت تريد أن تكون متوافقًا مع RN ، فلا يمكنك استخدام taro-ui أو غيرها من LIBS لجهة خارجية. يمكنك فقط استخدام @tarojs/component المدمج. يبدو أن هذا التقييد عالق تمامًا. آمل أن يدعم taro-ui RN في أقرب وقت ممكن.
كما أنه مثالي للغاية ، وليس هناك شيء سيء. بعد الركض ، افتح أدوات تصحيح WeChat الرسمية وابحث عن الطريق بسلاسة. المأخير الوحيد هو أنه ليس من الصديق لدعم monorepo ، بالطبع هذا أمر مفهوم. هناك عدد قليل من الأشخاص الذين يستخدمون monorepo في الصين. إذا كنت تستخدمه ، فيجب عليك تخصيصه كموقف من "لديك القدرة على حل أي مشكلة في monorepo ." أركض تحت monorepo وواجهت هذه المشكلة:
can't find module : ../../../node_modules/@tarojs/taro-weapp/
هناك أيضًا بعض الأشخاص في المجتمع الذين يتحدثون عن قضايا ، مثل دعم Monorepo. مقاربي مشابه لنقوجه. يستخدمون العازف من wokesspaces narn للقيام بذلك. ومع ذلك ، فإن حلي هو الحفاظ على الوحدات النمطية المرتبطة Taro فقط تحت الحزمة الفرعية. بالنسبة لأشياء أخرى ، من الأفضل تحسين وحدات المشاركة وزيادةها:
{
"nohoist" : [ " **/@tarojs/** " ]
} ركضت بعد رؤية dev:rn في package.json . كانت النتيجة جيدة. لقد رأيت المطالبة بأن التجميع كان ناجحًا ، لكن لم يكن هناك يتبع ... ثم ذهبت إلى المستندات الرسمية ووجدته معقدًا بعض الشيء. إذن ما هو الفرق بين هذا ومحاولة القيام بمجموعة من تطور RN الأصلي وحده؟ وإذا كنت تعتمد على Taro ، فإن إصدار RN مغلق عند 0.55.4 ، يا إلهي! هذا بعيد عن رقم الإصدار الرسمي من 0.60.x يجب أن تعلم أن كل تكرار إصدار من RN هو قفزة نوعية. إذا كنت تستخدم 0.60.x ، فيمكنك أيضًا كسب Hermes على Android ، وسيتم تحسين الكفاءة بشكل كبير. شيء آخر يجعلني أشعر بالقلق هو أن استخدام RN@Taro يعني أنه يمكنك فقط استخدام UI Lib @tarojs/component ، مما يعني أنه يتعين عليك التخلي عن NativeBase و Shoutem والتي هي LIB عالية الجودة نسبيًا على RN .
حسنًا ... لتلخيص ، إذا كنت لا تفكر في توفير التكاليف والوقت ، والرغبة一套代码多处运行، فمن المستحسن التخلي عن RN@Taro . إذا كنت ترغب في التحدث عن أفضل وقت دخول ، فأعتقد أنه على الأقل taro-ui الذي يدعم RN . بالطبع ، هذه التكلفة مرتفعة للغاية ، ومن المحتمل جدًا أن يقدم المسؤول الدعم أبدًا.
حسنًا ، دعنا نعود إلى الموضوع. كانت نيتي الأصلية في استخدام Taro هي استخدام البرامج المصغرة فقط في البداية ، لذلك أعتقد أن "كل شيء على ما يرام" بالنسبة للوضع الحالي. لا تزال leaa-app RN أو expo ، بعد كل شيء ، تتم الخدعة بشكل أساسي في المشاريع السابقة (يضحك).
إنه لأمر محزن أن تسجل تجربتك في استخدام Taro أثناء النهار اليوم ...
بادئ ذي بدء ، كلما كان الشيء الأكثر إيلامًا هو أن @apollo/react-hooks و react-apollo غير مدعومون! وبعبارة أخرى ، لا يمكن استخدام حزمة أبولو الرسمية! لا يمكنك useQuery ولا تسمح حتى <Query> . إذا كنت تستخدمه ، فستبلغ عن السنانير لك Invariant Violation: Invalid hook call. والنتيجة هي أنه يمكنك كتابة تصدير apolloClient apolloClient.query() مباشرة. هذه حقا ليلة قبل التحرير!
اعتقدت في الأصل أنها كانت مريحة ، وكنت سعيدًا جدًا بالركض في وضع H5 عن طريق تصحيح الأخطاء و apolloClient لم أكن أتوقع ... ظهر وضع小程序وقال fetch is not found globally and no fetcher passed, to fix pass.... راجعت المعلومات وقالت إنه "في ترقية معينة من برنامج WeChat Mini ، تمت إزالة الجلب العالمي" ... لحسن الحظ ، وجدت على الفور WX-Apollo-Betcher الذي كتبه Predrecessor. لا يوجد سوى بضعة أسطر من المكتبة بأكملها:
return new Promise(resolve =>
wx.request({
...
complete: ({ data, statusCode, errMsg }) => resolve({...})
}))
ثم استبدله على HttpLink وتصبح fetch: wxApolloFetcher . لم أتوقع أبدًا أن يقوم WeChat بمثل هذا التحديث على غرار الجرف ، وهو عملية معقولة حقًا.
التالي هو مسألة المسار alias . تمت مناقشة القضايا الرسمية لهذا المنشور بشكل مكثف. جربته بعد قراءته ، لكن لا يوجد لديه حل. الحل هنا هو أن الحل هو أن الحل على جانب小程序ليس ، وجانب H5 جيد. هذا ... أنا monorepo بعد كل شيء ، وسيصبح محرجًا للغاية إذا لم أتمكن من مشاركة الرمز في الحزمة @leaa/common . حسنًا ، لن أستخدمها بعد الآن ، تحملها.
اعتقدت أنه كان بالفعل عذابًا بعد تجربة تطوير RN ، لكن هذه المرة ... أوه ، دعونا لا نتحدث عن ذلك بعد الآن ، ألوم التكنولوجيا التي استخدمتها جديدة جدًا (Bang).
؟ قراءة المزيد ...