1.nestjsåeggjsåªä¸ªå¥½ï¼
2.ng控制台在哪
3.ng是网站完整网站什么意思?
4.ng-zorro-antd中踩过的坑
nestjsåeggjsåªä¸ªå¥½ï¼
nestjs为ä»ä¹ä¸ç«
å 为æä½ä¸ç®ä¾¿
Nest.jsæ¯ç¨äºæ建é«æä¸å¯ä¼¸ç¼©çæå¡ç«¯åºç¨ç¨åºçæ¸è¿å¼Node.jsæ¡æ¶ãæ¯æTypescriptãé¢åAOPç¼ç¨ãæ¯ætypeormãNode.jsççspringãæ建微æå¡åºç¨ã
Nest.jsæ¯ç¨äºæ建é«æä¸å¯ä¼¸ç¼©çæå¡ç«¯åºç¨ç¨åºçæ¸è¿å¼Node.jsæ¡æ¶ãæ¯æTypescriptãé¢åAOPç¼ç¨ãæ¯ætypeormãNode.jsççspringãæ建微æå¡åºç¨ã
å¹´å端æç«çææ¯æ¯ä»ä¹ï¼
æ认为çå¹´å端å¼åè æåºè¯¥ææ¡çä¸äºæ¯è¾ç«ççææ¯ä¸ç¥è¯ç¹ã
1ï¼å端æ¡æ¶åè¯è¨å±é¢
9æ份Vue3.0åå¸ï¼å£°ç§°å¯¹TypeScriptæçæ´å¥½çå¼åä½éªï¼éè¿ä»ä¸åæ¡æ¶çº§å«TSæ¯æä¸ï¼æ们å¯ä»¥çåºç¤¾åºçæ´ä¸ªé£åä»å¹´ç大家é½å»å¦ä¹ åºç¨TSï¼åæäºå¤§å®¶å¦ä½æTSç¨çæ´å¥½è¿ä¸ªæ¹åä¸æ¥äºã
æ以æ认为ä»å¹´TypeScriptçç«çç¨åº¦è¿æ¯åºè¯¥æåå¾é åçï¼æä»å¹´ä¹ä½¿ç¨TypeScriptéæäºDarukçæå¡æ¡æ¶æ¨åºäº2.0çæ¬ï¼è®©TSå¼åè æ¥ææ´å¥½çTSå¼åä½éªã
æ¥ä¸æ¥å°±æ¯ä¸¤å¤§éç£ æ¡æ¶çæ´æ°åç¨å¯¹æ¯ï¼Vue3åé¢è¯´äºä¸å¥ãèReactä¹å¨åæä¹åå¸äºReactçreleaseçæ¬ãè¿ä¸¤å¤§ä¸»æµæ¡æ¶çé¢ç¹æ´æ°ï¼ä¹è¯´æäºç¤¾åºåä½è é½å¨ä¸åæ¼åã
å¨Vue3ä¸é¤äºæ´å¥½çæ¯æTSå¤ï¼è¿æ´æ°äºCompositionAPIãèReact主è¦æ¯éä¸ç²¾åå¨å级ä½éªä¸ï¼è½ç¶æ²¡ææ°çFeatureä½æ¯æåäºå解å³äºå¾å¤ä¹åçæ¬æ½å¨çé®é¢ã
è¦è¯´åªä¸ªæç«è¿æ¯è¦ç个人å®é ç使ç¨åºæ¯åå好ï¼ä½æ¯å¹´æ¥çè¿æ²¡æå«çæ¡æ¶å¯ä»¥ä¸ä¹ä¸æã
2ï¼å¤§å端ç¸å ³ææ¯æ
ä»å¹´åºäºChromiumç微软edgeæµè§å¨ä¹å·²ç»æ¨åºãgoogleå¨web端çåå±äº§çäºå¯¹å¼åè æ·±å»çå½±åãChrome+ä¹å·²ç»åå¸å¤ä¸ªçæ¬ï¼æä¾äºä¸ç³»åçæ°ç¹æ§ï¼æ¯å¦CoreWebVitalsæ åï¼DesktopPWAçé½å¼å¾æ们å»å ³æ³¨ã
æ们说å®äºæµè§å¨ç¸å ³çé£ç¹ææ¯ä¹åï¼åèè大å端ç¸å ³çä¸äºææ¯å®è·µï¼æ¯å¦Flutterã
å¾å¤å端å¨ä»å¹´å·²ç»ä»webå¼å转å为Flutterå¼åï¼å¦ä¹ å使ç¨Dartææ¯æ¥æ建UIï¼è¿æ¯å¾å¤å¤§åçå端工ç¨å¸æ£å¨ç»åçäºæ ï¼å æ¬æçé¨é¨ä¹å¨å°è¯è¿ä¸ªäºæ ï¼ï¼è¿ä¸ªè¶å¿åºè¯¥å¨æªæ¥å å¹´è¿ä¼æç»ã
客æ·ç«¯electronå¨ä»å¹´ä¹æçé¿è¶³çè¿å±ï¼ä¸å¹´å å¤æ¬¡æ´æ°çæ¬ä¸è·¯å°äº.1.5ãéçç«æ å½±åï¼å½å å¨çº¿æè²çåä¸æ³¢å ´èµ·ãå¾å¤æ¡é¢è½¯ä»¶ï¼ç½è¯¾è½¯ä»¶é½å¨éç¨è¿ä¸ªææ¯æ¥è¿è¡å¼åï¼å¸åºä¸çå²ä½ä¹å¼å§åå¤ï¼electronææ¯å¯ä»¥è¯´å¨ä»å¹´ä¹æç«çè¶å¿ã
ç¶åæ们åççBFFå±ï¼nestjsä¾ç¶åæºï¼è¶æ¥è¶å¤ç人å¼å§è·³è¿å¦ä¹ expressåkoaå¼å§å¦ä¹ æ´ä¸°å¯çwebæ¡æ¶äºï¼æ¯å¦eggæè æçdarukï¼å¼åè å·²ç»å¨æ ¢æ ¢å½¢æå ±è¯ï¼å¨webframeworkçè·¯ä¸å¼å§è¶èµ°è¶è¿ï¼è£¸ånodejswebæå¡çæ¶ä»£å·²ç»å¼å§æ ¢æ ¢è¤ªå»ã
ä¸å¾ä¸æçè¿æserverlesså¨å端çæ®åï¼å¨å¹´å°è¾¾äºä¸ä¸ªæ°çé«æ½®ãé¿éäºï¼è ¾è®¯äºï¼å¤´æ¡äºççå½å çäºèç½ååä¹é½å¼å§å¤§ç©serverlessæ¦å¿µãä»å¯¹å æå¡å¼å§è½¬å对å¤æå¡ï¼æ®åçå¿å¤´å¾çï¼ä¹æè½å°çè¶å¿ååºæ¯ãä»å¹´çD2åæ ·ä¹æserverlessçä¸åºï¼å¯è§åéè§ç¨åº¦éæ¯å¯»å¸¸ã
3ï¼å·¥ç¨åææåä¸ªäººç´ è´¨æå
å离æ们è¿ä¸äºçæ¨å¨ç产åçææ¯ï¼æ¯å¦æ®ææç¥å¨ç¨CI/CDåpipeline管çä¸çº¿æµç¨çå ¬å¸è¶æ¥è¶å¤ï¼è¿ç§å»å¹´è¿å¯ä»¥åºå»å¹ä¸å¹çä¸è¥¿ï¼ä»å¹´ä¹éæ¥åæäºä¸çæ é åºç¡è½åï¼å¦æä¸ä¼çåå¦å¯è¦æç´§å¦ä¹ äºã
å¹´å大家é½ç¯çå槽é¢è¯å·mediumé¢ç®æ²¡ç¨ï¼èå¹´å大家å¼å§é»è®¤é¢è¯æäºå ¬å¸é½è³å°è¦å·å°mediumç¨åº¦çé¢ç®ãè¿å¯¹å¾å¤å端æ¥è¯´æ¯ä¸ä¸ªå¿æºåç´ è´¨çæåä¸è½¬åï¼å¤§å®¶å¨æ¥è§¦æ°ææ¯çåæ¶ï¼ä¹æ ¢æ ¢åç°ï¼å端æ´ä¸ªèä¸ç¯å¢çååï¼è¶æ¥è¶å¤çå ¬å¸å¯¹äººçæ´ä½ç»¼åç´ è´¨è¦æ±åé«äºã
eggjs为ä»ä¹å£ç¢ä¸å¥½è´¨éé®é¢ãeggjs为ä»ä¹å£ç¢ä¸å¥½çåå æ¯è´¨éé®é¢ï¼å 为eggjsè´¨éå·®ï¼å®ä»·é«ãå£ç¢ï¼æä¼äººå£å¤´çé¢æ¬ï¼æ³æä¼äººç议论ï¼ç¾¤ä¼çå£å¤´ä¼ 说ï¼ç¸å½äºä¸ç§å¤§ä¼å´è¾¹ç»å¸¸æèµ·çäºæ æç»ç»ã
NGå ¨å®¶æ¡¶å ¨æ 项ç®å®è·µæ»ç»Angularå¨å½å 使ç¨ç人并ä¸åå½å¤é£ä¹å¤ï¼åºæ¬é½æ¯å¤ä¼å¨ç¨ï¼ä½å ¶æ¡æ¶çææ³å´ä»å¯ä»¥ä¸ºæ们æåé´ï¼å¨æäºé®é¢æ²¡ææè·¯çæ¶åå¯ä»¥åèngç¸å ³çå¤çï¼ngå¤çæ¹å¼åæç»´ç¡®å®æ¯è¾è¶ åï¼ä½ä¹å æ¤èæ²é«å寡ãæ¬ææ¨å¨éè¿ngå ¨å®¶æ¡¶é¡¹ç®ï¼å端Angular+å端NestJS7ï¼çå®è·µæ¥æ»ç»å¯¹äºngæ¶æä¸ä¸äºäº®ç¹çå ³æ³¨ä¸æèï¼AngularåNestå¨åå端æ¡æ¶çå¤çä¸ååºä¸èï¼å¯¹æ¯èµ·æ¥æ´æåé´æä¹ã
[ç®å½ç»æ]
[ç®å½æè¿°]
æ´ä¸ªå端项ç®æ¯åºäºangularèææ¶çæçï¼å ¶åºæ¬ç®å½ç»ææ¯å¨srcçappä¸è¿è¡ç¸å ³ç»ä»¶å页é¢ç模åå¼åï¼main.tsåindex.htmlæ¯æ´ä¸ªå页åºç¨çä¸»å ¥å£ï¼æ ¹ç®å½ä¸angular.jsonç¨äºé ç½®ç¸å ³çæå ç¼è¯çç¯å¢é ç½®åæ°
[å®è·µå享]
[ç®å½ç»æ]
[ç®å½æè¿°]
å端项ç®æ¯åºäºnestjsæ¡æ¶ç大ååå°é¡¹ç®é ç½®ï¼api模å主è¦æ¯å¯¹å¤è¾åºçæ¥å£ï¼authãfiltersãguardãinterceptorsãmiddlewaresãpipesçæ¯å¯¹äºéè¦ç模åè¿è¡ç»ä¸çæ¶éå¤çï¼main.tsæ¯ä¸»å ¥å£æ件ï¼ç¨äºå¯å¨åç¸å ³é ç½®çï¼app.module.tsæ¯ç¨æ¥æ¶éææ模åçå¯¼å ¥ï¼ngåºäºæ¨¡åçæ¹å¼å¯ä»¥èµ·å°é常好çé离ææ
[å®è·µå享]
é¦å ï¼å¯¹äºæ²¡æç¨è¿ngçåå¦ç§æ®ä¸ä¸ï¼angularå ¶å®å为两个大çæ¬ï¼ä¸ä¸ªæ¯angular1.xçï¼ä¹å°±æ¯ng1ï¼ä¹å°±æ¯ç°å¨è¿æçangularjsï¼å¦ä¸ä¸ªçæ¬æ¯ng2以åççæ¬ï¼ng2ä¹å被谷ææ¶è´åï¼å®å ¨éåäºæ¡æ¶ï¼å¯ä¸å1.xç¸éç估计ä¹å°±å©é£å 个ææ³è¿å¨äºï¼æ¨¡ååãä¾èµæ³¨å ¥ãååç»å®ãMVCï¼å¯¹äº1.xæå ´è¶£çåå¦å¯ä»¥å»çVueç1.xççæ¬ï¼åºæ¬ç®æ¯ç®åççng1.xï¼Vue2ä¹åå°±ååæ¥çngåéæ¬é³äºï¼vue2主è¦æ¯ä»¥åå¸è®¢é æ¥æ¿ä»£ä¾èµæ³¨å ¥çæè·¯ï¼æ¯è¿äº...(ps:æ³çng1çæ¬çå¯ä»¥çè¿ä¸ªå°åï¼å± ç¶è¿ææ´æ°...angularjså®æ¹ä»åº)ï¼è¿éåæç主è¦æ¯Ngï¼ng8ä¹åé¤äºå¼å ¥Ivy(Ivyæ¶æå®æ¹ä»ç»)è¿ä¸ªç¼è¯æ¸²æå¨ä¹å¤ï¼å ¶å®æ¹å¨ä¸å¤§ï¼ä¸»è¦å°±æ¯å¨ä¼å以ååºé¤åæ°å»ºä¸äºapiççãNgçæºç å¾åºå¤§ï¼goggleèªç äºä¸ä¸ªbazelèªå¨åæå»ºå·¥å ·ï¼ngèªç¶ä¹æ¯é è¿ä¸ªæ建çï¼å¯¹bazelæå ´è¶£çåå¦ï¼å¯ä»¥çè¿ä¸ªGoogle软件æå»ºå·¥å ·Bazelåçå使ç¨æ¹æ³ä»ç»ï¼æè¿éå°±ä¸å±å¼ææçæºç ï¼æ´ä½çæ ¸å¿å¤§æ¡æ¶å¦ä¸ï¼
nestjsæ¯nodejsçwebåºç¨çä¸ä¸ªå¤§çéæï¼å®æåæ¯åºäºexpresså°è£ çä¸ä¸ªå端æ¡æ¶ï¼åæ¥å°æå¡ç«¯åç§ç念é½ä½¿ç¨jså®ç°äºä¸ä¸ï¼è½ç¶ä¸è½åæççæå¡ç«¯è¯è¨æ¡æ¶å¦javaçè¿è¡åª²ç¾ï¼ä½æ¯æå¡ç«¯æéè¦çä¸è¥¿åºæ¬é½å ·å¤äºï¼å¯¹äºæéæ±æ³è¦ä½¿ç¨jsæ¥å¼åå端çåå¦æ¯ä¸ªä¸éçéæ©ï¼ä¸ªäººè®¤ä¸ºç®åçbffï¼æ¯å¦æ³èªå·±æ¨¡æçå¼å个åå°æ¥æ¶è¯·æ±ï¼éæ©nodeç´æ¥åæè 使ç¨expressãkoaå°±å¯ä»¥ï¼å¯¹äºæä¸å®çä¸é´å±ç»å端å¤çï¼å¯ä»¥éç¨é¿éçeggï¼å¯¹äºå¦ä½åºäºeggæ建ä¸é´å±ï¼å¯ä»¥ççè¿ç¯æç« å¦ä½ä¸ºå¢éå®å¶èªå·±çNode.jsæ¡æ¶ï¼ï¼åºäºEggJSï¼ï¼å¯¹äºå¤§åçæå¡ç«¯ï¼å°¤å ¶æ¯å端æ¯ä»¥ng为主æ çï¼å¯ä»¥ä¼å èè使ç¨nestjsï¼å ¶æ¬¡å¯¹äºioè¾å¤è计ç®è¾å°çï¼jsæ¬èº«çç¹è´¨ï¼ï¼æè æå¡ç«¯éè¦ä¸c++é åçï¼å¤§åæå¡ç«¯åºç¨ä¹å¯ä»¥ä½¿ç¨nestãnesté»è®¤æ¯ä¸éç¨å¾®æå¡çå½¢å¼çï¼nestå°ä¸åçå¹³å°å°å¨äºä¸åçplatformä¸ï¼è¿éåªåææ®éç以express为platformçå½¢å¼ï¼å¯¹äºå欢微æå¡çåå¦ï¼å¯ä»¥å¯¹æ¯åjavaçspringcloudçåºå«ï¼è¿éå°±ä¸å表述äºï¼å ¶æ´ä½çæ ¸å¿ç»æ大è´å¦ä¸ï¼
è¿é主è¦å¨å¯¹ä¾èµæ³¨å ¥çå®ç°åä¸ä¸ªç®åçç解å享ï¼å ¶æè·¯æ¯ä¸èç¸æ¿çï¼å¯¹äºç解å端ç念çä¾èµæ³¨å ¥æå¾å¥½çç解ï¼è¿ä¹æ£æ¯å端å端åçä¸ä¸ªä½ç°ï¼ä¹æ¯ææ©çMVCæ¡æ¶ååæ¥çMVVMæ¡æ¶è¿åº¦çä¸ä¸ªåå²è¿ç¨ï¼ä¾èµæ³¨å ¥æ¹å¼å¯¹äºææ©çå端æ¡æ¶è¿æ¯æ纪念æä¹çï¼ä½æ¯å¯¹äºngå ¨å®¶æ¡¶æ¥è¯´ï¼è¿ç®æ¯å ¶åºæ¬å²å¦çä¸ä¸ªåºæ¬é¢
bAngular/b
å æ¥çä¸ä¸ngæ¯å¦ä½å®ç°injectorçï¼è¿ééç¹å¨äºä½¿ç¨äºæ½è±¡ç±»æ¥éè½½ä¸åå½æ°ç使ç¨ï¼å¯¹äºprovider循ç¯ä¾èµçå¤çï¼å©ç¨äºä¸ä¸ªMapæ°æ®ç»ææ¥åºåä¸åçProvider
bNest/b
åæ¥çä¸ä¸ï¼nestçå®ç°ï¼ä¸åäºngçå®ç°ï¼nestæ¯å©ç¨åæ°å继æ¿ç¶ç±»åæ°æ¥ç¡®å®æ´ä¸ªç循ç¯ä¾èµå ³ç³»çï¼å ¶æ²¡æ使ç¨éè½½æ¥å®ç°ï¼ä½é½å¯¹å¾ªç¯ä¾èµåäºå¤çï¼å ¶åºæ¬æè·¯æ¯ä¸è´çã
æ»ç»ï¼ä»nestång对injectorçå®ç°å¯ä»¥çåºï¼è½ç¶é½æ¯æ³¨å°å¨çå®ç°ï¼ä½æ¯ç±äºåç°æ¹å¼çä¸åï¼å èå¨å®ç°æ¹å¼ä¸ä¹ä¼ææä¸åï¼å¯¹äºtsèè¨ï¼éç¨interfaceè¿æ¯æ½è±¡ç±»ï¼ç¡®å®å¯ä»¥åé´javaç模å¼æè·¯ï¼å¯¹äºä¹ æ¯jsçæ们æ¥è¯´ï¼å¯¹äºæ´ä¸ªæ°æ®ç±»åçæ©å±ï¼å¦ï¼æ½è±¡ç±»ãæ¥å£ï¼çæ¯éè¦åå端åé´çãæ´ä½æ¥è¯´ï¼å¯¹äºä¾èµæ³¨å ¥çå®ç°æå ³é®çå°±æ¯å¨äºå¤çproviderçæ´ä¸ªä¾èµé®é¢ï¼è¿ä¸¤è é½æ¯éç¨tokençæ¹å¼æ¥åºåå¯¹å¾ å°åºæ¯å±äºåªä¸ä¸ªproviderï¼ç¶å对äºç¹æ®çç¸å ³ä¾èµå¾ªç¯çé®é¢å对åºçå¤ç
ngæ´ä¸ªçæä½ç³»å¨å½å åºç¨ç并ä¸å¹¿ï¼ä½å¹¶ä¸å¦¨ç¢å ¶ä½ä¸ºå端ç念çæ©å±å è¡è çè¿æ ·ä¸ä¸ªè§è²ï¼ä¸ªäººè®¤ä¸ºå ¶å¨é离æ§ä»¥åç³»ç»æ§æ¹é¢é½æ¯è¦ä¼äºvueåreactçï¼å è对äºç®åæ¯è¾æµè¡çå¾®å端æ¡æ¶(ps:对äºngçå¾®å端åºç¨ï¼å¯ä»¥åèè¿ç¯æç« ã第æã使ç¨Angularæé å¾®å端æ¶æçToBä¼ä¸çº§åºç¨)ï¼ä¸ªäººè§å¾å¨æ²ç®±é离çç³»ç»èåæ¹é¢ç¡®å®å¯ä»¥åé´ä¸ä¸ngçæäºæè·¯ï¼æ许æ£æ¯ç±äºè¿ä¸ªåå ï¼å®ææ¯ä¸å¤§æ¡æ¶ä¸æå ä¸tsçï¼ä¹æå¯è½æ´ä¸ªngçå¼åè æ´åæ¯ä¼ ç»ç软件工ç¨å¸ï¼å¯¹äºæ´ä¸ªå¼åè¦åå°å®ä¹æ°æ®ãå®ä¹æ¨¡åãç³»ç»è®¾è®¡ççï¼å¯¹äºå¤§å项ç®èè¨ï¼è¿æ ·ç¡®å®ä¼åå°å¾å¤å bugèéè¦éå¤ä¿®æ¹çæ¶é´ï¼ä½æ¯å¯¹äºå°å项ç®ï¼ä¸ªäººè®¤ä¸ºè¿æ¯vueæ´åéãè½ç¶å¯¹äºå½å ï¼ngåºæ¬å·²ç»å±äºææ¥é»è±äºï¼ä½æ¯å®çä¸äºç念å设计æ路确å®è¿æ¯å¼å¾åé´çï¼å¨è¿ä¸ªå å·çæ¶ä»£ï¼å大åºç¨é½å¨åçé«çº§åã大åååå±ï¼è¯´ä¸å®åªå¤©ngåå¨å½å éåå· å³°äºå¢ï¼è½ç¶å¾é¾~~åååï¼åä½å æ²¹ï¼
å大éé¸è®¾è®¡å¹è®ï¼nodeç¼ç¨å¼åææ¯çåå±è¶å¿ï¼nodeææ¯æ为webå端é¢åç主æµå¼åå·¥å ·å¯ä»¥è¯´æ¬èº«å°±æ¯ä¸ä¸ªç¾ä¸½ç误ä¼ï¼å½åè¿ä¸ªææ¯è¢«å¼ååºæ¥ä½¿ç¨çæ¶å主è¦æ¯ä¸ºäºè§£å³å端çé®é¢æåºç°çã
ä»å¤©ï¼æµåjava课ç¨å¹è®æºæå°±ä¸èµ·æ¥äºè§£ä¸ä¸nodeææ¯çåå±åç¨åæªæ¥çåå±è¶å¿ã
a)Node8è¿å ¥LTSæ¶ä»£Node.js大çååæ¯è¿å ¥Node8æ¶ä»£ï¼å®æ¯ä¸ä¸ªç¨³å®çé¿ææ¯æçæ¬(LTS)ï¼é¤äºæ§è½æåå¤ï¼è¿æ以ä¸å 个è¦ç¹ã
Async/Awaitæ¯æã
å ¶å®å¨Node.jsv7.6å°±å¯ä»¥éè¿flagæ¯æäºï¼å¨node8éç´æ¥è½å°ã
éè¿Asyncå½æ°å¯ä»¥æ´å¥½çè¿è¡å¼æ¥æµç¨æ§å¶ï¼è¿ç¦»CallbackHellã
å¨Asyncå½æ°éï¼ä½ å¯ä»¥éè¿awaitè°ç¨Promiseï¼ä»¥åéè¿coå 裹çgeneratorï¼å¯ä»¥è¯´ï¼ååæ¯å®ç¾çAsyncå½æ°ï¼ååä¹å®ç¾å ¼å®¹åç§éç代ç ï¼ç§°ä¸ºå¼æ¥ç»æ解å³æ¹æ¡ä¸ä¸ºè¿ã
ES6模åæ¯æã
éè¿vue/reactãwebpackãbabelåtypescriptçç«çåå±ï¼es6模åå¾å°äºå¹¿æ³æ®åååºç¨ï¼å¨Node.jsv8.5å¯ä»¥éè¿--experimental-modulesæ¥å¼å¯è¿ä¸ªä½éªçç¹æ§ã
å½ç¶ï¼ä½ æ³å¨Node.jsæ´æ©çæ¬é使ç¨ES6模åï¼å¯ä»¥éç¨@std/esm模åã
HTTP2æ¯æã
å¨Node.jsv8.8å°±å¼å§é»è®¤å¯ç¨äºï¼http2对æå¡å¨ç«¯æ¨éï¼å¤ééå¤ç¨çç¹æ§ï¼è½å¤æ´å¥½å°ä¸ºæµè§å¨ä¾¿å©ï¼æ¯æ§è½ä¼åçå©å¨ã
b)ä¼ä¸çº§Webå¼ååºç¡æ¡æ¶é¤äºåºç¨å¹¿æ³ç主æµWebæ¡æ¶Koaå¤ï¼Fastifyä¹æ¯ä¸ç´å²æï¼ä½è MatteoCollinaæ¯Node.jsæ ¸å¿å¼åï¼Streamæé¨ï¼æ§è½ä¼åä¸å®¶ã
FastifyåºäºSchemaä¼åï¼å¯¹æ§è½æåæå ¶ææ¾ã
ç¼å认为è¿æ¯ä¼ä¸çº§Webå¼åï¼ä»å¨è¿éç»æ们ä»ç»äº3个ç¥åæ¡æ¶ã
b1)Egg.jsé¿éå¼æºçä¼ä¸çº§Node.jsæ¡æ¶Eggåå¸2.0ï¼åºäºKoa2.xï¼å¼æ¥è§£å³æ¹æ¡ç´æ¥åºäºAsyncFunctionã
æ¡æ¶å±ä¼åä¸å«Node8带æ¥çæåå¤ï¼å¸¦æ¥%å·¦å³çæ§è½æåã
Eggéç¨çæ¯ãå¾®å æ ¸+æ件+ä¸å±æ¡æ¶ã模å¼ï¼å¯¹äºå®å¶ï¼çæï¼å¿«éå¼åæææ¾æåï¼å¦å¤å¼å¾å ³æ³¨çæ¯ç¨³å®æ§åå®å ¨ä¸ï¼ä¹æ¯æ为åºè²çã
b2)NestNestæ¯åºäºTypeScriptåExpressçä¼ä¸çº§Webæ¡æ¶ã
å¾å¤äººå¼ç©ç¬è¯´ï¼Nestæ¯åJavaå¼åæ¹å¼çï¼ç¡®å®ï¼Nestéç¨TypeScriptä½ä¸ºåºå±è¯è¨ï¼TypeScriptæ¯ES6è¶ éï¼å¯¹ç±»åæ¯æï¼é¢å对象ï¼Decorator(类似äºJavaé注解Annotation)çæ¯æã
å¨åæ³ä¸ï¼ä¿æJavaå¼åè çä¹ æ¯ï¼è½å¤å¸å¼æ´å¤äººå¿«éä¸æã
TypeScriptæ¯æå ä¹æ¯ç®åææNodeWebæ¡æ¶é½è¦åç头ç大äºï¼å¨å¹´Nestç®ä¸ªç¥å项ç®ï¼å¼å¾ä¸æã
b3)ThinkJSThinkJSæ¯ä¸æ¬¾æ¥æ±æªæ¥çNode.jsWebæ¡æ¶ï¼è´åäºéæ项ç®ä½³å®è·µï¼è§è项ç®è®©ä¼ä¸çº§å¢éå¼ååå¾æ´å ç®åï¼æ´å é«æã
ç§æ¿ç®æ´æç¨ç设计ååï¼å¨ä¿æåºè²çæ§è½åè³ç®ç代ç åæ¶ï¼æ³¨éå¼åä½éªåæç¨æ§ï¼ä¸ºWEBåºç¨å¼åæä¾å¼ºæåçæ¯æã
ThinkJSæ¯å½äº§èçWebæ¡æ¶ï¼å¨å¹´æåå¸v3çæ¬ï¼åºäºKoaå æ ¸ï¼å¨æ§è½åå¼åä½éªä¸ææ´å¥½çæåã
æ´ä½æ¥çï¼Node.jså¨ä¼ä¸Webå¼åé¢åæ¥æ¸æçï¼æ 论微æå¡ï¼è¿æ¯Apiä¸é´å±é½å¾å°äºé常好çè½å°ã
å¹´ï¼å¯ä¸éæ¾çæ¯Node.jså¨servlessä¸è¡¨ç°çä¸å¤ªå¥½ï¼ç¸å ³æ¡æ¶å®è·µåå°ã
c)ä¸å¯ä¸è§çApiä¸é´å±å端è¶æ¥è¶å¤æï¼å端æå¡åï¼ä»æ¥çå端è¦é¢ä¸´æ´å¤çææã
ä¸ä¸ªå ¸åçåºæ¯å°±æ¯å¨æå¡åæ¶æéï¼å端é¢ä¸´ç头ççé®é¢æ¯å¼æAPIï¼åå端èè°çæ¶åï¼å¤ä¸ªå端äºç¸æ¨è¯¿ï¼è¦ä¹ææ ¢ä¸çº¿è¿åº¦ï¼è¦ä¹è®©å端æ§è½åå¾æå ¶æ ¢ã
è¿åº¦æ ¢æ¾å端ï¼æ§è½å·®ä¹æ¾å端ï¼ä½è¿ä¸ªé çç该å端æ¥èä¹?Node.jsçApiä¸é´å±åºç¨å¾å¥½å°è§£å³äºè¿ä¸ªé®é¢ã
å端ä¸æ³æ¹çæ¶åï¼å®å¨ä¸è¡å°±å端èªå·±åï¼æ´çµæ´»ï¼æ´è½åºåã
éä¼ æ¥å£ï¼å¯¹äºå ç½æè éå®å ¨æ¥å£ï¼å¯ä»¥éç¨ä¸é´å±éä¼ ã
èåæ¥å£ï¼å¯¹å¼æAPIå¤çé常æ¹ä¾¿ï¼å¦æè½å¤æ¢³çmodelï¼åºåæ´å®¹æã
Mockæ¥å£ï¼éè¿Mockæ¥å£ï¼æä¾å端å¼åæçï¼å¯¹æµç¨ä¼åæææå ¶ææ¾ï¼æ¯å¦å»åªå¿å¼åçyapiå°±æ¯ä¸é¨è§£å³è¿ä¸ªé®é¢çã
é¤æ¤ä¹å¤ï¼å端å¦ææ³åä¸äºææ¯é©±å¨çäºå¿ï¼SSR(æå¡å¨ç«¯æ¸²æ)åPWA(æ¸è¿å¼Webåºç¨)ä¹æ¯é常ä¸éçéæ©ã
d)æ°é¢å(深度å¦ä¹ ãåºåé¾ç)
ng控制台在哪
ng控制台在Nginx目录下。Nginx是源码源码一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。网站完整网站其特点是源码源码占有内存少、并发能力强,网站完整网站事实上nginx的源码源码linux下mysql源码包安装并发能力在同类型的网页服务器中表现较好。其将源代码以类BSD许可证的网站完整网站形式发布,因它的源码源码稳定性、丰富的网站完整网站功能集、简单的源码源码配置文件和低系统资源的消耗而闻名。年月日,网站完整网站nginx 1..6发布。源码源码
ng是网站完整网站什么意思?
“ng”是一个缩写词,它的源码源码全称为“Angular”,是网站完整网站一种基于TypeScript的开源前端框架。Angular用于构建单页面Web应用程序,目的是将数据模型与视图分离。通过使用Angular,您可以快速、冠军信号指标源码高效地开发出具有良好用户体验的Web应用程序,因为Angular框架有很多强大的工具和功能可以助您实现自己的设计想法,例如数据绑定、表单验证、依赖注入等。
除此之外,“ng”还有一种全称为“nginx”的含义,它是一种高性能的Web服务器软件,能够担任反向代理服务器、颠峰主图源码负载均衡服务器、邮件代理服务器等多种角色。nginx由Igor Sysoev编写的,是免费的、开放源代码的,并且在许多大型Web网站中使用,例如Netflix、GitHub、WordPress等。电脑官网源码在使用nginx的过程中,您的网站将会更加稳定快速,因为nginx采用的事件驱动异步架构,使得它可以同时处理成千上万个并发连接。
“ng”还有一个意思,指的是新娘。在婚礼上,“ng”常常用来代表新娘,表示她已经步入人生新的2021云盘源码阶段。此外,“ng”还可以作为一个单独的字母使用,例如在域名中,.ng是尼日利亚的国家顶级域名,可以用于标识与这个国家相关的网站和业务。无论是哪种意义,都可以看出“ng”这个字母在不同领域中都有着不同的用途和重要性。
ng-zorro-antd中踩过的坑
在前端开发过程中,我们常常会借助阿里开源的组件库ant-design,它提供的组件功能强大,能满足大多数需求,直接使用即可,非常便捷。当然,一些公司会对此进行二次开发,以打造具有独特风格的产品。
本文将不涉及高深的技术细节,也不深入探讨底层源码,仅分享一些在项目中遇到的小问题。
表格(table)——师傅以为是组件库的bug,没想到……
不知道正在阅读本文的读者是否遇到过这样的情况:
这个空状态怎么总是和我们作对呢?为什么就不能满足我们的预期呢?其实,它偶尔也会满足我们的要求。
出现这种问题的原因实际上非常简单。回想一下,我们在删除和添加表项时,是否是这样操作的:
看起来这段代码没有问题,但要知道的是,push()和splice()这两个函数是直接在原始数组上操作的,会改变原数组。然而,它们会改变数组的引用吗?答案是:不会。
在angular的设计中,onChanges()监听的是哪种变化呢?是引用。
因此,只要我们改变引用地址,就可以解决这个问题。
这里提供的方法简单、快速、有效,非常实用。
读完本文,你是否有一种豁然开朗的感觉呢?