Leaa ist ein Monorepo CMS (Content Management System), das mit Nest.js, Next.js und Ant Design erstellt wurde.
Sehen Sie sich die README.md jedes Unterverzeichnisses in packages an. Möglicherweise müssen Sie sich zuerst die Garn -Arbeitsbereiche ansehen.

Todos
Ursprünglich sollte die Zusammenfassung am Ende des Artikels geschrieben werden, aber ich bin der Meinung, dass sie vorgeschlagen werden sollte. Zumindest muss ich nicht über die Entwicklungsprotokolle gelesen werden.
Früher dachte ich, ich würde versuchen, mich mit dem 5-Ende zu verbinden, indem ich selbst ein volles Stapelprojekt schreibe. Ich hatte keine Zeit und zog es weiter. Als ich es schrieb, dachte ich, es würde mehr als ein halbes Jahr dauern, aber ich hatte nicht erwartet, dass es nur eineinhalb Monate dauern würde, um es zu tun. Und ich habe auch an vielen Orten nach Best Practices gesucht, und insgesamt war ich ziemlich zufrieden.
Die ursprüngliche Absicht des Projekts bestand darin, React oder hauptsächlich JSX -Syntax zu verwenden, um mehr Dinge wie das Schreiben von Mini -Programmen oder -Apps zu tun, und das vorhandene technische Rahmen unterstützt auch meine Idee. Ich begann mit meiner früheren Erfahrung und einigen neueren Technologien wie GraphQL auf die Straße.
Es gibt nicht viele Probleme auf api , dashboard und www , aber miniprogram (小程序,下文简称mp) und app sind nicht so viel Glück, da es sich nicht um Standard web 语言handelt. Sie sind wie HTML 富文本-Rendering, die natürlich web unterstützt. Auf ihnen werden sie fuckingSelf und müssen von sich selbst analysiert werden, wie z. B. a Link, da es keinen solchen a in mp und app gibt. Was mit Benutzern passiert, klicken auf a ist ganz dem Entwickler, um sich zu entscheiden, was sich völlig von der zuvor entwickelten " web " unterscheidet. Wenn ich schon einmal Erfahrung in App -Entwicklung hätte, glaube ich, dass weniger Fallstricke zu liegen sind.
Apropos Fallstricke, ich denke, meine Fähigkeiten im Grubengraben sind wirklich erstaunlich. RN ist beliebt, weil es viele Gruben hat und als bekannt ist. Okay, ich habe es gewählt. Möglicherweise kennen Sie die Fallstricke von monorepo nicht, aber sie können die Menschen tatsächlich sterben lassen. Okay, ich werde wählen. Es gibt nicht viele Fallstricke bei der Entwicklung RN mit TS , aber es gibt auch viele. Ok, ich habe es auch gewählt. Dann habe ich mich für diese RN + monorepo + TS Super Big Pit (Cry) entschieden, aber ich legte mich nach und nach nach und nach hin und bewundere meine Geduld wirklich (verbreite meine Hände).
Warum monorepo für die Entwicklung wählen? Meine ursprüngliche Absicht war es, interface von TS und einigen wiederverwendbaren Konfigurationen auf der 5-Seite zu teilen, aber später, als ich mp und app schrieb, fand ich, dass ich sie aufgrund einiger ihrer besonderen Mechanismen nicht teilen konnte. Tatsächlich sind mp und app vollständig von monorepo isoliert. Wenn ich den Code später neu aufrefiziere, werde ich diese "非标准web 应用" separat in ein Repo einfügen, weil sie wirklich schwer zu dienen sind. node_modules haben auch eine, die nicht geteilt werden kann, und jeder ist sehr groß. Es ist nicht der Schlüssel, der Schlüssel ist, dass jedes Mal, wenn yarn install , sehr voll ist und die CPU steigt, dass der Computer kurz vor dem Start wird. Ursprünglich neige ich dazu, yarn workspaces zu verwenden, um mono ohne lerna zu lösen, aber wegen dieses Problems versuchte ich, auf lerna zu steigen, aber das Problem schien sich nicht zu verbessern, also musste ich aufgeben. Diesmal habe ich mir wirklich Erfahrungen mit monorepo gegeben, die als Schmerz aus dem Fleisch angesehen werden kann, und es hat mich auch wissen, wie man mono und multi auswählt.
OK, wenn ich jetzt gebeten würde, jetzt ein 5-seitiges Schwierigkeitsgraden zu schreiben, wäre es so, als wäre dieser mp > app > www > api > dashboard .
Warum wird mp als schwierigster Teil aufgeführt? Denn mp hat nicht nur viele private Waren, sondern auch überraschend viele Fehler. Manchmal repariere ich einen Fehler, aber es funktioniert lange nicht gut, aber es reicht aus, Devtools neu zu starten. Das lässt mich wirklich Blut erbrechen. Und weil ich Taro verwendet habe, hielten viele neue Funktionen wie custom-tab-bar nicht mit und es gab keine Dokumentation. Ich habe es alleine herausgefunden, aber es hat viel Zeit gedauert. Wenn Sie Taro verwenden und die Anforderungen an die custom-tab-bar haben, kann leaa derzeit die optimale Lösung für die vorhandene Github-Lösung sein.
Außerdem hatte ich viel über www ( Next.js v9) zu sagen, aber mit der Zeit verschwinden diese Dinge allmählich. Diese Art von "will nicht sagen" ist nicht die Art von "nicht schwierig für diejenigen, die nicht schwierig sind", aber weil Next.js zu viele Fallstricke hat, wird die Lösung einer Grube unweigerlich zu mehreren anderen Fallstricken führen. Darüber hinaus gibt es keine Best Practices, auf die Sie sich beziehen können. Sie sind alles einfache example . Sobald Sie einige komplexe Funktionen erfüllen möchten, lässt diese Art von "SSR", die sowohl von der Vorder- als auch von der Rückseite verarbeitet werden muss, wie "unaussprechlich versteckt". Mit jeder Änderung in Next.js -Version wie 8to9 wird es viele klippenartige Änderungen geben. Es gibt keine Möglichkeit, Zeits Kultur ist so, und Sie können sich nur mit "all das Unglück davon ausräumen, nicht stark genug zu sein".
Für monorepo gibt es in einem Projekt viele Dateien mit "ähnlichen Dateinamen". Oft habe ich das Gefühl, von Dateien überwältigt zu werden und kann bei der Suche nach Dateien problemlos gestört werden. Auch wenn ich mithilfe von Components/Filter/index.tsx die Dateien mit Components/Filter/Filter.tsx benennen kann, um cmd +zu finden. p kann die Datei selbst anstelle des Verzeichnisses schnell suchen, aber es ist auch schwierig, dieses Gefühl der "Dateihölle" loszuwerden.
Es wurde ursprünglich gesagt, dass ich mich nicht beschweren sollte, wenn ich eine Zusammenfassung schreiben könnte, aber jetzt scheint es, dass es immer noch einige Beschwerden gibt. Überall, von Docker über Api über UI/UX , hat mich der Prozess des Schreibens leaa in der Tat viel beigebracht, und ich habe ein tieferes Verständnis der Softwarearchitektur und der Öffnung und Schließungsprinzipien. In der Vergangenheit dachte ich, dass "Codierung" und "Architektur" tatsächlich dasselbe taten, aber diesmal habe ich ein tieferes Verständnis.
Gegenwärtig gibt es leaa viele, viele Fehler, aber dies scheint nicht zu verhindern, dass Menschen in Not den Code abrufen, der ihnen in leaa über GitHub nützlich ist. Dies ist auch meine ursprüngliche Absicht, leaa oben zu schreiben. 2019-09-17 17:01 @ Guangxi Hiszhou
Aus Git Commit können wir sehen, dass dieses Entwicklungsprotokoll (Entwicklungsprotokoll) erst jetzt geschrieben ist. Das Projekt wurde ursprünglich 1D1H bezeichnet, was eine Stunde am Tag bedeutet. Ich möchte die vorherige Erfahrung beim Schreiben von Front- und Back -Enden in meiner Freizeit sammeln und ein Open -Source -Projekt von Blogs -> CMS -> SOHP durchführen, einschließlich API / Dashboard / Website / WeChat WeApp / React Native (iOS / Android). Da es sich um einen Monorepo handelt, ähnlich wie Schnittstelle / Eintrag, werden diese geteilt. Es ist also der Ansicht, dass es eine sehr bequeme Sache ist, eine vollständige Plattform zu erstellen.
Tatsächlich wollte ich ursprünglich dieses Entwicklungsprotokoll früher schreiben, aber in den frühen Tagen verbrachte ich viele Probleme, die gelöst werden mussten, und ich konnte wirklich keine Zeit zum Schreiben von Datensätzen finden. Jetzt denke ich darüber nach, es sollte wirklich nicht so sein. Wenn ich zuvor viele Probleme aufnahm, war es tatsächlich unsichtbarer Reichtum. Obwohl ich mich wieder traf, würde ich definitiv wissen, wie ich sie lösen kann, aber ich konnte sie nicht anderen teilen. Aber ich werde die folgenden Protokolle langsam überprüfen.
Lassen Sie mich hier über mein Verständnis von Dashboard sprechen. Ich denke, ein minimal verfügbares Dashboard sollte enthalten sein.
Diese Module können im Grunde genommen als Blogs verwendet werden, nachdem sie sie geschrieben haben, insbesondere Rollenberechtigungen. Wenn es eine geschäftliche Anforderung gibt, ist es im Grunde sehr einfach, basierend auf einer solchen Minimierung des Dashboards zu entwickeln. Ich habe die Berechtigungen in früheren Projekten viele Male bearbeitet, aber diesmal ist es GraphQL, das sich etwas von der vorherigen Pastful unterscheidet. Deshalb habe ich immer noch einige Zeit zum Werfen verbracht.
Ich habe so viel Code mit nest.js geschrieben, aber es ist nicht angenehm zu berücksichtigen. Der Grund für die Wahl ist, dass ich von seinem gesamten Paradigma und der Unterstützung von Typskript, die auf die Zähne bewaffnet ist, angezogen bin. Der Autor @Kamilmysliwiec ist immer noch sehr mächtig. Einige der Verpackungsimplementierungen von Nest.js sind sehr exquisit. Das Wichtigste ist auch mit verschiedenen Technologien und hat viele Geschäftsszenarien implementiert. Das ist wirklich toll.
React + AntD ist eine gemeinsame Technologieauswahl auf dashboard . Diesmal, da hooks vollständig gestartet werden, einschließlich Apollo, den neuesten Hooks Beta -Versionen, und die Klasse im gesamten Projekt fast unmöglich zu sehen ist. Nach der Verwendung von Hooks in großem Maßstab sieht der Code jedoch wirklich hässlich aus. Wenn der Klassencode -Klarheit in der Vergangenheit 10 Punkte bewertet hat, konnten Hooks nur 5 Punkte erzielen. Natürlich ist es am offensichtlichsten, einen Codesharing -FN zu verdienen. Wenn es eine Klasse wäre, wäre es ziemlich problematisch, die Klasse FN der Klasse zu teilen.
Es gibt keine andere Wahl für www -Teil, es kann nur als nächstes sein.Js. Tatsächlich habe ich schon einmal eine relativ vollständige Reihe von React-SSR entwickelt, aber um mich an die Welle anzupassen, und der @Guillermo-Gott drückt sie jeden Tag in die Luft und bläst sie jeden Tag, ich kann als nächstes kaufen. Js. Als ich anfing, WWW zu schreiben, habe ich zufällig die Veröffentlichung von Next.js v9 einholt, eine neue Version des Schiffes, das seit Kern in TS umgeschrieben wurde. Ich dachte, es wäre sehr reibungslos zu verwenden, aber ich hatte nicht erwartet, dass es ein Trick ist ...
Schließlich muss AntD integriert werden, was bedeutet, dass der Code des eigenen Seiten des Kunden für weniger CSSModule verwenden muss, AntD ihn nicht verwendet und der Server ihn erstreckt, wenn Sie weniger sehen. Daher kann der Beamte mit weniger Plug-In nur bis zu 60% verwalten, und die verbleibende Unterstützung von 40% ist nicht ausreichend. Ursprünglich ist es wie Next.js und CRA wie das Wickeln von Webpack. Ich möchte wirklich nicht, dass Sie den Front-End-Krebs berühren, und es ist ein Ärger, Hühnchen zu braten.
Ich möchte jedoch sagen, dass ein Framework Ihnen in der frühen Phase des Projekts mehrmals die Bequemlichkeit bietet, sodass Sie in der späteren Phase des Projekts mehrmals die Schwierigkeiten haben. Dies gilt für CRA, Expo und Next.js ist keine Ausnahme, beide sind schwarze Kisten. Dann muss ich in zwei Stunden einen 100% Withlugin schreiben, sonst bleibt das Projekt hängen. Ich schaute durch Github und wollte sehen, ob es eine Lösung gab, aber leider konnte ich den entsprechenden Code kurz nach V9 nicht finden. Es scheint, dass ich mich nur selbst ficken kann. Obwohl ich mit Webpack sehr vertraut bin, hat das Withpack eine dünne Schicht Black Box hinzugefügt, und das Schreiben von Plugin hat eine Art in einem unbekannten Kontext untergetaucht. Es ist ein sehr frustrierender Schritt, aber zum Glück wurde es endlich in einer halben Stunde gemacht. Ich erwähnte ein Problem mit meiner eigenen Lösung und schloss es schnell, als es nicht entdeckt wurde. Ich hoffe, den Jungs zu helfen, die bei der Suche nach Problemen auf dasselbe Problem stoßen. Immerhin gibt es immer noch viele Menschen, die als nächstes.js + Antd mit Less brauchen, insbesondere in China.
Die Zeit fliegt so schnell und ein halber Monat ist in einem Augenblick vergangen. Ich habe in letzter Zeit nichts Neues in Leaa geschrieben. Der Fokus liegt auf der Integration von Alibaba Cloud OSS. Ich möchte eine solche Funktion implementieren:
Der Prozess ist ziemlich schwierig und beinhaltet einige Wechselwirkungen zwischen lokalem und OSS. Darüber hinaus werden aufgrund des OSS direkt alle Anfragen durch die API weitergegeben und werden auf Rückrufe auf OSS warten. Es ist notwendig, sicherzustellen, dass DB nicht ohne einen Schritt bewegt werden kann und kaum eine Idempotenz erreicht. Wenn das Hochladen durch die API durchgeführt wird, wird die API einheitlich verarbeitet und dann zu OSS gesetzt, aber sie ist einfach und sehr groß. Ich mache mir hauptsächlich Sorgen, dass bei bestimmten Aktivitäten beim Hochladen von Dateien die Parallelität sehr groß ist und der Server sich nicht wiederherstellen kann. Es ist also notwendig, zuerst OSS zu blockieren.
Grundsätzlich gingen WWW, API und Dashboard zu Ende. Beginnen Sie morgen miniprogram .
Als ich das Paket zum ersten Mal aussortierte, stellte ich fest, dass React auf 16.9.0 aktualisiert wurde. Ich habe die nächste Gruppe ähnlicher Warning: componentWillMount... Ich habe React Changelog angesehen und festgestellt, dass es sich tatsächlich um eine große Veränderung handelte. In der zukünftigen Version werden einige lifecycle verworfen. Da Leaa-Dasboard von antd abhängt, ist es besser, auf die antd Release zu warten, um diese Warnungen vor dem Upgrade zu beseitigen. Derzeit ist React in "react": "16.8.6", "react-dom": "16.8.6" .
Ich machte ein Leaa Stack -Banner und stellte es auf die Spitze von Readme. Die Technik zur Beschreibung von Bildern ist viel besser als Text. Erwähnen Sie auch den Namen Leaa . Dies ist eigentlich der Name einer französischen Schauspielerin Léa Seydoux, die ich mag. Um die hohe Duplikationsrate zu vermeiden, habe ich einen zusätzlichen A hinter Lea hinzugefügt. LEAA häufigsten Punkt bei Google ist jedoch Law Enforcement Assistance Administration eine US -Justizbehörde (Lachen).
Ich habe gerade Lint verwendet, um mehrere Fehler im Projekt zu finden. Interessanter sind Pakete/Leaa 120 Cashboard .prettierrc SRC .eslintrc.js printWidth packages/leaa-dashboard/src/pages/Permission/PermissionList/PermissionList.tsx max-len
Ich musste eslint-disable-next-line max-len hinzufügen. Es fühlt sich sehr wahrscheinlich an, dass einer von ihnen > wurde und der andere >= ist. Nachdem ich die Eigenschaften beider geändert hatte, stellte ich jedoch fest, dass dies nicht das Problem ist. Vergessen Sie es, fügen Sie zuerst Max-Len hinzu. Gegenwärtig gibt es nur einen Ort, der nur ist. Wenn es nicht genügend Exemplare gibt, werde ich mich nicht damit befassen. Ich werde in Zukunft mit diesem Problem umgehen.
Obwohl ich mit Style Code achte, werde ich die IDE verwenden, um Marco mit Keymap zu schreiben und prettier und eslint -Regeln auf Format zu wenden. Aber nach dem Projekt Public, es gibt möglicherweise Mitwirkende (nein, nein HHHH), und ich denke, es wäre besser, den Code -Stil im git commit in den Codestil einzuschließen.
Normalerweise reicht ein husky für das Projekt aus, aber es gibt so viele Monorepo -Dateien. Jedes Mal, wenn git commit , werden alle Dateien zwangsläufig eslint geblieben. Daher ist es notwendig, mit lint-staged zusammenzuarbeiten, um die ESLINT-Verarbeitung zu minimieren, und diesmal nur die Dateien in der Git-Bühne ausführen zu lassen.
Es scheint jedoch, dass der Beamte nicht zu viele Vorschläge und Beispiele für Monorepo gegeben hat. Nachdem ich es erkundet hatte, stellte ich fest, dass es nicht problematisch war, aber es war nicht so weit wie nicht-monorepo. Um von pacakge.json zu entkoppeln, habe ich sie auch in eine Konfigurationsdatei geschrieben, ungefähr so:
module . exports = {
'packages/**/*.ts?(x)' : [ 'prettier --write' , 'eslint' , 'git add' ] ,
'packages/**/*.(css|less)' : [ 'prettier --write' , 'stylelint' , 'git add' ] ,
} ;Ich habe es versucht und es war ziemlich schnell. Es kann einige Zeit dauern, um den Effekt zu kennen, wenn Sie bessere Best Practices haben.
Ich habe Taro für ungefähr eine Nacht ausprobiert und es fühlte sich nicht sehr ideal an. Warum? Zunächst brauche ich ein React auf小程序-Framework, und was ich möchte, ist ONLY Applet. Was nur ist, warum es nur ist, werde ich später im Detail erklären.
Nach der ersten Verwendung hat Taro das Gefühl, ein Meister zu sein. Er RN eine starke Verantwortung yoga muss mit zu vielen支付宝小程序类小程序Umgebungen kompatibel sein, wie今日头条小程序. Das Team ist immer noch sehr schwierig. Ich bewundere es immer noch sehr. Ich muss hier oben einen Daumen geben. Als nächstes werde ich nach ein paar Stunden über meine allgemeinen Gefühle sprechen.
Perfekt! Gleiches gilt für die normale Webentwicklung, es gibt nichts zu sagen. Unterstützt HRM und unterstützt das CSS -Modul. Ich kümmere dich nicht um webpack , du kannst es einfach ausführen, indem du dich nur anstehe. Eine Sache, die erwähnenswert ist, ist jedoch, dass Sie taro-ui oder andere UI-Libs von Drittanbietern nicht verwenden können, wenn Sie mit RN kompatibel sein möchten. Sie können nur die eingebaute @tarojs/component verwenden. Diese Einschränkung scheint ziemlich fest zu sein. Ich hoffe, taro-ui wird RN so schnell wie möglich unterstützen.
Es ist auch sehr perfekt und es gibt keine schlechte Sache. Öffnen Sie nach dem Laufen die offiziellen Wechat -Debug -Tools und steigen Sie reibungslos auf die Straße. Die einzige Fallstricke ist, dass es nicht freundlich für monorepo -Unterstützung ist, natürlich ist dies verständlich. Es gibt nur wenige Menschen, die in China monorepo verwenden. Wenn Sie es verwenden, müssen Sie es als Haltung von "Sie haben die Möglichkeit, ein Problem auf monorepo zu lösen." Ich renne unter monorepo und bin auf dieses Problem gestoßen:
can't find module : ../../../node_modules/@tarojs/taro-weapp/
Es gibt auch einige Menschen in der Gemeinde, die über Themen wie Monorepo -Unterstützung sprechen. Mein Ansatz ähnelt ihm. Sie verwenden den Nohoist von Garnwokesspaces, um dies zu tun. Meine Lösung ist es jedoch, nur Taro Module unter dem Unterpackung zu halten. Für andere Dinge ist es besser, die Aktienmodule zu verbessern und zu maximieren:
{
"nohoist" : [ " **/@tarojs/** " ]
} Ich habe es geleitet, nachdem ich dev:rn in package.json gesehen hatte. Das Ergebnis war gut. Ich sah die Aufforderung, dass die Zusammenstellung erfolgreich war, aber es gab keine Anhänger ... dann ging ich zu den offiziellen Dokumenten und fand es etwas kompliziert. Was ist der Unterschied zwischen diesem und dem Versuch, allein eine Reihe von nativen RN -Entwicklung durchzuführen? Und wenn Sie sich auf Taro verlassen, ist RN -Version auf 0.55.4 gesperrt, meine Güte! Dies ist weit von der offiziellen Versionsnummer von 0.60.x Sie sollten wissen, dass jede Version von RN ein qualitativer Sprung ist. Wenn Sie 0.60.x verwenden, können Sie auch Hermes auf Android verdienen, und die Effizienz wird erheblich verbessert. Eine andere Sache, die mich Sorgen macht, ist, dass die Verwendung RN@Taro bedeutet, dass Sie nur die UI lib @tarojs/component verwenden können, was bedeutet, dass Sie NativeBase und Shoutem die relativ hochwertige UI-Libs auf RN sind.
Nun ... zusammenfassen, wenn Sie nicht darüber nachdenken, Kosten und Zeit zu sparen und一套代码多处运行, wird empfohlen, RN@Taro aufzugeben. Wenn Sie über die beste Einstiegszeit sprechen möchten, denke ich, dass es zumindest taro-ui ist, das RN unterstützt. Natürlich sind diese Kosten zu hoch und es ist sehr möglich, dass der Beamte niemals Unterstützung leisten wird.
Ok, kehren wir zum Thema zurück. Meine ursprüngliche Absicht, Taro zu verwenden, war es, am Anfang nur für Mini -Programme zu verwenden. Ich denke, "alles ist in Ordnung" für die aktuelle Situation. leaa-app ist immer noch RN oder expo , schließlich wird der Trick im Grunde genommen in den vergangenen Projekten (lacht).
Es ist so traurig, Ihre Erfahrungen mit Taro heute tagsüber aufzuzeichnen ...
Zunächst schmerzhafter ist, dass @apollo/react-hooks und react-apollo nicht unterstützt werden! Mit anderen Worten, kann kein offizielles Apollo -Paket verwendet werden! Sie können keine useQuery und erlauben nicht einmal <Query> . Wenn Sie es verwenden, melden Sie Ihnen Haken Invariant Violation: Invalid hook call. Das Ergebnis ist, dass Sie den Export apolloClient apolloClient.query() direkt schreiben können. Dies ist wirklich eine Nacht vor der Befreiung!
Ich fand es ursprünglich bequem und war sehr glücklich, im H5 -Modus durch Debuggen und apolloClient Ich hatte nicht erwartet ...小程序wurde aufgetaucht und sagte, fetch is not found globally and no fetcher passed, to fix pass.... Ich habe die Informationen überprüft und sagte, es sei "in einem bestimmten Upgrade des WeChat Mini-Programms der globale Abruf entfernt" ... zum Glück fand ich sofort die Lib WX-APOLO-Fetcher, die von meinem Vorgänger geschrieben wurde. Es gibt nur wenige Zeilen der gesamten Bibliothek:
return new Promise(resolve =>
wx.request({
...
complete: ({ data, statusCode, errMsg }) => resolve({...})
}))
Ersetzen Sie es dann auf HttpLink und werden fetch: wxApolloFetcher . Ich habe nie erwartet, dass WeChat ein solches Update im Cliff-Stil durchführen würde, was wirklich eine vernünftige Operation ist.
Als nächstes kommt das Problem von Path alias . Die offiziellen Themen, die dieser Beitrag am stärksten diskutiert wurde. Ich habe es versucht, nachdem ich es gelesen hatte, aber es hatte immer noch keine Lösung. Die Lösung hier ist, dass die Lösung darin besteht, dass die Lösung auf小程序Seite nicht ist und H5 Seite gut ist. Das ... ich bin doch monorepo und es würde sehr peinlich werden, wenn ich den Code nicht im @leaa/common -Paket teilen kann. Ok, ich werde es nicht mehr benutzen, es tragen.
Ich dachte, es wäre schon eine Qual, nachdem ich RN -Entwicklung erlebt habe, aber diesmal ... oh, lass uns nicht mehr darüber reden, ich beschuldige die Technologie, die ich verwendet habe, ist zu neu (Knall).
? Mehr lesen ...