±à¼ÍƼö: |
ÎÄÕ·ÖÎöÁËÖÆ¶¨Ç°¶ËÐ×÷¹æ·¶£¬ÒÔ¼°ä¯ÀÀÆ÷ͳ¼ÆÊý¾Ý»ñÈ¡Óë¼¼ÊõÑ¡ÐÍ£¬Ï£Íû¿ÉÒÔΪÄúµÄѧϰ´øÀ´°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ¾ò½ð¼¼ÊõרÀ¸£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
ʲôÊǹ淶?
¹æ·¶£¬Ãû´ÊÒâÒåÉÏ£º¼´Ã÷ÎĹ涨»òÔ¼¶¨Ë׳ɵıê×¼£¬È磺µÀµÂ¹æ·¶¡¢¼¼Êõ¹æ·¶µÈ¡£¶¯´ÊÒâÒåÉÏ£ºÊÇÖ¸°´Õռȶ¨±ê×¼¡¢¹æ·¶µÄÒªÇó½øÐвÙ×÷£¬Ê¹Ä³Ò»ÐÐΪ»ò»î¶¯´ïµ½»ò³¬Ô½¹æ¶¨µÄ±ê×¼£¬È磺¹æ·¶¹ÜÀí¡¢¹æ·¶²Ù×÷.
ΪʲôÐèÒª¹æ·¶?
½µµÍгÉÔ±ÈÚÈëÍŶӵijɱ¾, ͬʱҲһ¶¨³Ì¶È±ÜÃâÍÚ¿Ó
Ìá¸ß¿ª·¢Ð§ÂÊ¡¢ÍŶÓÐ×÷ЧÂÊ, ½µµÍ¹µÍ¨³É±¾
ʵÏָ߶ÈͳһµÄ´úÂë·ç¸ñ£¬·½±ãreview, ÁíÍâÒ»·½Ãæ¿ÉÒÔÌá¸ßÏîÄ¿µÄ¿Éά»¤ÐÔ
¹æ·¶ÊÇʵÏÖ×Ô¶¯»¯µÄ»ù´¡
¹æ·¶ÊÇÒ»¸öÍŶÓ֪ʶ³ÁµíµÄÖ±½ÓÊä³ö
¹æ·¶°üº¬ÄÄЩÄÚÈÝ?
ÈçÎÄÕ±êÌ⣬ǰ¶ËÐ×÷¹æ·¶²¢²»µ¥µ¥Ö¸¡®±àÂë¹æ·¶¡¯£¬Õâ¸ö¹æ·¶Éæ¼°µ½Ç°¶Ë¿ª·¢»î¶¯µÄ·½·½ÃæÃ棬ÀýÈç´úÂë¿âµÄ¹ÜÀí¡¢Ç°ºó¶ËÐ×÷¡¢´úÂë¹æ·¶¡¢¼æÈÝÐԹ淶£»
²»½ö½öÊÇǰ¶ËÍŶÓÄÚ²¿ÐèÒªÐ×÷£¬Ò»¸öÍêÕûµÄÈí¼þÉúÃüÖÜÆÚÄÚ£¬ÎÒÃÇÐèÒªºÍ²úÆ·/Éè¼Æ¡¢ºó¶Ë(»òÕßÔÉú¿Í»§¶ËÍŶÓ)¡¢²âÊÔ½øÐÐÐ×÷,
ÎÒÃÇÐèÒª¸²¸ÇÕâЩÄÚÈÝ.
ÏÂÃæ¾Í¿ªÊ¼½éÉÜ£¬Èç¹ûÎÒÊÇǰ¶ËÍŶӵÄLeader£¬ÎÒ»áÔõÃ´ÖÆ¶¨Ç°¶Ë¹æ·¶£¬Õâ¸ö¹æ·¶ÐèÒª°üº¬ÄÄЩÄÚÈÝ
1¡¢¹¤×÷Á÷¹æ·¶
1.1 ¿ª·¢
1.1.1 °æ±¾¹æ·¶
ÏîÄ¿µÄ°æ±¾ºÅÓ¦¸Ã¸ù¾ÝijЩ¹æÔò½øÐеü´ú, ÕâÀïÍÆ¼öʹÓÃÓïÒ廯°æ±¾¹æ·¶,
ͨ¹ýÕâ¸ö¹æ·¶£¬Óû§¿ÉÒÔÁË½â°æ±¾±ä¸üµÄÓ°Ï췶Χ¡£¹æÔòÈçÏÂ:
Ö÷°æ±¾ºÅ£ºµ±Äã×öÁ˲»¼æÈÝµÄ API Ð޸ģ¬
´Î°æ±¾ºÅ£ºµ±Äã×öÁËÏòϼæÈݵŦÄÜÐÔÐÂÔö£¬
ÐÞ¶©ºÅ£ºµ±Äã×öÁËÏòϼæÈݵÄÎÊÌâÐÞÕý¡£
1.1.2 °æ±¾¿ØÖÆÏµÍ³¹æ·¶
´ó²¿·ÖÍŶӶ¼Ê¹ÓÃgit×÷Ϊ°æ±¾¿â£¬¹ÜÀíºÃ´úÂëÒ²ÊÇÒ»ÖÖѧÎÊ¡£ÓÈÆäÊÇÉæ¼°¶àÈ˲¢·¢Ð×÷¡¢ÐèÒª¹ÜÀí¶à¸öÈí¼þ°æ±¾µÄÇé¿öÏ£¬¶¨ÒåÁ¼ºÃµÄ°æ±¾¿â¹ÜÀí¹æ·¶£¬¿ÉÒÔÈôóÐÍÏîÄ¿¸üÓÐ×éÖ¯ÐÔ£¬Ò²¿ÉÒÔÌá¸ß³ÉÔ±Ð×÷ЧÂÊ.
±È½ÏÁ÷ÐеÄgit·ÖÖ§Ä£ÐÍ/¹¤×÷Á÷ÊÇgit-flow, µ«ÊǴ󲿷ÖÍŶӻá¸ù¾Ý×Ô¼ºµÄÇé¿öÖÆ¶¨×Ô¼ºµÄgit¹¤×÷Á÷¹æ·¶,
ÀýÈçÎÒÃÇÍŶӵķÖÖ§¹æ·¶
Git Óкܶ๤×÷Á÷·½·¨ÂÛ£¬ÕâЩ¹¤×÷Á÷µÄÑ¡Ôñ¿ÉÄÜÒÀÀµÓÚÏîÄ¿µÄ¹æÄ£¡¢ÏîÄ¿µÄÀàÐÍÒÔ¼°ÍŶӳÉÔ±µÄ½á¹¹.
±ÈÈçÒ»¸ö¼òµ¥µÄ¸öÈËÏîÄ¿¿ÉÄܲ»ÐèÒª¸´ÔӵķÖÖ§»®·Ö£¬ÎÒÃǵıä¸ü¶¼ÊÇÖ±½ÓÌá½»µ½
master ·ÖÖ§;
ÔÙ±ÈÈ翪ԴÏîÄ¿£¬³ýÁ˺ËÐÄÍŶӳÉÔ±£¬ÆäËû¹±Ï×ÕßÊÇûÓÐÌá½»µÄȨÏ޵쬶øÇÒÎÒÃÇÒ²ÐèÒªÒ»¶¨µÄÊÖ¶ÎÀ´ÑéÖ¤ºÍÌÖÂÛ¹±Ï׵ĴúÂëÊÇ·ñºÏÀí¡£ËùÒÔ¶ÔÓÚ¿ªÔ´ÏîÄ¿
fork ¹¤×÷Á÷¸üΪÊʺÏ.
Á˽ⳣ¼ûµÄ¹¤×÷Á÷ÓÐÀûÓÚ×éÖ¯»ò´´½¨ÊʺÏ×Ô¼ºÍŶӵŤ×÷Á÷, Ìá½»ÍŶÓÐ×÷µÄЧÂÊ:

¼òµ¥µÄ¼¯ÖÐʽ
»ùÓÚ¹¦ÄÜ·ÖÖ§µÄ¹¤×÷Á÷
Git Flow
Fork/Pull Request ¹¤×÷Á÷
1.1.3 Ìá½»ÐÅÏ¢¹æ·¶

×éÖ¯ºÃµÄÌá½»ÐÅÏ¢, ¿ÉÒÔÌá¸ßÏîÄ¿µÄÕûÌåÖÊÁ¿. ÖÁÉÙ¾ßÓÐÏÂÃæÕâЩÓŵã:
¸ñʽͳһµÄÌá½»ÐÅÏ¢ÓÐÖúÓÚ×Ô¶¯»¯Éú³ÉCHANGELOG
°æ±¾¿â²»Ö»ÊÇ´æ·Å´úÂëµÄ²Ö¿â, Ëü¼Ç¼ÏîÄ¿µÄ¿ª·¢ÈÕÖ¾, ËüÓ¦¸ÃÒªÇåÎú±í´ïÕâ´ÎÌá½»µÄ×öÁËʲô.
ÕâЩ¼Ç¼Ӧ¸Ã¿ÉÒÔ°ïÖúºóÀ´Õß¿ìËÙµØÑ§Ï°ºÍ»Ø¹Ë´úÂë, Ò²Ó¦¸Ã·½±ãÆäËûÐ×÷ÕßreviewÄãµÄ´úÂë
¹æ·¶»¯Ìá½»ÐÅÏ¢¿ÉÒÔ´Ù½øÌá½»ÕßÌá½»ÓÐÒâÒåµÄ¡¢Á£¶ÈºÏÊʵÄ'Ìá½»'. Ìá½»ÕßÒªÏëºÃÒªÔõôÃèÊöÕâ¸öÌá½»£¬ÕâÑù±»¶¯´Ù½øÁËËûÃÇÈ¥°Ñ¿ØÌá½»µÄÁ£¶È
ÉçÇøÉϱȽÏÁ÷ÐеÄÌá½»ÐÅÏ¢¹æ·¶ÊÇAngularµÄÌá½»ÐÅÏ¢¹æ·¶, ³ý´ËÖ®Í⣬ÕâЩҲºÜ²»´í:
Atom
Ember
Eslint
JQuery
ÁíÍâÕâЩ¹¤¾ß¿ÉÒÔ°ïÖúÄã¼ìÑéÌá½»ÐÅÏ¢, ÒÔ¼°Éú³ÉCHANGELOG:
conventional-changelog - ´ÓÏîÄ¿µÄÌá½»ÐÅÏ¢ÖÐÉú³ÉCHANGELOGºÍ·¢²¼ÐÅÏ¢
commitlint - ¼ìÑéÌá½»ÐÅÏ¢
commitizen - ¼òµ¥µÄÌá½»¹æ·¶ºÍÌá½»°ïÖú¹¤¾ß£¬ÍƼö
standard-changelog - angular·ç¸ñµÄÌá½»ÃüÁîÐй¤¾ß
1.2 ¹¹½¨¹æ·¶
¶ÔÓÚÍŶӡ¢»òÕßÐèҪά»¤¶à¸öÏîÄ¿³¡¾°£¬Í³Ò»µÄ¹¹½¨¹¤¾ßÁ´ºÜÖØÒª, ÕâÌ×¹¤¾ßÓ¦¸ÃÇ¿µ÷"Ô¼¶¨´óÓÚÅäÖÃ"£¬Èÿª·¢Õ߸üרעÓÚÒµÎñµÄ¿ª·¢¡£±ÊÕßÔÚ<ΪʲôҪÓÃvue-cli3?>ÎÄÕÂÖÐÌá³öÁËvue-cli3¸üÐÂÓкܶàÁÁµã£¬·Ç³£ÊʺÏ×÷ΪÍŶӹ¹½¨¹¤¾ßÁ´µÄ»ù´¡:
Ê×ÏÈÕâÀ๤¾ßÊÇÍÆ³ç'Ô¼¶¨´óÓÚÅäÖÃ'¡£¼´°´ÕÕËûÃǵĹ淶£¬¿ÉÒÔʵÏÖ¿ªÏä¼´Ó㬿ìËÙ¿ª·¢ÒµÎñ.
ÔÚÍŶÓÐ×÷ÖÐÕâµãºÜÖØÒª£¬ÎÒÃDz»ÍƼöÍŶӳÉԱȥ¹ØÐÄÓÖ³ôÓÖ³¤µÄwebpack¹¹½¨ÅäÖÃ
vue-cli3³éÀëÁËcli service²ã£¬¿ÉÒÔ¶ÀÁ¢¸üй¤¾ßÁ´¡£Ò²¾ÍÊÇ˵ÏîÄ¿µÄ¹¹½¨½Å±¾ºÍÅäÖÃÔÚÒ»¸ö¶ÀÁ¢µÄserviceÏîÄ¿ÖÐά»¤£¬¶ø²»ÊÇÏñÒÔǰһÑùÔÚÿ¸öÏîĿĿ¼Ï¶¼ÓÐwebpackÅäÖúÍÒÀÀµ.
ÕâÑù×öµÄºÃ´¦ÊǶÀÁ¢µØ¡¢¼òµ¥µØÉý¼¶Õû¸ö¹¹½¨Á´
Áé»îµÄ²å¼þ»úÖÆ¡£¶ÔÓÚÍŶӵ͍֯»¯¹¹½¨Ó¦¸Ã·â×°µ½²å¼þÖУ¬ÕâÑùÒ²¿ÉÒÔʵÏÖ¶ÀÁ¢µÄ¸üС£
ÎÒÃÇ¿ÉÒÔÑ¡ÔñµÚÈý·½CLI, µ±È»Ò²¶¨ÖÆ×Ô¼ºµÄ¹¹½¨Á´£¬°´ÕÕÉÏÃæËµµÄÕâ¸ö¹¹½¨Á´Ó¦¸ÃÓÐÒÔÏÂÌØµã:
ǿԼ¶¨£¬ÌåÏÖÍŶӵĹ淶¡£Ê×ÏÈËüÓ¦¸Ã±ÜÃâÍŶӳÉԱȥ¹ØÐÄ»ò¸ü¸Ä¹¹½¨µÄÅäÖÃϸ½Ú£¬±©Â¶×îС»¯µÄÅäÖýӿڡ£
ÁíÍâ¹¹½¨¹¤¾ß²»½ö½öÊǹ¹½¨£¬Í¨³£Ëü»¹»á¼¯³É´úÂë¼ì²é¡¢²âÊԵȹ¦ÄÜ¡£
·½±ãÉý¼¶¡£ÓÈÆäÊÇÍŶÓÐèҪά»¤¶à¸öÏîÄ¿³¡¾°, ÕâÒ»µãºÜÓÐÒâÒå
ÏÂÃæÊÇÉçÇøÉϱȽÏÁ÷ÐеĹ¹½¨¹¤¾ß. µ±È»£¬ÄãÒ²¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÍŶÓÇé¿ö¿ª·¢×Ô¼ºµÄCLI,
µ«ÊÇÏÂÃæµÄ¹¤¾ßÒÀÈ»ºÜÓвο¼¼ÛÖµ£º
create-react-app - ÁãÅäÖÿªÊ¼React¿ª·¢
vue-cli - ÁãÅäÖᢽ¥½øÔöÇ¿µÄÏîÄ¿¹¹½¨CLI
parcel - ÁãÅäÖõÄWebÓ¦Óôò°ü¹¤¾ß
Fusebox - ¸ßËÙÒ×ÓõĴò°ü¹¤¾ß
microbundle - ÁãÅäÖÃ, »ùÓÚRollup£¬ÊʺÏÓÃÓÚ´ò°ü¡®¿â¡¯
1.3 ·¢²¼¹¤×÷Á÷¹æ·¶
·¢²¼¹¤×÷Á÷Ö¸µÄÊǽ«¡®Èí¼þ³ÉÆ·¡¯¶ÔÍâ·¢²¼(Èç²âÊÔ»òÉú²ú)µÄÒ»Ì×Á÷³Ì,
½«ÕâÌ×Á÷³Ì¹æ·¶»¯ºó£¬¿ÉÒÔʵÏÖ×Ô¶¯»¯.
¾Ù¸öÀý×Ó, Ò»¸öµäÐ͵ķ¢²¼¹¤×÷Á÷ÈçÏ£º

´úÂë±ä¸ü
Ìá½»´úÂë±ä¸üµ½Ô¶³Ì°æ±¾¿â
³ÌÐòͨ¹ýCI²âÊÔ(ÀýÈçTravis±äÂÌ)
ÌáÉýpackage.jsonÖеİ汾
Éú³ÉCHANGELOG
Ìá½»package.jsonºÍCHANGELOG.mdÎļþ
´òÉÏTag
ÍÆËÍ
Èç¹ûÄã×ñÑÉÏÃæµÄ¹æ·¶£¬ÄÇô¾Í¿ÉÒÔÀûÓÃÉçÇøÉÏÏÖÓеŤ¾ßÀ´×Ô¶¯»¯Õâ¸öÁ÷³Ì.
ÕâЩ¹¤¾ßÓÐ:
1.conventional-changelog-cli
2.conventional-github-releaser
3.ʵ¼ÊÉÏ×Ô¼º¿ª·¢Ò»¸öÒ²²»ÊÇÌØ±ðÄѵÄÊÂÇé.
1.4 ³ÖÐø¼¯³É
½«ÕûÌ׿ª·¢¹¤×÷Á÷È·¶¨ÏÂÀ´Ö®ºó, ¾Í¿ÉÒÔʹÓóÖÐø¼¯³É·þÎñÀ´×Ô¶¯»¯Ö´ÐÐÕû¸öÁ÷³Ì¡£±ÈÈçÒ»¸öµäÐ͵ÄCIÁ÷³Ì:

³ÖÐø¼¯³ÉÊÇʲô£¬ÓÐʲôÒâÒåÄØ?
ÎÒÃÇÐèÒª³ÖÐø¼¯³É²ð³ÉÁ½¸ö´Ê·Ö±ðÀ´Àí½â, ʲôÊdzÖÐø? ʲôÊǼ¯³É?
³ÖÐø(Continuous), ¿ÉÒÔÀí½âΪ'Ƶ·±'»òÕß¡®Á¬ÐøÐÔ¡¯.
²»¹ÜÊdzÖÐø¼¯³É»¹ÊÇÃô½Ý¿ª·¢Ë¼Î¬¡¢¿´°å£¬¶¼ÈÏΪ¡®³ÖÐø¡¯ÊÇËüÃǵĻù´¡¡£
¾ÙÒ»¸öͨË×µÄÀý×Ó£¬±ÈÈç´úÂë¼ì²é£¬¡®³ÖÐøµÄ¡¯µÄ´úÂë¼ì²é¾ÍÊÇ´úÂëÒ»±ä¶¯(Èç±£´æ£¬»òÕßIDEʵʱ¼ì²é¡¢»òÕßÌá½»µ½°æ±¾¿âʱ)¾ÍÂíÉϼì²é´úÂ룬¶ø¡®·Ç³ÖÐø¡¯µÄ´úÂë¼ì²é¾ÍÊÇÔÚÍê³ÉËùÓбàÂëºó£¬ÔÙ½øÐмì²é¡£¶Ô±ÈÁ½Õß¿ÉÒÔ·¢ÏÖ£¬³ÖÐøÐԵĴúÂë¼ì²é¿ÉÒÔ¾¡ÔçµØ·¢ÏÖ´íÎ󣬶øÇÒ´íÎóÒ²±È½ÏÈÝÒ×Àí½âºÍ´¦Àí£¬·´Ö®·Ç³ÖÐøÐԵĴúÂë¼ì²é£¬¿ÉÄܻᷢÏÖÒ»¶ÑµÄ´íÎó£¬Ê§Ö®ºÁÀåÃýÒÔǧÀ´íÎóÏ໥ǣÁ¬£¬×îÖÕ»á±äµÃÄÑÒÔÊÕʰ¡£
¡®³ÖÐø¡¯µÄ¸ÅÄ¿ÉÒÔÓÃÓÚÈí¼þ¿ª·¢µÄ·½·½ÃæÃ棬±¾ÖÊÉϾÍÊǰѴ«Í³ÆÙ²¼Ê½µÄÈí¼þ¿ª·¢Á÷³Ì´òË飬ÐγÉÒ»¸ö¸ö¸üСµÄ¿ª·¢±Õ»·£¬³ÖÐøµØÊä³ö²úÆ·£¬Í¬Ê±²úÆ·Ò²³ÖÐøµØ¸øÉÏÓη´À¡ºÍ¾ÀÕý¡£

ÄÇʲôÊÇ¡®¼¯³É¡¯ÄØ£¿ÏÁÒåµÄ¼¯³É¿ÉÒÔ¼òµ¥ÈÏΪÊÇ¡®¼¯³É²âÊÔ¡¯°É. ¼¯³É²âÊÔ¿ÉÒÔ¶Ô´úÂ뾲̬²âÊÔ¡¢µ¥Ôª²âÊÔ¡¢Í¨¹ýµ¥Ôª²âÊÔºó¿ÉÒÔ½øÐм¯³É²âÊÔ£¬ÔÚÓ¦ÓÃ×é³ÉÒ»¸öÕûÌåºóÔÚÄ£Äâ»·¾³ÖÐÅÜE2E²âÊԵȵȡ£Ò²¾ÍÊÇ˵£¬ÔÚÕâÀï½øÐÐһϵÁеÄ×Ô¶¯»¯²âÊÔÀ´ÑéÖ¤Èí¼þϵͳ¡£
¹ãÒåµÄ³ÖÐø¼¯³É·þÎñ£¬²»½ö½öÊDzâÊÔ£¬Ëü»¹ÑÜÉú³öºÜ¶à¸ÅÄÀýÈç³ÖÐø½»¸¶¡¢³ÖÐø²¿Êð£¬ÈçÏÂͼ

OK, ×ܽáÒ»ÏÂΪʲô³ÖÐø¼¯³ÉµÄºÃ´¦:
¾¡Ôç·¢ÏÖ´íÎ󣬿ìËÙÊÔ´í¡£Ô½Ôç·¢ÏÖ´íÎ󣬴¦Àí´íÎóµÄ³É±¾Ô½µÍ
×Ô¶¯»¯¹¤×÷Á÷£¬¼õÉÙÈ˹¤¸ÉÔ¤¡£ÈËÀà±È»úÆ÷ÈÝÒ×·¸´í, ¶øÇÒ»úÆ÷Éó¤×öÖØ¸´µÄÊÂÇé
¶ÔÓÚ³ÖÐø¼¯³É¹æ·¶Ò»°ã»á¶¨ÒåÕâЩÄÚÈÝ:
Ö´ÐеĻ·¾³. ±ÈÈçÈÝÆ÷¡¢Node°æ±¾¡¢²Ù×÷ϵͳµÈµÈ
´¥·¢µÄÌõ¼þ¡£±ÈÈ綨ʱ´¥·¢¡¢ÔÚÄĸö·ÖÖ§´¥·¢¡¢»á´¥·¢Ê²Ã´ÈÎÎñµÈµÈ
Ö´ÐеÄÈÎÎñ
»®·Ö³ÖÐø¼¯³ÉµÄ½×¶Î. ±ÈÈç
¼ì²é£º°üÀ¨µ¥Ôª²âÊԺʹúÂëlint. ËùÓÐpushµ½°æ±¾¿âµÄ´úÂë¶¼»áÅÜÕâ¸ö½×¶Î.
Ò»°ã¿ÉÒÔÔÚÌá½»titleÖаüº¬[ci skip]À´Ìø¹ýÕâ¸ö½×¶Î
¹¹½¨: ¶Ôǰ¶ËÏîÄ¿½øÐй¹½¨. Ö»ÓдòÉϰ汾tagµÄÌá½»»òrelease·ÖÖ§»áÅܹ¹½¨ÈÎÎñ
·¢²¼: ½«Ç°¶ËµÄ¹¹½¨½á¹û½øÐн»¸¶/·¢²¼. Ö»ÓдòÉϰ汾tagµÄÌá½»»òÕßrelease·ÖÖ§ÔÚ¹¹½¨³É¹¦ºó»áÅÜ·¢²¼ÈÎÎñ
¶¨Òå³ÖÐø¼¯³É½Å±¾Ä£°å
³£ÓõÄCI·þÎñ:
Github
Travis CI
CircleCI
ÍêÕûÁбí
GitLab: Gitlab-CI
ͨÓÃ
Jenkins
À©Õ¹
³ÖÐø¼¯³ÉÊÇʲô
1.5 ÈÎÎñ¹ÜÀí

×÷Ϊǰ¶ËLeaderÉÙ²»ÁËÈÎÎñ¹ÜÀí¡£¿´°åÊÇĿǰ×îΪÁ÷ÐеÄÈÎÎñ¹ÜÀí¹¤¾ß£¬Ëü¿ÉÒÔ°ïÖúÎÒÃÇÁ˽âÏîÄ¿µÄ½ø¶È¡¢×ÊÔ´µÄ·ÖÅäÇé¿ö¡¢»¹Ô¿ª·¢ÏÖ³¡.
±ÊÕß±ÏÒµµÚÒ»ÄêÔÚÒ»¼ÒºÜСµÄÍâ°ü¹«Ë¾Öй¤×÷£¬³õÉúÅ£¶¿²»Å»¢£¬ÎÒ¾¹È»¸øÀϰåÍÆÏúÆðÁË¿´°åºÍÃô½ÝÏîÄ¿¹ÜÀí£¬ÏëÒª¸ÄÉÆÏîÄ¿¹ÜÀíÕâ¿éЧÂʵÍÏÂÎÊÌ⣬Àϰå±íʾºÜÖ§³Ö£¬µ«ÊÇÆäËû³ÉÔ±»ý¼«ÐÔ²¢²»¸ß,
½á¹ûµ±È»ÊÇʧ°ÜµÄ¡£
µ±Ê±»¹Æð²ÝÁËÒ»·Ý¡®¿´°åʵʩϸÔò¡¯, ËùÒÔÈÎÎñ¹ÜÀíÕâÒ»¿éÒ²ËãСÓÐÐĵðÉ.
˵˵һЩ±È½ÏºÃÓõŤ¾ß°É£º
»ùÓÚissue¿´°å - ¿ÉÒÔ»ùÓÚGitlab»òGithubµÄIssueÀ´×öÈÎÎñ¹ÜÀí£¬ËüÃǶ¼Ö§³Ö¿´°å¡£ºÜGeek£¬ÍƼö
Tower - רÃÅ×ö¿´°åÈÎÎñ¹ÜÀíµÄ¡£Ð¡ÍŶӻù±¾¹»Óá£ÎÒÃÇÏÖÔÚ¾ÍʹÓÃÕâ¿î²úÆ·
teambition - ºÍTower²î²»¶à£¬Ã»ÓÐÉîÈëʹÓùý
Trello - ÑÕÖµ¸ß.
2¡¢¼¼ÊõÕ»¹æ·¶
±ÊÕßÏÖÔÚËùÔڵĹ«Ë¾Ö®Ç°Ç°¶Ë¼¼ÊõÕ»¾Í·Ç³£»ìÂÒ£¬Vue¡¢ReactºÍAngularJSÈý´ó¿ò¼Ü¶¼ÓÐ,
¶øÇÒ·ç¸ñÏà²îÒ²ºÜ´ó. µ±Ê±ÎÒ¾ÍÏëÊÕ°ü¹ü×ßÈË. ¹ØÓÚ¼¼ÊõÕ»²»¹æ·¶µÄϳ¡¿ÉÒԲο¼Ó¡¶ÈµÄ·É»ú: <Ϊʲôӡ¶ÈµÄ·É»úƵ·±±»Ë¤£¿>
ºÜÉÙÓÐÈËÄܾ«Í¨ÕâÈý¸ö¿ò¼ÜµÄ£¬¸ü±ð˵ÊÇÒ»¸öÍŶӡ£
Èý´ó¿ò¼Ü¸ú±à³ÌÓïÑÔÒ»Ñù¶¼ÓÐ×Ô¼ºµÄÉè¼ÆÕÜѧ£¬Õâ¸ú¿âÊDz»Ò»Ñù, Ò»¸ö¿âµÄÌæ»»³É±¾ºÜµÍ£»¶ø¿ò¼ÜµÄ±³ºóÊÇÒ»¸ö¼Ü¹¹¡¢Ò»¸öÉú̬¡£Ã¿¸ö¿ò¼Ü±³ºóÇ£Éæ×Å¿ª·¢Ë¼Î¬¡¢Éú̬ϵͳ¡¢ÅäÌ×¹¤¾ß¡¢×î¼Ñʵ¼ù¡¢ÐÔÄܵ÷ÓÅ¡£Òª¾«Í¨ºÍÊìÁ·Ò»¸ö¿ò¼ÜÐèÒª¸¶³öµÄ³É±¾ÊǺܸߡ£
ËùÒÔ˵ÍŶӵĿª·¢Ð§ÂÊÊÇ»ùÓÚÎȶ¨ÇÒÊìÁ·µÄ¼¼ÊõÕ»µÄ¡£Îȶ¨µÄ¼¼ÊõÕ»¹æ·¶ÓÐÀûÓÚÍŶÓÐ×÷ºÍ¹µÍ¨;
ÁíÍâÈç¹ûÍŶӾ«Í¨Õâ¸ö¼¼ÊõÕ»£¬µ±³öÏÖÎÊÌâ»òÕßÐèÒªÉîÈëµ÷ÓÅ, »áÏà¶ÔÇáËÉ¡£
ǰ¶Ë¼¼ÊõÕ»¹æ·¶Ö÷Òª°üº¬ÏÂÃæÕâЩÀàÐÍ:
±à³ÌÓïÑÔ - Typescript»òJavascript
UI¿ò¼Ü¼°ÆäÅäÌ×Éú̬, ÒÔ¼°±¸Ñ¡·½°¸¡£Æä±³ºóµÄÉú̬·Ç³£ÅÓ´ó:
UI¿ò¼Ü
·ÓÉ
״̬¹ÜÀí
×é¼þ¿â
¹ú¼Ê»¯
¶¯»
·þÎñ¶ËäÖȾ
½ÅÊּܡ¢CLI¹¤¾ß
×é¼þ²âÊÔ
Ñùʽ. °üº¬ÁËÃüÃû¹æ·¶¡¢Ô¤´¦ÀíÆ÷¡¢·½·¨Â۵ȵÈ
¶¯»ÒýÇæ
QA. °üº¬Á˲âÊÔ¡¢Lint¡¢¸ñʽ»¯¹¤¾ß¡¢¼à¿Ø
ÏîÄ¿¹¹½¨¹¤¾ßÁ÷. ÀýÈçwebpack¡¢vue-cli
°ü¹ÜÀíÆ÷¡£npm¡¢yarn
ÏîÄ¿¹ÜÀí¹¤¾ß
ʱ¼ä´¦Àí¡£ÀýÈçMoment.js
Ä£°åÒýÇæ
¿ª·¢¹¤¾ß
ºó¶Ë¿ª·¢¿ò¼Ü
¹¤¾ß¿â
¿ª·¢/µ÷ÊÔ¹¤¾ß
µÈµÈ
¿ÉÒԲο¼Ò»ÏÂÎÒÃÇÍŶӵļ¼ÊõÕ»¹æ·¶
2.1 ¼¼ÊõÑ¡ÐÍ
ÈçºÎ´ÓÁã¶ÔÍŶӵļ¼ÊõÕ»½øÐй淶, »òÕß˵Ôõô½øÐÐÑ¡ÐÍÄØ£¿¾Ù¸öÀý×Ó,
ÏÈÈ·¶¨±¸Ñ¡Ïî, ÄãÏÖÔÚҪѡVue»¹ÊÇÑ¡React(Ò»¸ö¿ÉÄÜÒýÆðÂÛÕ½µÄÖ÷Ìâ)£¿
Ç¡ºÃǰ¼¸ÌìÔÚSegmentFault»Ø´ðÁËÒ»¸öÎÊÌâ: <ʲôʱºòÓÃvueʲôʱºòÓÃreact£¿>,
ÎÒ½²ÁËÒ»¸öÎÒÃǼ¸ÄêǰÊÇÈçºÎ¾ö¶¨ÒªÊ¹ÓÃReact»¹ÊÇVueµÄÀý×Ó(×¢Òâ½á¹û²»ÖØÒª£¡)£º

≮̸¼¼ÊõÑ¡Ð͵Ä×¢ÒâÊÂÏî>ÕâÆªÎÄÕÂдµÃ·Ç³£ºÃ£¬¸øÁËÎÒһЩÆô·¢¡£½áºÏÉÏÃæµÄ»Ø´ðµÄÀý×Ó,
À´½²Ò»½²ÔÚ¶ÔÏà¹Ø¼¼Êõ½øÐÐÑ¡Ð͵ÄһЩ·½·¨(ÆÀ·ÖÏî):
Ñ¡ÔñÄã×îÊìϤµÄ¼¼Êõ¡£ÉÏÃæËµµ½ÍŶÓÈç¹ûÊìϤ¸Ã¼¼Êõ£¬Ôò¿ÉÒԺܺõؿØÖÆÊ¹Óùý³ÌÖеķçÏÕ£¬·½±ã¶Ô³ÌÐò½øÐе÷ÓÅ¡£ËùÒÔ³ÉÔ±ÊìϤ¡¢»òÖÁÉÙLeaderÊìϤ³Ì¶È£¬ÊǼ¼ÊõÑ¡Ð͵ÄÒ»¸ö´ò·ÖÏî¡£
ÎÒÃÇÍŶÓ×îÖÕÑ¡ÔñReactµÄÒ»¸öÔÒò£¬¾ÍÊÇÎÒÃÇÊìϤËü£¬ËüÒѾÔÚÏÖÓеöÓ¦ÓÃÖÐÁ¼ºÃµÄÔËÐÐÁË£¬ËùÒÔ
React + 1
Ñ¡ÔñÓµÓÐÇ¿´óÉú̬ºÍÉçÇøÖ§³ÅµÄ¿ªÔ´¼¼Êõ¡£ÓÐÇ¿´óµÄÉú̬ºÍÉçÇøÒâζ×Å£¬ºÜ¶à¶«Î÷Äã²»ÐèÒªÖØ¸´È¥ÔìÂÖ×Ó£¬»òÕßÓöµ½ÎÊÌâ¿ÉÒԺܿì½â¾ö£¬Óиü¶àµÄÑ¡Ôñ¡£´Ó¹«Ë¾²ãÃæ¡¢Ê¹ÓûîÔ¾µÄ¼¼ÊõÒ²±È½ÏºÃÕÐÈË¡£
ÉÏÃæµÄÀý×ÓÒ²Ìáµ½ÁËÕâµã£¬¼¸ÄêǰReactµÄÉú̬ÊÇÇ¿ÓÚVueµÄ£¬ËùÒÔ
React + 1
Ñ¡Ôñ³É³¤ÆÚµÄ¼¼Êõ¡£≮̸¼¼ÊõÑ¡Ð͵Ä×¢ÒâÊÂÏî>ÀïÃæÓÐÒ»¾ä»°£º'Ñ¡ÔñÒ»¸ö¼¼ÊõµÄ×îµÍ±ê×¼ÊÇ£¬¼¼ÊõµÄÉúÃüÖÜÆÚ±ØÐëÏÔÖø³¤ÓÚÏîÄ¿µÄÉúÃüÖÜÆÚ'
ÎÒÃÇÑ¡ÔñµÄ¼¼ÊõÓ¦¸ÃÊÇÏòǰ·¢Õ¹µÄ¡¢ÃæÏòδÀ´µÄ, ÕâÊÇÑ¡Ð͵Ļù±¾ÔÔò¡£ËùÒÔÎÒÃÇÒ»°ã²»»áȥѡÔñÄÇЩ'¹ýÆø'µÄ¼¼Êõ£¬±ÈÈçAngularJS(1.x)¡¢Backbone.
ÒòΪÏÖÔÚÓиüºÃµÄÑ¡Ôñ£¬²»±Ø¹ýÓÚ±£ÊØ¡£
¡®Ïòǰ¡¯»¹Òâζ×ÅLeaderÒªÄܹ»Ô¤Åиü¼ÊõδÀ´×ßÏò£¬ÕâÀïÓкܶà²Î¿¼ÒòËØ£¬±ÈÈç´ó³§µÄÖ§³Å¡¢Ä¿Ç°ÉçÇøµÄ»îÔ¾¶È¡¢¿ª·¢»îÔ¾¶ÈµÈµÈ
React¡¢Vue¶¼·Ç³£Óж¯Á¦£¬±ÈÈçReact×î½üµÄReact Hook¡¢»¹ÓÐδÀ´µÄConcurrentMode¡¢Async
Rendering... ÔÚÕâµãÉÏVueºÍReact´ò³ÉƽÊÖ°É
APIµÄÎȶ¨ÐÔ¡£±È½ÏµäÐ͵ÄÀý×Ó¾ÍÊÇAngularºÍPython£¬API²»Îȶ¨»áµ¼ÖÂÉçÇøµÄ¸îÁÑ£¬Ò²»áµ¼ÖÂÏîÄ¿Éý¼¶³É±¾±ä¸ß¡¢»òÕßÎÞ·¨Éý¼¶,
×îÖÕ³ÉΪ¼¼ÊõÕ®¡£
²»¹ýÖµµÃÇìÐÒµÄÊÇÒòΪÓÐÕâô¶àÀúÊ·½Ìѵ£¬ÏÖÔÚ¿ªÔ´ÏîÄ¿ÔÚAPI±ä¸üÉÏÃæÊǷdz£½÷É÷µÄ£¬²Î¿¼[Òë]
Vue ×îºÚ°µµÄÒ»Ììʼþ.
ÕâµãÉÏReactºÍVueÒÀ¾É´òƽ
»ù´¡ÉèÊ©ÅäºÏ¡£Ò»¸ö¼¼ÊõÍùÍù²»ÊǹÂÁ¢´æÔڵģ¬ËüÐèÒªºÍÆäËû¼¼ÊõÏ໥ÅäºÏ£¬ÕâÖÖ¼¼ÊõÖ®¼äµÄÈں϶ÈÒ²ÊÇÐèÒª¿¼Âǵġ£
Õâ¸ö¸ù¾ÝÍŶÓʹÓÃÇé¿öÀ´¶¨£¬±ÈÈçÎÒÃÇÍŶÓͳһʹÓÃTypescript£¬Vue¸úTypescriptÅäºÏʹÓÃÆäʵ²»ÀíÏ룬ËùÒÔ
React + 1
ÒµÎñ¿¼ÂÇ ≮̸¼¼ÊõÑ¡Ð͵Ä×¢ÒâÊÂÏî> Ìáµ½Ò»µã¾ÍÊÇ¡®Ñ§»á´ÓÒµÎñ¶Ë¿ªÊ¼Ë¼¿¼¡¯.
Òâ˼¾ÍÊÇÑ¡ÐÍÐèÒª³ä·ÖµØÀí½âÒµÎñ£¬Àí½âÓû§ÐèÇ󣬵±ÏÂÐèÒª½â¾öµÄÊ×ÒªÎÊÌ⣬ÒÔ¼°¿ÉÄܵķçÏÕÓÐÄÄЩ£¬ÔÙ½«Ä¿±ê½øÐзֽ⣬½øÐоßÌåµÄ¼¼ÊõÑ¡ÐÍ¡¢Ä£ÐÍÉè¼Æ¡¢¼Ü¹¹Éè¼Æ.
Ò»¸öµäÐ͵ÄÀý×Ó¾ÍÊÇ10Äêǰ»ð±éÊÀ½çµÄRails, ºó¶ËÊÇʹÓÃRails»¹ÊÇJava/C#/PHPÕâЩ´«Í³ºó¶Ë¼¼Êõ?
ºÜ¶à³õ´´¹«Ë¾(ÈçGithub¡¢Gitlab¡¢Twitter)Ñ¡ÔñÁËǰÕߣ¬ËûÃÇÐèÒª¿ìËÙ¿ª·¢ÔÐÍ¡¢¿ìËÙÕ¼ÁìÊг¡,
Rails¿ª·¢ºÜˬºÜ¿ì°¡, ÕâÖÖÑ¡Ð;ÍÊÇ·ûºÏ¡®ÒµÎñÐèÇóµÄ¡¯¡£
ÄÇôǰ¶ËºÃÏñ¸úÒµÎñÀëµÃÓеãÔ¶? Ëæ×Å¡®´óǰ¶Ë¡¯µÄ·¢Õ¹£¬ÎÒÃǵŤ×÷¶Ô¹«Ë¾ÒµÎñµÄÓ°ÏìÖ»»áÔ½À´Ô½´ó¡£
±ÈÈçÉÏÃæÌáµ½µÄReact Native£¬ÎÒÃǵ±Ê±Óп¼ÂÇÔÚÒÆ¶¯¶ËÓ¦ÓÃReact
Native¼¼Êõ£¬ÊµÏÖ¿Í»§¶ËµÄ¿çƽ̨£¬Õâ¾ÍÊÇÒµÎñÓ°Ïì°¡¡£ÕâʱºòReactÊDz»ÊÇÓÖÒª +1? ͬÀí»¹ÓÐʲô·þÎñ¶ËäÖȾ¡¢ServerlessµÈµÈ£¬ÆÚ´ýǰ¶ËµÄµØÎ»»áÔ½À´Ô½¸ß
×ÛÉÏ£¬ÔÚÕâ¸ö°¸ÀýÖУ¬ReactÊÇʤ³öµÄ¡£
À©Õ¹:
̸̸¼¼ÊõÑ¡ÐÍ
̸̸¼¼ÊõÑ¡Ð͵Ä×¢ÒâÊÂÏî
2.2 Ó½Óм¼Êõ
µ±È»£¬¶ÔÓÚÍŶӶøÑÔÒ²Òª¹ÄÀøÑ§Ï°Ðµļ¼Êõ¡¢ÌÔ̾ɵļ¼ÊõÕ»¡£ÒòΪһ°ã¶øÑÔеļ¼Êõ»ò½â¾ö·½°¸£¬ÊÇΪÁ˸ü¸ßµÄÉú²úÁ¦¶øµ®ÉúµÄ¡£µ±ÍŶÓÈÝÄÉÒ»¸öеļ¼ÊõÑ¡ÐÍÐèÒª¿¼ÂÇÒÔϼ¸µã£º
ѧϰ³É±¾¡£¿¼ÂÇÍŶӳÉÔ±µÄ½ÓÄÉÄÜÁ¦¡£Èç¹û³É±¾Ð¡ÓÚÊÕ»ñµÄÀûÒæ£¬ÔÚÍŶÓÀïÃæÍÆÐйÀ¼Æ×èÁ¦»á±È½Ï´ó
ÊÕÒæ¡£ÊÇ·ñÄܹ»½â¾öµ±Ç°µÄijЩʹµã
¿¼ÂÇ·çÏÕ¡£Ò»°ãÎÒÃDz»Äܽ«Ò»¸öʵÑé½×¶ÎµÄ¼¼ÊõʹÓõÄÉú²ú»·¾³ÖÐ
¾ÍÎÒÃÇÍŶӶøÑÔ£¬Ã¿¸ö³ÉÔ±¶¼ÓÐ×Ô¼º¸ÐÐËȤµÄ·½ÏòºÍÁìÓò£¬ËùÒÔÎÒÃÇ¿ÉÒÔ·Ö¹¤ºÏ×÷£¬Ì½Ë÷¸÷×ÔµÄÁìÓò£¬ÔÙ½«³É¹û·ÖÏí³öÀ´£¬Èç¹û¿¿Æ×µÄ»°Ôò¿ÉÒÔÔÚʵÑéÏîÄ¿ÖÐÏÈÊÔÑéһϣ¬×îºó²ÅÍÆ¹ãµ½ÆäËûÏîÄ¿.
3¡¢ä¯ÀÀÆ÷¼æÈݹ淶
ǰ¶ËÍŶÓÓ¦¸Ã¸ù¾ÝÕë¶ÔÓ¦ÓÃËùÃæ¶ÔµÄÓû§Çé¿ö¡¢Ó¦ÓÃÀàÐÍ¡¢¿ª·¢³É±¾¡¢ä¯ÀÀÆ÷Êг¡Í³¼ÆÊý¾ÝµÈÒòËØ£¬À´Öƶ¨×Ô¼ºµÄä¯ÀÀÆ÷¼æÈݹ淶£¬²¢Ð´ÈëÓ¦ÓÃʹÓÃÊÖ²áÖÐ.
ÓÐÁËä¯ÀÀÆ÷¼æÈݹ淶£¬Ç°¶Ë¿ª·¢ºÍ¼æÈÝÐÔ²âÊÔ¾ÍÓÐÀíÓоݣ¬±ÜÃâÕùÒé; ͬʱËüÒ²ÊÇǰ¶ËÍŶӵÄÒ»ÖÖ¶ÔÍâÉùÃ÷£¬³ý·ÇÌØÊâÒªÇ󣬲»·ûºÏä¯ÀÀÆ÷¼æÈݹ淶µÄä¯ÀÀÆ÷£¬Ç°¶Ë¿ª·¢ÈËÔ±¿ÉÒÔÑ¡ÔñºöÂÔ¡£
3.1 È·¶¨¼æÈݲßÂÔ

½¥½øÔöÇ¿»¹ÊÇÓÅÑŽµ¼¶. ÕâÊÇÁ½¸ö²»Í¬·½Ïò²ßÂÔ£¬½¥½øÔöÇ¿±£Ö¤µÍ°æ±¾ä¯ÀÀÆ÷µÄÌåÑ飬¶ÔÓÚÖ§³ÖÐÂÌØÐÔµÄÐÂä¯ÀÀÆ÷ÌṩÉԺõÄÌåÑ飻ÓÅÑŽµ¼¶ÔòÊÇÏà·´µÄ£¬ÎªÏÖ´úä¯ÀÀÆ÷Ìṩ×îºÃµÄÌåÑ飬¶ø¾Éä¯ÀÀÆ÷ÔòÍ˶øÇóÖ®´Î£¬±£Ö¤´ó¸ÅµÄ¹¦ÄÜ.
Ñ¡Ôñ²»Í¬µÄ²ßÂÔ¶Ôǰ¶Ë¿ª·¢µÄÓ°ÏìÊDZȽϴóµÄ£¬µ«ÊÇ¿ª·¢ÕßûÓÐÑ¡ÔñȨ¡£È·¶¨ÄÄÖÖ¼æÈݲßÂÔ£¬Ó¦¸ÃÈ¡¾öÓÚÓû§±ÈÖØ£¬Èç¹û´ó²¿·ÖÓû§Ê¹ÓõÄÊÇÏÖ´úä¯ÀÀÆ÷£¬¾ÍÓ¦¸ÃʹÓÃÓÅÑŽµ¼¶£¬·´Ö®Ñ¡Ôñ½¥½øÔöÇ¿.
3.2 È·¶¨ä¯ÀÀÆ÷·Ö¼¶

YUI¾ÍÔøÌá³öä¯ÀÀÆ÷·Ö¼¶ÔÔò£¬µ½½ñÌìÕâ¸öÔÔòÒÀÈ»ÊÊÓ᣼òµ¥Ëµ¾ÍÊǽ«ä¯ÀÀÆ÷»®·ÖΪ¶à¸öµÈ¼¶£¬²»Í¬µÈ¼¶±íʾ²»Í¬µÄÖ§³Ö³Ì¶È.
±ÈÈçÎÒÃÇÍŶӾͽ«ä¯ÀÀÆ÷»®·ÖΪÒÔÏÂÈý¸öµÈ¼¶:
ÍêÈ«¼æÈÝ: ±£Ö¤°Ù·Ö°Ù¹¦ÄÜÕý³£
²¿·Ö¼æÈÝ: Ö»Äܱ£Ö¤¹¦ÄÜ¡¢ÑùʽÓëÐèÇó´óÖÂÒ»Ö¡£¶ÔÓÚһЩ²»Ó°ÏìÖ÷ÌåÐèÇóºÍ¹¦ÄܵÄbug£¬»á×ö½µµÍÓÅÏȼ¶´¦Àí»òÕß²»´¦Àí¡£
²»¼æÈÝ: ²»¿¼ÂǼæÈÝÐÔ
Ò»°ã¶øÑÔ, ¸ù¾Ýä¯ÀÀÆ÷Êг¡·Ö²¼Çé¿ö¡¢Óû§Õ¼±È¡¢¿ª·¢³É±¾µÈÒòËØ»®·ÖµÈ¼¶.
¾Ù¸öÀý×Ó£¬ÏÂÃæÊÇÎÒÃǶԹÜÀíϵͳµÄ¼æÈݹ淶:

3.3 »ñȡͳ¼ÆÊý¾Ý

°Ù¶Èͳ¼ÆÊÇÖÐÎÄÍøÕ¾Ê¹ÓÃ×îΪ¹ã·ºµÄ¡¢Ãâ·ÑµÄÁ÷Á¿·ÖÎöƽ̨. ÈçÉÏͼ£¬Í¨¹ýÕâЩͳ¼ÆÆ½Ì¨¿ÉÒÔ»ñÈ¡µ½ÖÕ¶ËÕæÊµµÄä¯ÀÀÆ÷ʹÓÃÇé¿ö,
µã»÷²é¿´Ê¾Àý¡£
Èç¹û¹«Ë¾Ã»Óпª·¢×Ô¼º¼à¿Ø·þÎñ£¬»¹Êǽ¨ÒéʹÓÃÕâЩÃâ·ÑµÄ£¬Óдó³§Ö§³ÖµÄ¼à¿Ø¹¤¾ß:
°Ù¶Èͳ¼Æ
ÓÑÃË
Google Analytics ÐèÒªkxÉÏÍø
¿ÉÒÔ´ÓÕâЩµØ·½»ñȡͨÓõÄä¯ÀÀÆ÷ͳ¼ÆÊý¾Ý:
°Ù¶ÈÁ÷Á¿Ñо¿Ôº£ºÖ÷ÒªÌṩ¹úÄÚä¯ÀÀÆ÷ͳ¼Æ
statcounter: ¹ú¼Êä¯ÀÀÆ÷ͳ¼Æ
ä¯ÀÀÆ÷·¢²¼Äê·Ýͳ¼Æ
È·¶¨ä¯ÀÀÆ÷ÊÇ·ñÖ§³Öij¸öÌØÐÔ:
caniuse
MDN
4¡¢ÏîÄ¿×éÖ¯¹æ·¶
ÏîÄ¿×éÖ¯¹æ·¶¶¨ÒåÁËÈçºÎ×éÖ¯Ò»¸öǰ¶ËÏîÄ¿, ÀýÈçÏîÄ¿µÄÃüÃû¡¢ÏîÄ¿µÄÎļþ½á¹¹¡¢°æ±¾ºÅ¹æ·¶µÈµÈ¡£ÓÈÆä¶ÔÓÚ¿ªÔ´ÏîÄ¿£¬¹æ·¶»¯µÄÏîÄ¿×éÖ¯¾Í¸üÖØÒªÁË¡£
4.1 ͨÓõÄÏîÄ¿×éÖ¯¹æ·¶
Ò»¸öµäÐ͵ÄÏîÄ¿×éÖ¯¹æ·¶ÈçÏÂ:
README.md: ÏîĿ˵Ã÷, Õâ¸öÊÇ×îÖØÒª¡£Äã±ØÐëÔÚÕâÀïÌṩ¹ØÓÚÏîÄ¿µÄ¹Ø¼üÐÅÏ¢»òÕßÏà¹ØÐÅÏ¢µÄÈë¿Ú.
Ò»°ã°üº¬ÏÂÁÐÐÅÏ¢:
¼òÒªÃèÊö¡¢ÏîÄ¿Ö÷ÒªÌØÐÔ
ÔËÐл·¾³/ÒÀÀµ¡¢°²×°ºÍ¹¹½¨¡¢²âÊÔÖ¸ÄÏ
¼òµ¥Ê¾Àý´úÂë
Îĵµ»òÎĵµÈë¿Ú, ÆäËû°æ±¾»òÏà¹Ø×ÊÔ´Èë¿Ú
ÁªÏµ·½Ê½¡¢ÌÖÂÛȺ
Ðí¿É¡¢¹±Ï×/¿ª·¢Ö¸ÄÏ
CHANGELOG.md: ·ÅÖÃÿ¸ö°æ±¾µÄ±ä¶¯ÄÚÈÝ, ͨ³£ÒªÃèÊöÿ¸ö°æ±¾±ä¸üµÄÄÚÈÝ¡£·½±ãʹÓÃÕßÈ·¶¨Ó¦¸ÃʹÓÃÄĸö°æ±¾.
¹ØÓÚCHANGELOGµÄ¹æ·¶¿ÉÒԲο¼keep a changelog
package.json: ǰ¶ËÏîÄ¿±ØÐë. ÃèÊöµ±Ç°µÄ°æ±¾¡¢¿ÉÓõÄÃüÁî¡¢°üÃû¡¢ÒÀÀµ¡¢»·¾³Ô¼Êø¡¢ÏîÄ¿ÅäÖõÈÐÅÏ¢.
.gitignore: ºöÂÔ²»±ØÒªµÄÎļþ£¬±ÜÃ⽫×Ô¶¯Éú³ÉµÄÎļþÌá½»µ½°æ±¾¿â
.gitattributes: gitÅäÖã¬ÓÐһЩ¿çƽ̨²îÒìµÄÐÐΪ¿ÉÄÜÐèÒªÔÚÕâÀïÅäÖÃһϣ¬Èç»»ÐйæÔò
docs/: ÏîÄ¿µÄϸ»¯Îĵµ, ¿ÉÑ¡.
examples/: ÏîÄ¿µÄʾÀý´úÂ룬¿ÉÑ¡.
build: ÏîÄ¿¹¤¾ßÀà½Å±¾·ÅÖÃÔÚÕâÀ·Ç±ØÐë¡£Èç¹ûʹÓÃͳһ¹¹½¨¹¤¾ß£¬ÔòûÓÐÕâ¸öĿ¼
dist/: ÏîÄ¿¹¹½¨½á¹ûÊä³öĿ¼
src/: Ô´´úÂëĿ¼
tests/: µ¥Ôª²âÊÔĿ¼. °´ÕÕJest¹æ·¶, __tests__Ŀ¼ͨ³£ºÍ±»²âÊÔµÄÄ£¿éÔÚͬһ¸ö¸¸Ä¿Â¼ÏÂ,
ÀýÈç:
/src
__tests__/
index.ts
a.ts
index.ts
a.ts |
tests: È«¾ÖµÄ²âÊÔĿ¼£¬Í¨³£·ÅÓ¦ÓõɲâÊÔ»òE2E²âÊÔµÈÓÃÀý
.env*: ÏîÄ¿ÖÐÎÒÃÇͨ³£»áʹÓû·¾³±äÁ¿À´Ó°ÏìÓ¦ÓÃÔÚ²»Í¬ÔËÐл·¾³ÏµÄÐÐΪ.
¿ÉÒÔͨ¹ýdotEnvÀ´´ÓÎļþÖжÁÈ¡»·¾³±äÁ¿. ͨ³£ÓÐÈý¸öÎļþ:
»ù±¾ÉÏÕâЩÎļþµÄ±ä¶¯µÄƵÂʺÜÉÙ£¬ÍŶӳÉÔ±Ó¦¸Ã²»ÒªËæÒâ±ä¶¯£¬ÒÔÃâÓ°ÏìÆäËû³ÉÔ±¡£ËùÒÔͨ³£»áʹÓÃ.env.*.localÎļþÀ´¸²¸ÇÉÏÊöµÄÅäÖÃ,
ÁíÍâ»áÉèÖð汾¿âÀ´ºöÂÔ*.localÎļþ.
.env ͨÓõĻ·¾³±äÁ¿
.env.development ¿ª·¢»·¾³µÄ»·¾³±äÁ¿
.env.production Éú³É»·¾³µÄ»·¾³±äÁ¿
¶ÔÓÚ¿ªÔ´ÏîĿͨ³£»¹°üÀ¨ÕâЩĿ¼:
LICENSE: ˵Ã÷ÏîÄ¿Ðí¿É
.github: ¿ªÔ´¹±Ï׹淶ºÍÖ¸ÄÏ
CONTRIBUTING: ¹±Ï×Ö¸ÄÏ, ÕâÀïÒ»°ã»á˵Ã÷¹±Ï׵Ĺ淶¡¢ÒÔ¼°ÏîÄ¿µÄ»ù±¾×éÖ¯¡¢¼Ü¹¹µÈÐÅÏ¢
CODE_OF_CONDUCT: ÐÐΪ׼Ôò
COMMIT_CONVENTION: Ìá½»ÐÅÏ¢¹æ·¶£¬ÉÏÎÄÒѾÌá¼°
ISSUE_TEMPLATE: IssueµÄÄ£°å£¬github¿ÉÒÔ×Ô¶¯Ê¶±ðÕâ¸öÄ£°å
PULL_REQUEST_TEMPLATE: PRÄ£°å
ÈÎÒâÒ»¸öÓÅÐãµÄ¿ªÔ´ÏîÄ¿¶¼ÊÇÄãµÄÀÏʦ£¬ÀýÈçReact¡¢Vue...
4.2 Ŀ¼×éÖ¯µÄ·ç¸ñ
ÉÏÃæÖ»ÊÇÒ»¸öͨÓõÄÏîÄ¿×éÖ¯¹æ·¶£¬¾ßÌåÔ´´úÂëÈçºÎ×éÖ¯»¹È¡¾öÓÚÄãÃÇʹÓõļ¼ÊõÕ»ºÍÍŶÓϲºÃ¡£ÍøÉÏÓкܶà½Ì³Ì£¬¾ßÌå¿ÉÒÔËÑË÷Ôõô×éÖ¯XXÏîÄ¿.
×ܽáÒ»ÏÂÏîÄ¿×éÖ¯Ö÷ÒªÓÐÈýÖÖ·ç¸ñ:
Rails-style: °´ÕÕÎļþµÄÀàÐÍ»®·ÖΪ²»Í¬µÄĿ¼£¬ÀýÈçcomponents¡¢constants¡¢
typings¡¢views. Õâ¸öÀ´Ô´ÓÚRuby-on-Rails¿ò¼Ü£¬Ëü°´ÕÕMVC¼Ü¹¹À´»®·Ö²»Í¬µÄĿ¼ÀàÐÍ£¬µäÐ͵ÄĿ¼½á¹¹ÈçÏÂ:
app
models # Ä£ÐÍ
views # ÊÓͼ
controllers # ¿ØÖÆÆ÷
helpers # °ïÖú³ÌÐò
assets # ¾²Ì¬×ÊÔ´
config # ÅäÖÃ
application.rb
database.yml
routes.rb # ·ÓÉ¿ØÖÆ
locales # ¹ú¼Ê»¯ÅäÖÃ
environments/
db # Êý¾Ý¿âÏà¹Ø |
Domain-style: °´ÕÕÒ»¸ö¹¦ÄÜÌØÐÔ»òÒµÎñ´´½¨µ¥¶ÀµÄĿ¼£¬Õâ¸öĿ¼¾Í½ü°üº¬¶àÖÖÀàÐ͵ÄÎļþ»òĿ¼.
±ÈÈçÒ»¸öµäÐ͵ÄReduxÏîÄ¿£¬ËùÓÐÏîÄ¿µÄÎļþ¾Í½ü·ÅÖÃÔÚͬһ¸öĿ¼ÏÂ:
Users/
Home/
components/
actions.js
actionTypes.js
constants.js
index.js
model.js
reducer.js
selectors.js
style.css
index.js
rootReducer.js |
Ducks-style: ÓŵãÀàËÆÓÚDomain-style£¬²»¹ý¸ü³¹µ×,
Ëüͨ³£½«Ïà¹ØÁªµÄÔªËØ¶¨ÒåÔÚÒ»¸öÎļþÏ¡£VueµÄµ¥Îļþ×é¼þ¾ÍÊÇÒ»¸öµäÐ͵ÄÀý×Ó£¬³ý´ËÖ®ÍâVuexÒ²ÊÇʹÓÃÕâÖÖ·ç¸ñ:
<template>
<div id="app"> <h1>My
Todo App!</h1> <TodoList/>
</div> </template> <script>
import TodoList from './components/TodoList.vue'
export default {
components: {
TodoList
}
}
</script>
<style lang="scss">
@import './variables.scss';
/* ... */
</style> |
´ó²¿·ÖÇé¿öÏÂ, ÎÒÃǶ¼ÊÇʹÓûìºÏÁ½ÖÖ·½Ê½µÄĿ¼½á¹¹£¬ÀýÈç:

¿ò¼Ü¹Ù·½ºÜÉÙ»áÈ¥¸ÉÔ¤ÏîÄ¿µÄ×éÖ¯·½Ê½£¬¶ÁÕß¿ÉÒԲο¼ÏÂÃæÕâЩ×ÊÔ´À´½¨Á¢×Ô¼ºÏîÄ¿×éÖ¯¹æ·¶:
Redux ³£¼ûÎÊÌ⣺´úÂë½á¹¹
react-boilerplate
vuex ÏîÄ¿½á¹¹
React×é¼þÉè¼ÆÊµ¼ù×ܽá02 - ×é¼þµÄ×éÖ¯
4.3 ½ÅÊּܺÍÏîĿģ°å
ÔÚ½«ÏîÄ¿½á¹¹¹æ·¶È·¶¨ÏÂÀ´ºó£¬¿ÉÒÔ´´½¨×Ô¼ºµÄ½ÅÊּܹ¤¾ß»òÕßÏîĿģ°å£¬ÓÃÓÚ¿ìËÙ³õʼ»¯Ò»¸öÏîÄ¿»ò´úÂëÄ£°å¡£
Ïà¹Ø×ÊÔ´:
yeoman - ÀÏÅÆµÄÏîÄ¿½ÅÊּܹ¤¾ß
plop - ´úÂëÉú³É¸¨ÖúCLI
hygen - ÀàËÆÓÚplop
generact - Éú³ÉReact×é¼þ, ´ó²¿·Ö×é¼þµÄÎļþ½á¹¹²î²»¶à,
Õâ¸ö¹¤¾ß¾ÍÊǰïÖúÄãÉú³ÉÕâÐ©ÖØ¸´µÄ´úÂë
babel-code-generator - ÀûÓÃbabelÀ´ÊµÏÖ¸ü¸ß¼¶µÄ´úÂë±à¼ºÍ×Ô¶¯Éú³É
5¡¢±àÂë¹æ·¶
ÍøÂçÉϴ󲿷֡®Ç°¶Ë¹æ·¶¡¯Ö¸µÄ¶¼ÊDZàÂë¹æ·¶, ÕâÊÇÒ»ÖÖ¡®ÏÁÒ塯µÄǰ¶Ë¹æ·¶.
ͳһµÄ±àÂë¹æ·¶¶ÔÍŶÓÏîÄ¿µÄ³¤Ô¶Î¬»¤²»ÎÞñÔÒæ. Ò»ÖÂÐԵĴúÂë¹æ·¶¿ÉÒÔÔöÇ¿ÍŶӿª·¢Ð×÷ЧÂÊ¡¢Ìá¸ß´úÂëÖÊÁ¿¡¢¼õÉÙÒÅÁôϵͳά»¤µÄ¸ºµ£¡£
×îÖ±½ÓµÄºÃ´¦¾ÍÊDZÜÃâд³öÔã¸âµÄ´úÂë, Ôã¸âµÄ´úÂëÓëÐÂÊÖºÍÀÏÊÖ¹ØÏµ²»´ó£¬ÎÒÒ²¼û¹ýºÃ´¦¹¤×÷ºÜ¶àÄêµÄ¡®×ÊÉ¹¤³Ìʦд³ö¶ñÐĵĴúÂë.
ÕâÑùµÄ´úÂëËæ×ÅÏîÄ¿µÄµü´ú»á±äµÃÄÑÒÔ¿ØÖÆ¡£
ÏÖ´úµÄLint¹¤¾ßÒѾ·Ç³£ÏȽø£¬¼¸ºõ¿ÉÒÔÔ¼Êø¸÷ÖÖ±àÂëÐÐΪ. ±ÈÈçÔ¼ÊøÒ»¸öÎļþµÄ³¤¶È¡¢º¯ÊýµÄ¸´ÔÓ¶È¡¢ÃüÃû¹æ·¶¡¢×¢Ê͹淶¡¢½Ó¿ÚºÚÃûµ¥¡¢DeadCode¡¢¼ì²é¼òµ¥µÄÂß¼´íÎó...
ÿһ¸ö³ÌÐòÔ±ÐÄÄ¿Öжԡ®ºÃ´úÂ롯¶¼ÓÐ×Ô¼ºµÄÖ÷¼û£¬Í³Ò»µÄ±àÂë¹æ·¶¿ÉÒÔÏñÇØÊ¼»Êͳһս¹úÒ»Ñù£¬±ÜÃâ²»±ØÒªµÄÂÛÕ½ºÍÕùÒé¡£
ÆäʵÓëÆä×Ô¼º½¨Á¢Ç°¶Ë±àÂë¹æ·¶£¬±ÊÕßÍÆ¼öÑ¡ÔñÉçÇø³ÁµíÏÂÀ´µÄ¹æ·¶. Õâ·½ÃæµÄ×ÊÔ´·Ç³£¶à£¬ËùÒÔ±¾ÎÄÒ²²»Îä¶ÏµØÌá³ö×Ô¼ºµÄ¹æ·¶½¨Òé.
ÍÆ¼öÏÂÃæÕâЩ×ÊÔ´:
5.1 Javascript
Lint¹¤¾ß
ESLint - ĿǰÊÇÉçÇø×îÁ÷Ðеġ¢Í¨ÓõÄJavascript Lint¹¤¾ß£¬Lint½çµÄBabel¡£Ö§³Ö¶¨ÖƲå¼þ¡¢preset¡£Èç¹û²»ÏëÕÛÌÚ¿ÉÒÔÑ¡ÔñËüµÄһЩԤ¶¨ÒåÅäÖÃ
TSLint - Typescript Lint¹¤¾ß¡£²»¹ý¼´½«·ÏÆúÁË,
ÍÆ¼öʹÓÃESLint
¹æ·¶
JavaScript Standard Style - ÁãÅäÖõġ¢¡®±ê×¼¡¯µÄJavascript±àÂë¹æ·¶.
µ×²ã»ùÓÚEslint¡£Ä¿Ç°²»Ö§³ÖTypescript
Airbnb JavaScript Style Guide - AirbnbµÄ±àÂë¹æ·¶£¬Òµ½ç±ê¸Ë
ÀàÐͼì²é. ÔÝʱ½«ËüÃǹéÀൽÕâÀÒòΪËüÃÇͬÊôÓÚ¡®¾²Ì¬²âÊÔ¡¯
Typescript - JavascriptÓïÑԵij¬¼¯£¬ÕâÊÇÒ»ÃÅ¡®Ð¡¯µÄÓïÑÔ£¬¶ø²»ÊǼòµ¥µÄÀàÐͼì²éÆ÷.
²»¹ýËüÒ²Ö§³ÖÔÉúJavascriptµÄÀàÐͼì²é
Flow - Facebook³öÆ·µÄÀàÐͼì²éÆ÷£¬Óï·¨ºÍTypescriptÀàËÆ.
¸öÈËÍÆ¼öʹÓÃTypescript
5.2 HTML
Lint¹¤¾ß
HTMLHint
bootlint
¹æ·¶
Code Guide
5.3 CSS
Lint¹¤¾ß
stylelint - ͨÓõÄCSS±àÂë¼ì²é¹¤¾ß£¬Ö§³Ö×îеÄCSSÓï·¨¡¢CSS-in-js¡¢ÒÔ¼°ÆäËûÀàCSSÓï·¨(ÈçSCSS¡¢Less).
ËüÒ²ÓÐÔ¤¶¨ÒåÅäÖã¬ÍƼöʹÓÃ
¹æ·¶
Airbnb CSS / Sass Styleguide
Code Guide
¸ü¶à
·½·¨ÂÛ
BEM - BEMÃüÃû¹æ·¶
OOCSS
smacss
¹ØÓÚCSS¿ÉÒÔѧϰBootstrapÕâЩ´«Í³UI¿ò¼Ü£¬ËûÃǵĴúÂë×éÖ¯ÐԷdz£ºÃ,
ÖµµÃѧϰ
5.4 ´úÂë¸ñʽ»¯

Prettier - ¹ØÓÚ´úÂë¸ñʽ»¯µÄËùÓж«Î÷¶¼½»¸øËü°É£¡
»ù±¾ÉÏ£¬ËùÓдúÂë¸ñʽÏà¹ØµÄ¹¤×÷¶¼¿ÉÒÔ½»¸øPrettierÀ´×ö£¬ÔÚÕâ¸ö»ù´¡ÉÏÔÙʹÓÃEslint¸²¸ÇÓïÒåÏà¹ØµÄ¼ì²é
5.5 ¼¯´ó³ÉµÄ
isobar ǰ¶Ë´úÂë¹æ·¶¼°×î¼Ñʵ¼ù
°¼Í¹ÊµÑéÊÒ´úÂë¹æ·¶
°Ù¶ÈFEX¹æ·¶
ÀÏÅÆµÄNEC¹æ·¶ - ÓеãÀÏ
5.6 ÌØ¶¨¿ò¼Ü·ç¸ñÖ¸ÄÏ
vue-style-guide
Airbnb React/JSX Style Guide
React×é¼þÉè¼ÆÊµ¼ù×ܽá - ×Ô¼öһϱÊÕßдµÄReact×é¼þÉè¼ÆÏà¹ØÊµ¼ù
5.7 Code Review

ÉÏÊöµÄLint¹¤¾ßºÍÀàÐͼì²éÆ÷, ¿ÉÒÔÔ¼Êø´úÂë·ç¸ñ¡¢±ÜÃâµÍ¼¶µÄÓï·¨´íÎó¡£µ«ÊǼ´Ê¹Í¨¹ýÉÏÃæµÄLintºÍÀàÐͼì²é£¬´úÂëÒ²¿ÉÄÜδ±ØÊÇ¡®ºÃ´úÂ롯¡£
ºÜ¶à´úÂëÉè¼ÆµÄ¡®×î¼Ñʵ¼ù¡¯ÊÇÎÞ·¨Í¨¹ý¾ßÏ󻯵Ä×Ô¶¯»¯¹¤¾ß»òÎĵµ¸²¸ÇµÄ,
Õâʱºò£¬'¾Ñé'»òÕß'ȺÌåÖÇ»Û'¾ÍÅÉÉÏÓó¡ÁË. ±ÈÈçCode Review½×¶Î»á¼ì²éÕâЩ¶«Î÷:
±à³ÌÔÔò¡¢Éè¼ÆË¼Ïë. ÀýÈç·ûºÏSOLIDÔÔò? ÊÇ·ñ×ã¹»DRY£¿½Ó¿ÚÉè¼ÆÊÇ·ñ¼ò½àÒ×À©Õ¹¡¢
Ä£¿éñîºÏ³Ì¶È¡¢´úÂëÖØ¸´
´úÂ뽡׳ÐÔ¡£ÊÇ·ñ´æÔÚÄÚ´æÐ¹Â¶¡¢ÊÇ·ñḬ̈߳²È«¡¢ÊÇ·ñÓÐDZÔÚÐÔÄÜÎÊÌâºÍÒì³£¡¢´íÎóÊÇ·ñ±»´¦Àí
´úÂëµÄÐÔÄܺÍЧÂÊ¡£
ÊÇ·ñÓÐûÓп¼Âǵ½µÄ³¡¾°£¿
Èç¹ûÄãÃÇÊǵÚÒ»´ÎÍÆÐÐCode Review, ¿ÉÒÔ½¨Á¢Ò»¸ö¼ì²éÁÐ±í£¬¶ÔÕÕ׎øÐмì²é¡£ÊìÁ·ºó£¬ÐÄÖÐ×ÔÈ»ÎÞÂë¡£
Code ReviewÓкܶàºÃ´¦£¬±ÈÈ磺
Code Review¿ÉÒÔÈÃÆäËû³ÉÔ±¶¼ÊìϤ´úÂë¡£ÕâÑù±£Ö¤ÆäËûÈ˶¼¿ÉÒÔ½Ï¿ìµØ½ÓÊÖÄãµÄ¹¤×÷£¬»òÕß°ïÄã½â¾öijЩÎÊÌâ
Ìá¸ß´úÂëÖÊÁ¿¡£ºÁÎÞÒÉÎÊ. Ò»·½ÃæÊÇÖ÷¶¯ÐԵĴúÂëÖÊÁ¿ÌáÉý£¬±ÈÈçÄãµÄ´úÂëÐèÒª±»ÈËReview£¬»á×Ô¾õ¾¡Á¿µÄÌá¸ß´úÂëÖÊÁ¿£»ÁíÒ»·½Ã棬ÆäËû³ÉÔ±¿ÉÒÔ¼ì²éÌá½»·½µÄ´úÂëÖÊÁ¿
¼ì²é»òÌá¸ßгÉÔ±µÄ±à³Ìˮƽ¡£ÅàÑøÐÂÈËʱ£¬ÓÉÓÚ²»ÐÅÈÎËüÃÇÌá½»µÄ´úÂ룬ÎÒÃÇ»á×öÒ»´ÎReview¼ì²é´úÂëÊÇ·ñ¹ý¹Ø¡£ÁíÒ»·½ÃæÕâÊÇÒ»´ÎÕæÊµµÄ°¸Àý½²½â,
¿ÉÒԽϿìÌá¸ßËûÃǵÄÄÜÁ¦
Code ReviewÓÐÁ½ÖÖ·½Ê½: Ò»¸öÌύʱ¡¢Ò»¸öÊǶ¨Ê±:
Ìύʱ. ´ó²¿·Ö¿ªÔ´ÏîÄ¿²ÉÓÃÕâÖÖ·½Ê½¡£Í¨Ë×½²¾ÍÊÇPull Request¡£Ö»ÓдúÂëͨ¹ý²âÊÔ¡¢ºÍÆäËû³ÉÔ±µÄReview²Å¿ÉÒԺϽøÕýʽ°æ±¾¿â¡£ÕâÖÖ·½Ê½Ò²³ÆÎª¡®×èÈûʽ¡¯´úÂë¼ì²é£¬Ò»°ãÅäºÏGitFlowʹÓá£
¶¨Ê±. ÔÚÏîÄ¿Íê½áºó¡¢ÏîÄ¿µÄij¸öÀï³Ì±®¡¢»òÕ߹̶¨µÄʱ¼ä(ÿÌ졢ÿ¸öÐÇÆÚ..).
ÍŶӳÉÔ±¾ÛÔÚÒ»Æð£¬»Ø¹Ë×Ô¼ºÐ´µÄ´úÂë, ÈÃÆäËû³ÉÔ±½øÐÐÉó²é
Code ReviewÊDZȽÏÄÑÒÔÍÆÐе쬲»¹ýÕâ¸öÒ²Òª¿´ÄãÃÇÍŶӵÄÇé¿ö£¬ÏòÎÒÃÇÇ®ÉÙ»î¶àµÄÍŶӣ¬ºÜÉÙµÄʱ¼äÈ¥Á¢ÂíÈ¥¼æ¹ËÆäËû³ÉÔ±µÄ´úÂë.
Õâʱºò¶¨Ê±Review»á¸üÓÐÓã¬ÒòΪ¿´ÆðÀ´¸ü¡®½Úʡʱ¼ä¡¯.
¶øÌύʱReviewÔò¿ÉÒÔÕë¶ÔÐÂÈË£¬±ÈÈçÄã²»ÐÅÈÎËûÃǵĴúÂë»òÕßÏ£Íû°ïÖúËûÃÇÌá¸ß±àÂëÄÜÁ¦¡£
Ïà¹Ø×ÊÔ´:
Code Review×î¼Ñʵ¼ù
ÊÇ·ñÒª×öCode Review£¿ÓëBAT×ÊÉî¼Ü¹¹Ê¦ÕùÂÛÖ®ºóµÄ˼¿¼
һЩCode Review¹¤¾ß
6¡¢Îĵµ¹æ·¶
Îĵµ¶ÔÓÚÏîÄ¿¿ª·¢ºÍά»¤¡¢Ñ§Ï°¡¢Öع¹¡¢ÒÔ¼°ÖªÊ¶¹ÜÀí·Ç³£ÖØÒª¡£
ºÍд²âÊÔÒ»Ñù¡¢´ó²¿·Ö¿ª·¢ÈËÔ±»á¾õµÃдÎĵµÊÇÒ»¼þÍ´¿àµÄÊÂÇ飬²»¹ýÖ»ÓÐʱ¼äÄܹ»Ö¤Ã÷ËüµÄ¼ÛÖµ¡£±ÈÈç¶ÔÓÚÈËÔ±Á÷¶¯±È½Ï´óµÄ¹«Ë¾£¬Èç¹ûÓй淶µÄÎĵµÌåϵ£¬×ª½»¹¤×÷¾Í»á±ä¶¯·Ç³£ÇáËÉ.
¹ãÒåµÄÎĵµ²»µ¥Ö¸¡®ËµÃ÷Îļþ¡¯±¾Éí£¬ËüÓкܶàÐÎʽ¡¢À´Ô´ºÍÔØÌ壬¿ÉÒÔÃèÊöÒ»¸ö֪ʶ¡¢ÒÔ¼°ÖªÊ¶Ðγɺ͵ü´úµÄ¹ý³Ì¡£ÀýÈç°æ±¾¿â´úÂëÌá½»¼Ç¼¡¢´úÂë×¢ÊÍ¡¢¾ö²ßºÍÌÖÂۼǼ¡¢CHANGELOG¡¢Ê¾Àý´úÂë¡¢¹æ·¶¡¢´«Í³ÎĵµµÈµÈ
6.1 Á¢ÎĵµÖÐÐÄ
ÎÒÃǹ«Ë¾ÊÇ×öIMµÄ£¬ËùÒÔ֮ǰÎÒÃÇÓÅÏÈʹÓÃ'×Ô¼ºµÄ'ͨѶ¹¤¾ßÀ´·ÖÏíÎĵµ£¬ÕâÖÖ·½Ê½ÓкܴóÎÊÌâ:
Èç¹ûûÓд浵ϰ¹ß(±ÈÈçºó¶ËµÄAPIÎĵµ£¬ÒòΪÓɺó¶Ëά»¤£¬Ò»°ã²»»áÖ÷¶¯È¥´æµµ),
Îĵµ¾Í¿ÉÄܶªÊ§£¬¶øÇÒͨѶ¹¤¾ßÊDz»»áÓÀ¾Ã±£´æÄãµÄÎĵµµÄ¡£µ±¶ªÊ§Îļþ¾ÍÐèÒªÖØÐºÍÎĵµÎ¬»¤ÕßË÷Òª
Ôã¸âµÄÊÇÎĵµÎ¬»¤ÕßÒ²ÊÇ×Ô¼ºÊÖ¶¯ÔÚ±¾µØ´æµµµÄ£¬ÕâÑùµ¼ÖµÄÎÊÌâÊÇ: Èç¹û¹¤×÷ת½»£¬ÆäËû¿ª·¢ÕßÐèÒª»¨·ÑÒ»µãʱ¼äÀ´²éÕÒ;
¶ªÊ§Á˾ÍÕæµÄûÁË
ÿһ´ÎÎĵµ¸üÐÂÒªÖØÐ·¢Ò»·Ý, ÕâºÜÂé·³£¬¶øÇÒ¿ÉÄܳöÏÖ©·¢µÄÇé¿ö, µ¼ÖÂǰºó²»Ò»ÖÂ.
¹ØÓÚ֪ʶµÄѧϰ¡¢ÒÔ¼°ÓÐÒâÒåµÄÌÖÂۼǼÎÞ·¨¹éµµ¡£
ÉÏÃæ½éÉܵÄÊÇÒ»Öַdz£ÔʼµÄÎĵµ¹²Ïí·½Ê½£¬ºÜ¶àСÍŶӾÍÊÇÕâô¸ÉµÄ¡£
¶ÔÓÚÏîÄ¿±¾ÉíµÄÎĵµ½¨Òé·ÅÖÃÔÚ¹ØÁªÏîÄ¿°æ±¾¿âÀïÃæ£¬¸úËæÏîÄ¿´úÂë½øÐеü´ú,
µ±ÎÒÃÇÔÚ¼ìË÷»ò¸ú×ÙÎĵµµÄÀúÊ·¼Ç¼ʱ£¬ÕâÖÖ·½Ê½ÊÇ×î·½±ãµÄ¡£
È»¶øºÜ¶àÓ¦ÓÃÊÇ¿çÔ½¶à¸öÍŶӵģ¬Ã¿¸öÍŶӶ¼»áÓÐ×Ô¼ºµÄÎĵµÊä³ö(±ÈÈçÐèÇóÎĵµ¡¢ÏµÍ³Éè¼ÆÎĵµ¡¢APIÎĵµ¡¢ÅäÖÃÎĵµµÈµÈ)£¬¶øÇÒͨ³£Ò²²»»áÔÚÒ»¸ö°æ±¾¿âÀï¡£ÕâʱºòÎĵµ¾Í±È½Ï·ÖÉ¢¡£ËùÒÔÒ»¸öͳһµÄÎĵµÖÐÐÄÊǺÜÓбØÒª¡£
ÎÒÃǹ«Ë¾ÏÖÔÚÑ¡ÔñµÄ·½°¸ÊÇGit+Markdown£¬Ò²¾ÍÊÇ˵ËùÓеÄÎĵµ¶¼·ÅÖÃÔÚÒ»¸ögit°æ±¾¿âÏ¡£Ö®Ç°Ò²¿¼ÂǹýÉÌÒµµÄ·½°¸£¬Æ©ÈçʯīÎĵµ¡¢ÌÚѶÎĵµ,
µ«¹ÜÀí²ã²¢²»ÐÅÈÎÕâЩ·þÎñ¡£
´ó¸ÅµÄgitÏîÄ¿×éÖ¯ÈçÏÂ:
¹æ·¶/
AÓ¦ÓÃ/
²úÆ·/
Éè¼Æ/
APIÎĵµ/
²âÊÔ/
ÆäËû/
BÓ¦ÓÃ/
Git°æ±¾¿â(ÀýÈçGitlab)ÓкܶàÓÅÊÆ£¬ÀýÈçÀúÊ·¼Ç¼¸ú×Ù¡¢°æ±¾»¯¡¢ÎÊÌâÌÖÂÛ(¿ÉÒÔ¹ØÁªissue¡¢»òÕßÌá½»)¡¢¶àÈËÐ×÷¡¢ËÑË÷¡¢È¨ÏÞ¹ÜÀí(Õë¶Ô²»Í¬µÄ°æ±¾¿â»ò·Ö×éΪ²»Í¬ÈËÔ±ÉèÖÃȨÏÞ)µÈµÈ¡£
Git+Markdown¿ÉÒÔÂú×㿪·¢ÕߵĴ󲿷ÖÐèÇó¡£µ«ÊÇGit×îÉó¤µÄÊÇ´¦Àí´¿Îı¾Îļþ¡¢¶ÔÓÚ¶þ½øÖÆÊÇÎÞÄÜΪÁ¦µÄ£¬ÎÞ·¨Õë¶ÔÕâЩÀàÐ͵ÄÎĵµ½øÐÐÔÚÏßÔ¤ÀÀºÍ±à¼¡£
ËùÒÔGit+Markdown²¢²»ÄÜÂú×ã¶àÑù»¯µÄÎĵµ´¦ÀíÐèÇ󣬱ÈÈç˼άµ¼Í¼¡¢Í¼±í¡¢±í¸ñ¡¢PPT¡¢°×°åµÈÐèÇó.
±Ï¾¹Ëü²»ÊÇרҵµÄÎĵµ´¦Àí¹¤¾ß¡£ËùÒÔ¶ÔÓÚ²úÆ·¡¢Éè¼ÆÈËÔ±ÕâЩ¸»ÎĵµÐèÇ󳡾°£¬Í¨³£»á°´ÕÕ´«Í³·½Ê½»òÕ߸üרҵµÄ¹¤¾ß¶ÔÎĵµ½øÐйÜÀí.
6.2 Îĵµ¸ñʽ
ºÁÎÞÒÉÎÊ£¬¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬MarkdownÊÇ×îÊʺϵġ¢×îͨÓõÄÎĵµ¸ñʽ¡£Ö§³Ö°æ±¾¿âÔÚÏßÔ¤ÀÀºÍ±ä¸üÀúÊ·¸ú×Ù¡£
ÏÂÃæÕâЩ¹¤¾ß¿ÉÒÔÌá¸ßMarkdownµÄ¿ª·¢Ð§ÂÊ:
¿ÉÊÓ»¯±à¼Æ÷
Visual Code: ´ó²¿·Ö´úÂë±à¼¶¼Ö§³ÖMarkdown±à¼ºÍÔ¤ÀÀ
Mou: MacϵÄÀÏÅÆ±à¼Æ÷
typora: ¿çƽ̨µÄMarkdown±à¼Æ÷£¬ÍƼö
markdownlint: ±àÂë¼ì²éÆ÷
À©Õ¹(Visual Studio Code):
Markdown All in One: All you need
to write Markdown (keyboard shortcuts, table of contents,
auto preview and more)
Markdown TOC: markdown Ŀ¼Éú³É£¬ÎÒ×î³£ÓõÄmarkdown²å¼þ
ͼ±í»æÖƹ¤¾ß:
drawio »ùÓÚWebµÄͼ±í»æÖƹ¤¾ß¡¢Ò²ÓÐÀëÏ߿ͻ§¶Ë
KeyNote/PPT ÁÙʱ»æÍ¼Ò²²»´í
6.3 ¶¨ÒåÎĵµµÄÄ£°å
¹ØÓÚÈçºÎдºÃÎĵµ£¬ºÜÄÑͨ¹ý±ê×¼»ò¹æ·¶À´½øÐÐÔ¼Êø£¬ÒòΪËüµÄÖ÷¹ÛÐԱȽÏÇ¿,
ºÃµÄÎĵµÈ¡¾öÓÚ±à¼ÕßµÄÂß¼×ܽáÄÜÁ¦¡¢±í´ïÄÜÁ¦¡¢ÒÔ¼°ÓÐûÓÐÕ¾ÔÚ¶ÁÕߵĽǶÈȥ˼¿¼ÎÊÌâ¡£
ËùÒԴ󲿷ÖÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔΪ²»Í¬ÀàÐ͵ÄÎĵµÌṩһ¸öÄ£°å£¬Í¨¹ýÄ£°åÀ´ËµÃ÷Ò»¸öÎĵµÐèÒª°üº¬ÄÄЩÄÚÈÝ,
¶ÔÎĵµµÄ±àдÕß½øÐÐÒýµ¼.
ÀýÈçÒ»¸öAPIÎĵµ¿ÉÄÜÐèÒªÕâЩÄÚÈÝ:
½Ó¿ÚµÄË÷Òý
½Ó¿ÚµÄ°æ±¾¡¢±ä¸ü¼Ç¼
Ó÷¨ºÍÕûÌåÃèÊö, ÈÏÖ¤¼øÈ¨µÈµÈ
ÃèÊö¾ßÌåµÄ½Ó¿Ú
¹¦ÄÜ˵Ã÷
·½·¨Ãû³Æ»òÕßURI
²ÎÊýºÍ·µ»ØÖµ¶¨Òå
µ÷ÓÃʾÀý
×¢ÒâÊÂÏîµÈµÈ
¾ßÌ广·¶ÄÚÈÝÒòÍŶӶøÒ죬ÕâÀïµãµ½ÎªÖ¹.
À©Õ¹:
ÖÐÎļ¼ÊõÎĵµµÄд×÷¹æ·¶
React RFCÄ£°å
6.4 ÌÖÂÛ¼´Îĵµ
Ò»°ãÇé¿öÏ£¬¶ÔÓÚÒ»¸ö¿ªÔ´ÏîÄ¿À´Ëµ³ýÁ˹ٷ½Îĵµ£¬IssuesÒ²ÊÇÒ»¸öºÜÖØÒªµÄÐÅÏ¢À´Ô´¡£ÔÚIssueÖÐÎÒÃÇ¿ÉÒÔ»ñÈ¡ÆäËû¿ª·¢ÕßÓöµ½µÄÎÊÌâºÍ½â¾ö·½°¸¡¢¸ø¹Ù·½·´À¡/ͶƱ¡¢¹Ø×¢¹Ù·½µÄ×îж¯Ì¬¡¢ºÍÆäËû¿ª·¢ÕßÍ·ÄԷ籩´½Ç¹ÉàÕ½µÈµÈ¡£
ËùÒÔÏà¶ÔÓÚʹÓÃIM£¬±ÊÕ߸üÍÆ¼öIssueÕâÖÖ¹µÍ¨Ä£Ê½£¬ÒòΪËü·½±ã¹éµµ×éÖ¯£¬Ë÷ÒýºÍ²éÕÒ¡£¶øIMÉϵÄÌÖÂÛ¾ÍÏñÁ÷ˮһÑù£¬Ò»È¥²»¸´·µ¡£
µ±È»Á½ÖÖ¹¤¾ßµÄÊÊÓó¡¾°²»Ò»Ñù£¬ÄãÄÃIMµÄʹÓ÷½Ê½À´Ê¹ÓÃIssue£¬Issue¾Í»á±äµÃºÜË®¡£IssueÊʺÏ×öÓÐÒâÒåµÄ¡¢Ä¿µÄÃ÷È·µÄÌÖÂÛ¡£ËùÒÔҪǴÔðÒ»ÏÂÔÚGithub
IssueÉϹàË®µÄ¿ª·¢Õß¡£
¹ØÓÚIssueÓкܶàÃîÓã¬ÍƼöÔĶÁÕâÆªÎÄÕÂ<ÈçºÎʹÓà Issue
¹ÜÀíÈí¼þÏîÄ¿£¿>
ÏÖÔںܶ࿪ԴÏîÄ¿¶¼ÒýÈëÁËRFC(ÇëÇóÒâ¼û¸å)Á÷³Ì(²Î¿¼React²ÉÓÃеÄRFCÁ÷³Ì,
ÒÔ¼°Vue ×îºÚ°µµÄÒ»Ìì), ÕâÈÿª·¢ÕßÓС®·Éíũū¡¢µ±¼Ò×öÖ÷¡¯µÄ¸Ð¾õ£¬ÈκÎÈ˶¼¿ÉÒÔ²ÎÓëµ½Ò»¸ö¿ªÔ´ÏîÄ¿ÖØ´óʼþµÄ¾ö²ßÖ®ÖС£Ã¿¸öRFC»á˵Ã÷¾ö²ßµÄ¶¯»ú¡¢ÏêϸÉè¼Æ¡¢ÓÅȱµã¡£³ýÁ˹ٷ½ÎĵµÖ®Í⣬ÕâЩRFCÊǺÜÓмÛÖµµÄѧϰ×ÊÁÏ¡£
ÎÒ¾õµÃÈç¹û²»Éæ¼°»úÃÜ£¬ÍŶÓÓ¦¸ÃÒªÈøü¶àÈ˲ÎÓëµ½ÏîÄ¿µÄÉè¼ÆºÍ¾ö²ßÖУ¬¶ÔÓÚÐÂÊÖ¿ÉÒÔѧµ½ºÜ¶à¶«Î÷£¬¶ø¶ÔÓÚ·¢ÆðÕßÒ²¿ÉÄÜÓп¼ÂDz»ÖܵÄÇé¿ö¡£
ÄǶÔÓÚÆóÒµÓ¦Óÿª·¢, IssueÓÐÓÃÂð?
µ±È»ÓÐÓÃ, ±ÈÈçÎÒÃÇ¿ÉÒÔ½«ÕâÀà»°Ìâ´ÓIM×ªÒÆµ½Issue:
Éè¼Æ·½°¸
¾ö²ß/½¨Òé
й¦ÄÜ¡¢Ð¼¼ÊõÒýÈë
ÖØ¹¹
ÐÔÄÜÓÅ»¯
¹æ·¶
ÎÊÌâÌÖÂÛ
ÖØ´óʼþ
¼Æ»®»ò½ø¶È¸ú×Ù
...
ÁíÍâIssueͨ³£Í¨¹ý±êÇ©À´½øÐзÖÀ࣬·½±ã×éÖ¯ºÍ¼ìË÷:

6.5 ×¢Êͼ´Îĵµ
±ØÒªºÍÊÊÁ¿µÄ×¢ÊͶÔÔĶÁÔ´´úÂëµÄÈËÀ´Ëµ¾ÍÊÇÒ»¸öÂ·ÅÆ, ¿ÉÒÔÉÙ×ߺܶàÍä·.
¹ØÓÚ×¢Ê͵ÄһЩ׼Ôò£¬<°¢Àï°Í°ÍJava¿ª·¢ÊÖ²á>×ܽáµÃ·Ç³£ºÃ,
ÍÆ¼ö»ùÓÚÕâ¸öÀ´½¨Á¢×¢Ê͹淶¡£ÁíÍâͨ¹ýESlintÊÇ¿ÉÒÔ¶Ô×¢ÊͽøÐÐÒ»¶¨³Ì¶ÈµÄ¹æ·¶¡£
6.6 ´úÂë¼´Îĵµ
ÏÖÔÚÓкܶàÖÖ¹¤¾ßÖ§³Ö´Ó´úÂëÖнâÎöºÍÉú³ÉÎĵµ, Õâ¿ÉÒÔ¸ø¿ª·¢Õß¼ò»¯ºÜ¶àÎĵµÎ¬»¤µÄ¹¤×÷¡£
¾Ù¸öÀý×Ó£¬ÎÒÃǾ³£»áÓöµ½ÐÞ¸ÄÁË´úÂ룬µ«ÊÇÎĵµÍü¼Çͬ²½µÄÇé¿ö¡£Í¨¹ý¡®´úÂë¼´Îĵµ¡¯µÄ·½Ê½ÖÁÉÙ¿ÉÒÔ±£³ÖÎĵµºÍ´úÂëͬ²½¸üУ»ÁíÍâºÜ¶à¹¤¾ß»á·ÖÎö´úÂëµÄÊý¾ÝÀàÐÍ£¬×Ô¶¯°ïÎÒÃÇÉú³É²ÎÊýºÍ·µ»ØÖµ¶¨Ò壬ÕâÒ²¿ÉÒÔ¼õÉٺܶàÎĵµ±àд¹¤×÷ÒÔ¼°³ö´íÂÊ¡£
±ÈÈç¿ÉÒÔͨ¹ýÏÂÃæ×¢ÊÍ·½Ê½À´Éú³É×é¼þÎĵµ:
import * as React
from 'react';
import { Component } from 'react';
/**
* Props×¢ÊÍ
*/
export interface ColumnProps extends React.HTMLAttributes<any>
{
/** prop1 description */
prop1?: string;
/** prop2 description */
prop2: number;
/**
* prop3 description
*/
prop3: () => void;
/** prop4 description */
prop4: 'option1' | 'option2' | 'option3';
}
/**
* ¶Ô×é¼þ½øÐÐ×¢ÊÍ
*/
export class Column extends Component<ColumnProps,
{}> {
render() {
return <div>Column</div>;
}
} |
Ïà¹ØµÄ¹¤¾ßÓÐ:
APIÎĵµ
jsdoc JavascriptÎĵµ×¢Êͱê×¼ºÍÉú³ÉÆ÷
tsdoc Typescript¹Ù·½µÄ×¢ÊÍÎĵµ±ê×¼
typedoc »ùÓÚtsdoc±ê×¼µÄÎĵµÉú³ÉÆ÷
Typescript
Javascript
ºó¶Ë½Ó¿ÚÎĵµ
Swagger Restful½Ó¿ÚÎĵµ¹æ·¶
GraphQL: Õâ¸öÓкܶ๤¾ß£¬ÀýÈçgraphiql, ¼¯³ÉÁËPlaygroundºÍÎĵµ£¬ºÜÏȽø
Easy Mock Ò»¸ö¿ÉÊÓ»¯£¬²¢ÇÒÄÜ¿ìËÙÉú³ÉÄ£ÄâÊý¾ÝµÄ·þÎñ
×é¼þÎĵµ
vue-styleguidist
ÓиüºÃµÄ¹¤¾ßÇëÆÀÂÛ¸æËßÎÒ
Docz
Styleguidist
StoryBook ͨÓõÄ×é¼þ¿ª·¢¡¢²âÊÔ¡¢Îĵµ¹¤¾ß
React
Vue
7¡¢UIÉè¼Æ¹æ·¶

ÕâÊÇÒ»¸öÈÝÒ×±»ºöÂԵĹ淶ÀàÐÍ¡£±ÊÕß¾ÍÉîÊÜÆä¿à£¬ÎÒÃǹ«Ë¾³õÆÚUI²¢²»×¨Òµ£¬Ã»ÓÐËùνµÄÉè¼Æ¹æ·¶£¬Õâ¾Íµ¼ÖÂËûÃÇÉè¼Æ³öÀ´µÄ²úÆ·¶¼ÊǶ«½èÎ÷´Õ£¬Ç°ºó²»Í³Ò»£¬¶à¸öÓ¦ÓÃÖ®¼äµÄ×é¼þ²»Äܸ´Óá£Õâ¸ãµÃÎÒÃDz»µÃ²»ÀË·Ñʱ¼ä£¬Ð´ºÜ¶à¶¨ÖÆ»¯ÑùʽºÍ×é¼þ£¬ÎªËûÃǵIJ»×¨ÒµÂòµ¥.
¹ØÓÚUIÉè¼Æ¹æ·¶µÄÖØÒªÐÔÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ¿´ÕâÆªÎÄÕÂ<¿ª·¢ºÍÉè¼Æ¹µÍ¨ÓжàÄÑ£¿-
ÄãÖ»²îÒ»¸öÉè¼Æ¹æ·¶>.
¼òµ¥×ܽáÒ»ÏÂUIÉè¼Æ¹æ·¶µÄÒâÒ壺
ÌṩÍŶÓÐ×÷ЧÂÊ(²úÆ·ºÍ¿ª·¢)
Ìá¸ß×é¼þµÄ¸´ÓÃÂÊ. ͳһµÄ×é¼þ¹æ·¶¿ÉÒÔÈÃ×é¼þ¸üºÃ¹ÜÀí
±£³Ö²úÆ·µü´ú¹ý³ÌÖÐÆ·ÅÆÒ»ÖÂÐÔ
½¨Á¢Ò»¸ö¶¨ÒåÁ¼ºÃµÄÉè¼Æ¹æ·¶ÐèÒªUIÉè¼ÆºÍ¿ª·¢µÄ½ôÃÜÅäºÏ£¬ÓÐʱºòÒ²¿ÉÒÔÓÉÎÒÃÇǰ¶ËÀ´Íƶ¯¡£
±ÈÈçºÜ¶à¿ªÔ´µÄUI¿ò¼Ü£¬Ò»¿ªÊ¼¶¼ÊÇ¿ª·¢ÕßYY³öÀ´µÄ£¬²¢Ã»ÓÐÉè¼Æ²ÎÓ룬ºóÀ´×é¼þ¿âÂýÂý³Áµí³ÉÐÍ£¬UIÉè¼ÆÊ¦²Å½éÈë¹æ·¶Ò»Ï¡£
Èç¹ûÄãÃÇÍŶӲ»´òËãÖÆ¶¨×Ô¼ºµÄUIÉè¼Æ¹æ·¶£¬ÔòÍÆ¼öʹÓÃÏֳɵĿªÔ´×é¼þ¿â£º
Ant Design
Material-UI
Element UI
WeUI
Microsoft Fabric
ÕâЩ¿ªÔ´×é¼þ¿â¶¼¾¹ýÁ¼ºÃµÄÉè¼ÆºÍ³Áµí, ¶øÇÒÅäÌ×ÁËÍêÉÆµÄÉè¼ÆÔÔò¡¢×î¼Ñʵ¼ùºÍÉè¼Æ×ÊÔ´Îļþ£¨Sketch
ºÍ Axure£©£¬¿ÉÒÔ°ïÖúÒµÎñ¿ìËÙÉè¼Æ³ö¸ßÖÊÁ¿µÄ²úÆ·ÔÐÍ¡£
8¡¢²âÊԹ淶
²âÊÔÊDZ£ÕÏ´úÂëÖÊÁ¿µÄÖØÒªÊֶΣ¬µ«ÊǺÜÉÙÓÐÈËÔ¸ÒâÔÚÕâÀﻨ̫¶àʱ¼ä¡£
±ÈÈç±ÊÕߣ¬ÎÒºÜÉÙ»áÈ¥¸øÒµÎñ´úÂëºÍ×é¼þдµ¥Ôª²âÊÔ£¬³ý·Ç×Ô¼º¶Ô´úÂë·Ç³£Ã»ÓÐÐÅÐÄ£¬°´ÕÕÎÒµÄÀíÄîд²âÊÔ²»È罫´úÂëдµÃ¸ü¼òµ¥Ò»µã£¬±ÈÈç°ÑÒ»¸öº¯Êý²ð·ÖΪ¸üСµÄº¯Êý£¬±£³Öµ¥Ò»Ö°Ôð¡£
µ«ÊǶÔÓÚһЩµ×²ã¡¢¹²ÏíµÄ´úÂëÄ£¿é»¹ÊÇÓвâÊԵıØÒªµÄ¡£
ÎÒÔÚ²»ÖªµÀ²âÊÔʲô£¿ÕâЩÊÇÄãÐèÒªÖªµÀµÄÈí¼þ²âÊÔÀàÐͺͳ£Ê¶ÎÄÕÂÖУ¬ÁоÙÁËһЩ¿ª·¢ÕßÐèÒª¹Ø×¢µÄ²âÊÔÀàÐͺͳ£Ê¶,
Èç¹û°´ÕÕ²âÊԵĽ׶νøÐзÖÀ࣬´ó¸ÅÊÇÕâÑù×ÓµÄ:

ÆäÖÐǰ¶Ë¿ª·¢ÕßÐèÒª¹Ø×¢µÄÖ÷ÒªÓÐÒÔϼ¸ÖÖ²âÊÔÀàÐÍ:
µ¥Ôª²âÊÔ: ¶Ô¶ÀÁ¢µÄÈí¼þÄ£¿é½øÐвâÊÔ
UI×é¼þ²âÊÔ: °üÀ¨ÁË¿ìÕÕ(Snapshot)²âÊÔ
¼¯³É²âÊÔ: ÔÚµ¥Ôª²âÊԵĻù´¡ÉÏ£¬½«Ä£¿é×éºÏÆðÀ´£¬²âÊÔËüÃǵÄ×éºÏÐÔ
E2E²âÊÔ: ÔÚÍêÕû¡¢ÕæÊµµÄÔËÐл·¾³ÏÂÄ£ÄâÕæÊµÓû§¶ÔÓ¦ÓýøÐвâÊÔ¡£Ö÷Òª²âÊÔǰ¶ËºÍºó¶ËµÄе÷ÐÔ
¼æÈÝÐÔ²âÊÔ: ÉÏÃæÌáµ½ÁËä¯ÀÀÆ÷¼æÈݹ淶£¬ÔÚ½«°æ±¾Ìá½»¸ø²âÊÔ/·¢²¼Ö®Ç°£¬ÐèҪȷ±£ÄÜ·ûºÏ¼æÈÝÐÔÒªÇó
ÐÔÄܲâÊÔ: ²âÊԺͷÖÎöÊÇ·ñ´æÔÚÐÔÄÜÎÊÌâ
ÆäËû:
°²È«²âÊÔ
SEO²âÊÔ
ÒòΪ¶ÔÓÚС¹«Ë¾À´ËµÕû¸öÈí¼þ¿ª·¢Á÷³Ì¿ÉÄÜûÓÐÄÇô¹æ·¶£¬±ÈÈçºÜÄѹ¹½¨Ò»¸öÍêÕûµÄ¶Ë¶Ô¶Ë²âÊÔ»·¾³£¬ÕâЩ¶¼²»ÊÇǰ¶ËÍŶӿÉÒÔ²Ù×÷µÄ·¶Î§,
ËùÒÔ×Ô¶¯»¯²âÊÔºÜÄÑÍÆÐС£µ«ÊÇ¿ÉÒÔ¸ù¾ÝÍŶӺÍÒµÎñÇé¿öÖð²½½øÐпªÕ¹¡£
¿ÉʵʩÐԱȽϸߵÄ, Ò²±È½Ï¼òµ¥Êǵ¥Ôª²âÊÔ£¬ËùÒÔ±¾ÎÄÒ²ÖØµã¹Ø×¢µ¥Ôª²âÊÔ.
8.1 ²âÊÔµÄÁ÷³Ì
Ê×ÏÈÒª¶¨ÒåÒ»¸öºÏÊʵÄÈí¼þ²âÊÔÁ÷³Ì, ºÏÊʵIJâÊÔÁ÷³Ì¿ÉÒÔ½µµÍ¿ª·¢ºÍ²âÊÔÍŶÓÖ®¼äµÄ¹µÍ¨Ð×÷³É±¾¡¢Ìá¸ß²âÊÔЧÂÊ¡£ÀýÈçÎÒÃÇÍŶÓĿǰµÄ²âÊÔÁ÷³Ì:

8.2 µ¥Ôª²âÊÔ
µ¥Ôª²âÊÔÓкܶàºÃ´¦, ±ÈÈç:
Ìá¸ßÐÅÐÄ£¬ÊÊÓ¦±ä»¯ºÍµü´ú. Èç¹ûÏÖÓдúÂëÓнÏΪÍêÉÆµÄµ¥Ôª²âÊÔ£¬ÔÚ´úÂëÖØ¹¹Ê±£¬¿ÉÒÔ¼ìÑéÄ£¿éÊÇ·ñÒÀÈ»¿ÉÒÔ¹¤×÷,
Ò»µ©±ä¸üµ¼Ö´íÎ󣬵¥Ôª²âÊÔÒ²¿ÉÒÔ°ïÖúÎÒÃÇ¿ìËÙ¶¨Î»²¢ÐÞ¸´´íÎó
µ¥Ôª²âÊÔÊǼ¯³É²âÊԵĻù´¡
²âÊÔ¼´Îĵµ¡£Èç¹ûÎĵµ²»Äܽâ¾öÄãµÄÎÊÌ⣬ÔÚÄã´òËã¿´Ô´Âë֮ǰ£¬¿ÉÒԲ鿴µ¥Ôª²âÊÔ¡£Í¨¹ýÕâЩ²âÊÔÓÃÀý£¬¿ª·¢ÈËÔ±¿ÉÒÔÖ±¹ÛµØÀí½â³ÌÐòµ¥ÔªµÄ»ù´¡API
ÌáÉý´úÂëÖÊÁ¿¡£Ò×ÓÚ²âÊԵĴúÂ룬һ°ã¶¼ÊǺôúÂë
²âʲô?
ÒµÎñ´úÂë»òÒµÎñ×é¼þÊDZȽÏÄÑÒÔʵʩµ¥Ôª²âÊԵģ¬Ò»·½ÃæËüÃDZȽ϶à±ä¡¢ÁíÒ»·½ÃæºÜ¶àÍŶӺÜÉÙÓо«Á¦Î¬»¤Õⲿ·Öµ¥Ôª²âÊÔ¡£ËùÒÔͨ³£Ö»ÒªÇó¶ÔһЩ»ù´¡/µ×²ãµÄ×é¼þ¡¢¿ò¼Ü»òÕß·þÎñ½øÐвâÊÔ,
ÊÓÇé¿ö¿¼ÂÇÊÇ·ñÒª²âÊÔÒµÎñ´úÂë
²âÊÔµÄ×¼Ôò:
ÍÆ¼öPetrowareµÄUnit Testing Guidelines,
×ܽáÁË27Ìõµ¥Ôª²âÊÔ×¼Ôò£¬·Ç³£ÊÜÓÃ.
ÁíÍâ<°¢Àï°Í°ÍµÄJava¿ª·¢ÊÖ²á>ÖÐ×ܽáµÄµ¥Ôª²âÊÔ×¼Ôò,
Ò²²»´í£¬ËäÈ»ÊéÃûÊÇJava£¬×¼ÔòÊÇͨÓõÄ.
µ¥Ôª²âÊÔÖ¸±ê:
Ò»°ãʹÓòâÊÔ¸²¸ÇÂÊÀ´Á¿»¯£¬¾¡¹Ü¶ÔÓÚ¸²¸ÇÂÊÄܲ»ÄܺâÁ¿µ¥Ôª²âÊÔµÄÓÐЧÐÔ´æÔڽ϶àÕùÒé¡£
´ó²¿·ÖÇé¿öÏ»¹ÊÇÍÆ¼ö¾¡¿ÉÄÜÌá¸ß¸²¸ÇÂÊ, ±ÈÈçÒªÇóÓï¾ä¸²¸ÇÂÊ´ïµ½70%£»ºËÐÄÄ£¿éµÄÓï¾ä¸²¸ÇÂʺͷÖÖ§¸²¸ÇÂʶ¼Òª´ïµ½100%.
ÊÓÍŶÓÇé¿ö¶ø¶¨
À©Õ¹:
²âÊÔ¸²¸Ç£¨ÂÊ£©µ½µ×ÓÐʲôÓã¿
Ïà¹Ø¹¤¾ß
Headless Browsers: ÎÞÍ·ä¯ÀÀÆ÷ÊÇÍøÒ³×Ô¶¯»¯µÄÖØÒªÔËÐл·¾³¡£³£ÓÃÓÚ¹¦ÄܲâÊÔ¡¢µ¥Ôª²âÊÔ¡¢ÍøÂçÅÀ³æ
puppeteer
Headless Chromium
²âÊÔ¿ò¼Ü
×é¼þ²âÊÔ
testing-library
Enzyme
Jest FacebookµÄµ¥Ôª²âÊÔ¿ò¼Ü. ÁãÅäÖÃ, Ö§³Ö×é¼þ¿ìÕÕ²âÊÔ¡¢Ä£¿éMock¡¢Spy.
Ò»°ã³¡¾°, µ¥Ôª²âÊÔѧËüÒ»¸ö¾ÍÐÐÁË
Intern
µ¥Ôª²âÊÔ
AVA
Jasmine
Mocha
Tape
¶ÏÑÔ¿â
Chai
expect.js
should.js
Mock/Stubs/Spies
sinon.js
´úÂ븲¸ÇÂÊ
istanbul
»ù×¼²âÊÔ
benchmark.js
jsperf.com
9¡¢Òì³£´¦Àí¡¢¼à¿ØºÍµ÷ÊԹ淶
ºÜ¶à¿ª·¢Õß³£³£ÎóÓûòÕßÇáÊÓÒì³£µÄ´¦Àí, ºÏÀíÓÐЧµÄÒì³£´¦Àí¿ÉÒÔÌá¸ßÓ¦ÓõĽ¡×³ÐԺͿÉÓÃÐÔ£¬ÁíÍ⻹¿ÉÒÔ°ïÖú¿ª·¢Õß¿ìËÙ¶¨Î»Òì³£.
9.1 Òì³£´¦Àí
<°¢Àï°Í°ÍµÄJava¿ª·¢ÊÖ²á>ÖÐ×ܽáµÄÒì³£´¦Àí¹æ·¶¶ÔJavaScriptµÄÒì³£´¦ÀíÒ²ºÜÓвο¼ÒâÒ壬±ÈÈç:
Òì³£²»ÒªÓÃÀ´×öÁ÷³Ì¿ØÖÆ£¬Ìõ¼þ¿ØÖÆ¡£
²¶»ñÒì³£ÊÇΪÁË´¦ÀíËü£¬²»Òª²¶»ñÁËȴʲô¶¼²»´¦Àí¶øÅׯúÖ®£¬Èç¹û²»Ïë´¦ÀíËü£¬Ç뽫¸ÃÒì³£Å׸øËüµÄµ÷ÓÃÕß¡£×îÍâ²ãµÄÒµÎñʹÓÃÕߣ¬±ØÐë´¦ÀíÒì³££¬½«Æäת»¯ÎªÓû§¿ÉÒÔÀí½âµÄÄÚÈÝ¡£
catchʱÇë·ÖÇåÎȶ¨´úÂëºÍ·ÇÎȶ¨´úÂ룬Îȶ¨´úÂëÖ¸µÄÊÇÎÞÂÛÈçºÎ²»»á³ö´íµÄ´úÂë¡£¶ÔÓÚ·ÇÎȶ¨´úÂëµÄcatch¾¡¿ÉÄܽøÐÐÇø·ÖÒì³£ÀàÐÍ£¬ÔÙ×ö¶ÔÓ¦µÄÒì³£´¦Àí¡£²»Òª¶Ô´ó¶Î´úÂë½øÐÐtry-catch
...
È»ºóÔÙ¸ù¾ÝJavaScript±¾ÉíµÄÒì³£´¦ÀíÌØµã×ܽáһЩ¹æ·¶ÐÐΪ,
ÀýÈç:
²»Òªthrow·ÇError¶ÔÏó
²»ÒªºöÂÔÒì²½Òì³£
È«¾Ö¼à¿ØJavascriptÒì³£
...
×ÊÔ´:
´Ó1000+¸öÏîÄ¿ÖÐ×ܽá³öÀ´µÄǰ10¸öJavaScript´íÎó, ÒÔ¼°ÈçºÎ±ÜÃâËüÃÇ
JavascriptÒì³£´¦Àí¡®È¨Íþ¡¯Ö¸ÄÏ
ǰ¶ËÒì³£´¦Àí×î¼Ñʵ¼ù
9.2 ÈÕÖ¾
¶ÔÓÚǰ¶ËÀ´Ëµ£¬ÈÕÖ¾Ò²²»ÊǺÁÎÞÒâÒå(ºÜ¶à¿ò¼ÜÐÔÄÜÓÅ»¯½¨ÒéÔÚÉú²ú»·¾³ÒƳýconsole)¡£ÓÈÆäÊÇÔÚÉú²úÏÖ³¡µ÷ÊÔ´úÂëʱ£¬Õâʱºò¿É¹óµÄ¿ØÖÆÌ¨ÈÕÖ¾¿ÉÒÔ°ïÖúÄã¿ìËÙÕÒµ½Òì³£µÄÏßË÷.
²»¹ýͨ³£ÎÒÃÇÖ»Òª±£Áô±ØÒªµÄ¡¢ÓÐÒâÒåµÄÈÕÖ¾Êä³ö£¬±ÈÈçÄã²»Ó¦¸Ã½«console.log·Åµ½Ò»¸öReactäÖȾº¯ÊýÖС¢»òÕ߷ŵ½Ò»¸öÑ»·ÖÐ,
DDosʽµÄÈÕÖ¾ÐÅÏ¢²¢²»ÄܰïÖúÎÒÃǶ¨Î»ÎÊÌ⣬·´¶ø»áÓ°ÏìÔËÐеÄÐÔÄÜ. ËùÒÔÐèÒªÒ»¸ö¹æ·¶À´Ô¼ÊøÈÕÖ¾Êä³öÐÐΪ,
±ÈÈç:
±ÜÃâÖØ¸´´òÓ¡ÈÕÖ¾
½÷É÷µØ¼Ç¼ÈÕÖ¾, »®·ÖÈÕÖ¾¼¶±ð¡£±ÈÈçÉú²ú»·¾³½ûÖ¹Êä³ödebugÈÕÖ¾£»ÓÐÑ¡ÔñµØÊä³öinfoÈÕÖ¾£»
ʹÓÃǰ׺¶ÔÈÕÖ¾½øÐзÖÀà, ÀýÈç: [User] xxxx
Ö»¼Ç¼¹Ø¼üÐÅÏ¢, ÕâЩÐÅÏ¢¿ÉÒÔ°ïÖúÄãÕï¶ÏÎÊÌâ
...
À©Õ¹×ÊÔ´
debug ÊʺÏNode.jsºÍä¯ÀÀÆ÷µÄdebugÈÕÖ¾¹¤¾ß, Ö§³Ö¶¯Ì¬¿ªÆôÈÕÖ¾´òÓ¡
vConsole ÒÆ¶¯¶Ëµ÷ÊÔÀûÆ÷
9.3 Òì³£¼à¿Ø
ÒòΪ³ÌÐòÅÜÔÚ²»ÊܿصĻ·¾³£¬ËùÒÔ¶ÔÓÚ¿Í»§¶ËÓ¦ÓÃÀ´Ëµ£¬Òì³£¼à¿ØÔÚÉú²ú»·¾³ÊǷdz£ÖØÒªµÄ£¬Ëü¿ÉÒÔÊÕ¼¯¸÷ÖÖÒâÁÏÖ®ÍâÉú²ú»·¾³ÎÊÌ⣬°ïÖú¿ª·¢Õß¿ìËÙ¶¨Î»Òì³£¡£
Òì³£¼à¿ØÍ¨³£»áͨ¹ýÈýÖÖ·½Ê½À´ÊÕ¼¯Òì³£Êý¾Ý:
È«¾Ö²¶»ñ¡£ÀýÈçʹÓÃwindow.onerror, »òÕßunhandledrejection
Ö÷¶¯Éϱ¨¡£ÔÚtry/catchÖÐÖ÷¶¯Éϱ¨.
Óû§·´À¡¡£±ÈÈ絯´°ÈÃÓû§Ìîд·´À¡ÐÅÏ¢.
ºÍÈÕÖ¾Ò»Ñù£¬²»ÊÇËùÓС®Òì³£¡¯¶¼Ó¦¸ÃÉϱ¨¸øÒì³£¼à¿ØÏµÍ³£¬Æ©ÈçһЩԤÁÏÖ®Äڵġ®Òì³£¡¯£¬±ÈÈçÓû§ÊäÈë´íÎó¡¢¼øÈ¨Ê§°Ü¡¢ÍøÂç´íÎóµÈµÈ.
Òì³£¼à¿ØÖ÷ÒªÓÃÀ´Éϱ¨Ò»Ð©ÒâÁÏÖ®ÍâµÄ¡¢»òÕßÖÂÃüÐÔµÄÒì³£.
Òª×öºÃǰ¶ËµÄÒì³£¼à¿ØÆäʵ²¢²»ÈÝÒ×£¬ËüÐèÒª´¦ÀíÕâЩ¶«Î÷:
ä¯ÀÀÆ÷¼æÈÝÐÔ¡£
Ë鯬ÊÕ¼¯(breadcrumbs)¡£ÊÕ¼¯¡®ÔÖÄÑ¡¯ÏÖ³¡µÄһЩÏßË÷£¬ÕâЩÏßË÷¶ÔÎÊÌâÕï¶ÏºÜÖØÒª¡£ÀýÈ統ǰÓû§ÐÅÏ¢¡¢°æ±¾¡¢ÔËÐл·¾³¡¢´òÓ¡µÄÈÕÖ¾¡¢º¯Êýµ÷ÓÃÕ»µÈµÈ
µ÷ÓÃÕ»µÄת»»¡£Í¨³£ÔÚä¯ÀÀÆ÷ÔËÐеÄѹËõÓÅ»¯¹ýµÄ´úÂ룬ÕâÖÖµ÷ÓÃÕ»»ù±¾Ã»Ê²Ã´¿É¶ÁÐÔ£¬Í¨³£ÐèҪͨ¹ýSourceMapÓ³Éäµ½Ôʼ´úÂë.
¿ÉÒÔʹÓÃÕâ¸ö¿â: source-map
Êý¾ÝµÄ¾ÛºÏ¡£ºó¶Ë¼à¿ØÏµÍ³ÐèÒª¶Ôǰ¶ËÉϱ¨µÄÐÅÏ¢½øÐзÖÎöºÍ¾ÛºÏ
¶ÔÓÚСÍŶÓδ±ØÓÐÄÜÁ¦¿ª·¢ÕâÒ»Ì×ϵͳ£¬ËùÒÔÍÆ¼öʹÓÃһЩµÚÈý·½¹¤¾ß¡£ÀýÈç
Sentry Ãâ·Ñ»ù±¾¹»ÓÃ
FunDebug ¸¶·ÑÔöÇ¿
À©Õ¹:
ǰ¶ËÒì³£¼à¿Ø½â¾ö·½°¸Ñо¿
´î½¨Ç°¶Ë¼à¿ØÏµÍ³
10¡¢Ç°ºó¶ËÐ×÷¹æ·¶
ǰ¶ËÊÇWebµÄÒ»¸öϸ·ÖÁìÓò£¬ÍùÍù²»ÄÜÍÑÀëºó¶Ë¶ø´æÔÚ¡£ËùÒԺͺó¶ËÐ×÷µÄʱ¼äÊÇ×µÄ.
10.1 Ð×÷Á÷³Ì¹æ·¶
ǰºó¶ËÍŶӾ¹ý³¤ÆÚµÄºÏ×÷£¬Ò»°ã¿ÉÒÔ×ܽá³öÒ»Ìõ¶ÔÓÚË«·½¿ª·¢Ð§ÂÊ×îÓŵÄÐ×÷Á÷³Ì.
½«Õâ¸öÂäʵΪ¹æ·¶£¬ºóÃæµÄÍŶӳÉÔ±¶¼×ñÑÕâ¸ö²½µ÷½øÐÐÐ×÷¡£
Ò»¸öµäÐ͵Äǰºó¶ËÐ×÷Á÷³ÌÈçÏÂ:

ÐèÇó·ÖÎö¡£²ÎÓëÕßÒ»°ãÓÐǰºó¶Ë¡¢²âÊÔ¡¢ÒÔ¼°²úÆ·. ÓɲúÆ·Ö÷³Ö£¬¶ÔÐèÇó½øÐÐÐû¹á£¬½ÓÊÜ¿ª·¢ºÍ²âÊԵķ´À¡£¬È·±£´ó¼Ò¶ÔÐèÇóÓÐÒ»ÖµÄÈÏÖª
ǰºó¶Ë¿ª·¢ÌÖÂÛ¡£ÌÖÂÛÓ¦ÓõÄһЩ¿ª·¢Éè¼Æ£¬¹µÍ¨¼¼Êõµã¡¢Äѵ㡢ÒÔ¼°·Ö¹¤ÎÊÌâ.
Éè¼Æ½Ó¿ÚÎĵµ¡£¿ÉÒÔÓÉǰºó¶ËÒ»ÆðÉè¼Æ£»»òÕßÓɺó¶ËÉè¼Æ¡¢Ç°¶ËÈ·ÈÏÊÇ·ñ·ûºÏÒªÇó
²¢Ðпª·¢¡£Ç°ºó¶Ë²¢Ðпª·¢£¬ÔÚÕâ¸ö½×¶Î£¬Ç°¶Ë¿ÉÒÔÏÈʵÏÖ¾²Ì¬Ò³Ãæ; »òÕ߸ù¾Ý½Ó¿ÚÎĵµ¶Ô½Ó¿Ú½øÐÐMock,
À´Ä£Äâ¶Ô½Óºó¶Ë½Ó¿Ú
ÔÚÁªµ÷֮ǰ£¬ÒªÇóºó¶Ë×öºÃ½Ó¿Ú²âÊÔ
ÕæÊµ»·¾³Áªµ÷¡£Ç°¶Ë½«½Ó¿ÚÇëÇó´úÀíµ½ºó¶Ë·þÎñ£¬½øÐÐÕæÊµ»·¾³Áªµ÷¡£
10.2 ½Ó¿Ú¹æ·¶
Ê×ÏÈÓ¦¸ÃÈ·¶¨ÏÂÀ´µÄÊǽӿڹ淶¡£ÆäʵʹÓÃÄÄÖÖ½Ó¿Ú±ê×¼ÊÇÆä´Î£¬ÖØÒªµÄÊÇͳһ£¬ÇÒÒªÂú×ãǰºó¶ËµÄ¿ª·¢Ð§ÂÊÒªÇó.
±ÊÕß²»½¨Òéºó¶ËÈ¥¶¨Òå×Ô¼ºµÄ½Ó¿Ú±ê×¼£¬¶øÓ¦¸ÃȥѡÔñһЩͨÓõġ¢Óбê×¼¶¨Òå½Ó¿ÚÐÎʽ,
ÀýÈç:
RESTful: RESTfulÊÇĿǰʹÓÃ×îΪ¹ã·ºµÄAPIÉè¼Æ¹æ·¶,
»ùÓÚHTTP±¾ÉíµÄ»úÖÆÀ´ÊµÏÖ.
±ÊÕ߸öÈËÊDZȽÏϲ»¶Õâ¸öAPI¹æ·¶£¬µ«ÊÇÎÒ·¢Ïֺܶ࿪·¢Õß²¢²»ÄÜÕæÕý(»òÕß˵ûÐÄ˼)Àí½âËü£¬Éè¼Æ³öÀ´µÄ½Ó¿Ú£¬¸úÎÒÏëÏóµÄÏà²îÉõÔ¶¡£»»¾ä»°Ëµ£¬¶ÔÓÚRESTful£¬¿ª·¢ÕßÖ®¼äºÜÄÑ´ï³ÉÒ»ÖµÄÀí½â£¬ÈÝÒײúÉú·ÖÆç¡£
ÒòΪÊÇʹÓÃ×î¹ã·ºµÄAPIÐÎʽ£¬ËùÒÔÉçÇøÉÏÓкܶ๤¾ßÀ´¶ÔRESTful½Ó¿Ú½øÐÐÎĵµ»¯¡¢²âÊÔºÍÄ£Äâ.
JSONRPC ÕâÊÇÒ»Öַdz£¼òµ¥¡¢ÈÝÒ×Àí½âµÄ½Ó¿Ú¹æ·¶¡£Ïà¶ÔÓÚRESTfulÎÒ¸üÍÆ¼öÕâ¸ö£¬¼òµ¥Ôò²»ÈÝÒײúÉú·ÖÆç£¬ÐÂÊÖÒ²¿ÉÒԺܿì½ÓÊÜ.
GraphQL ¸üΪÏȽø¡¢¸üÓÐǰ¾°µÄAPI¹æ·¶¡£µ«ÊÇÄãҪ˵·þºó¶ËÅäºÏÄãʹÓÃÕâÖÖ±ê×¼¿ÉÄܺÜÓÐÄѶÈ
½Ó¿ÚÉè¼ÆÐèҪעÒâµÄµã:
Ã÷È·Çø·ÖÊÇÕý³£»¹ÊÇÒì³£, Ñϸñ×ñѽӿڵÄÒì³£ÔÓï. ÉÏÊö½Ó¿ÚÐÎʽ¶¼ÓÐÃ÷È·µÄÒì³£ÔÓ±ÈÈçJSONRPC£¬µ±³öÏÖÒ쳣ʱӦ¸Ã·µ»Ø´íÎó¶ÔÏóÏìÓ¦£¬¶ø²»ÊÇÔÚÕý³£µÄÏìÓ¦ÌåÖзµ»Ø´íÎó´úÂë.
ÁíÍâÒª¹æ·¶»¯µÄ´íÎóÂë, HTTPÏìÓ¦Âë¾ÍÊÇÒ»¸ö²»´íµÄѧϰ¶ÔÏó
Ã÷È·Êý¾ÝÀàÐÍ¡£ºÜ¶àºó¶ËдµÄ½Ó¿Ú¶¼ÊÇstringºÍnumber²»·ÖµÄ£¬Èç¹ûÍ×еϰ¡¢Ç°¶Ë¾ÍÐèÒªÕë¶ÔÕâ¸öÊôÐÔ×öÌØÊâ´¦Àí£¬ÕâÒ²¿ÉÄÜÊÇDZÔÚµÄbug
Ã÷È·¿ÕÖµµÄÒâÒå¡£±ÈÈçÔÚ×ö¸üвÙ×÷ÊÇ£¬¿ÕÖµÊDZíÊ¾ÖØÖ㬻¹ÊǺöÂÔ¸üУ¿
ÏìÓ¦±ÜÃâÈßÓàµÄǶÌס£
½Ó¿Ú°æ±¾»¯£¬±£³ÖÏòϼæÈÝ¡£¾ÍÏñÎÒÃÇÉÏÎĵġ®ÓïÒ廯°æ±¾¹æ·¶¡¯ËµµÄ£¬¶ÔÓÚºó¶ËÀ´Ëµ£¬API¾ÍÊǹ«¹²µÄ½Ó¿Ú.
¹«¹²±©Â¶µÄ½Ó¿ÚÓ¦¸ÃÓÐÒ»¸ö°æ±¾ºÅ£¬À´ËµÃ÷µ±Ç°ÃèÊöµÄ½Ó¿Ú×öÁËʲô±ä¶¯£¬ÊÇ·ñÏòϼæÈÝ¡£ÏÖÔÚǰ¶Ë´úÂë¿ÉÄÜ»áÔÚ¿Í»§¶Ë±»»º´æ£¬ÀýÈçС³ÌÐò¡£Èç¹ûºó¶Ë×öÁËbreak
change£¬¾Í»áÓ°ÏìÕⲿ·ÖÓû§¡£
10.3 ½Ó¿ÚÎĵµ¹æ·¶
ºó¶Ëͨ¹ý½Ó¿ÚÎĵµÏòǰ¶Ë±©Â¶½Ó¿ÚÏà¹ØµÄÐÅÏ¢¡£Í¨³£ÐèÒª°üº¬ÕâЩÐÅÏ¢£º
°æ±¾ºÅ
ÎĵµÃèÊö
·þÎñµÄÈë¿Ú. ÀýÈç»ù±¾Â·¾¶
²âÊÔ·þÎñÆ÷. ¿ÉÑ¡
¼òµ¥Ê¹ÓÃʾÀý
°²È«ºÍÈÏÖ¤
¾ßÌå½Ó¿Ú¶¨Òå
·½·¨Ãû³Æ»òÕßURL
·½·¨ÃèÊö
ÇëÇó²ÎÊý¼°ÆäÃèÊö£¬±ØÐë˵Ã÷ÀàÐÍ(Êý¾ÝÀàÐÍ¡¢ÊÇ·ñ¿ÉÑ¡µÈ)
ÏìÓ¦²ÎÊý¼°ÆäÃèÊö, ±ØÐë˵Ã÷ÀàÐÍ(Êý¾ÝÀàÐÍ¡¢ÊÇ·ñ¿ÉÑ¡µÈ)
¿ÉÄܵÄÒì³£Çé¿ö¡¢´íÎó´úÂë¡¢ÒÔ¼°ÃèÊö
ÇëÇóʾÀý£¬¿ÉÑ¡
È˹¤Î¬»¤µ¼ÖµÄÎÊÌâ:
ÉÏÎÄ¡®´úÂë¼´Îĵµ¡¯¾ÍÌáµ½ÁËÈ˹¤Î¬»¤½Ó¿ÚÎĵµ¿ÉÄܵ¼Ö´úÂëºÍÎĵµ²»Í¬²½ÎÊÌâ¡£
Èç¹û¿ÉÒÔ´Ó´úÂë»òÕ߹淶Îĵµ(ÀýÈçOpenAPIÕâÀàAPIÃèÊö¹æ·¶)ÖÐÉú³É½Ó¿ÚÎĵµ£¬¿ÉÒÔ½â¾öʵÏÖºÍÎĵµ²»Ò»ÖÂÎÊÌâ,
ͬʱҲ¿ÉÒÔ¼õÉÙÎĵµ±àдºÍά»¤µÄͶÈë.
10.4 ½Ó¿Ú²âÊÔÓëÄ£Äâ
ΪÁË×öµ½¸ßЧÂʵÄǰºó¶Ë²¢Ðпª·¢£¬½Ó¿ÚµÄ²âÊÔÓëÄ£ÄâÊDZØÒªµÄ¡£
ǰ¶ËÒªÇóºó¶ËÔÚÁªµ÷֮ǰ£¬ÐèÒª²âÊÔÑéÖ¤ºÃ×Ô¼ºµÄ½Ó¿ÚÊÇ·ñ¿ÉÒÔÕý³£¹¤×÷¡£¶ø²»ÊÇÔÚÁªµ÷ÆÚ¼ä£¬°Ñǰ¶Ëµ±¡®½Ó¿Ú²âÊÔÔ±¡¯£¬×èÈû½Ó¿ÚÁªµ÷½ø¶È
ÁíÍâǰ¶ËÐèÒªÔÚºó¶Ë½Ó¿Úδ׼±¸ºÃ֮ǰ£¬Í¨¹ý½Ó¿ÚÄ£ÄâµÄ·½Ê½£¬À´±àдҵÎñÂß¼´úÂë¡£
Õë¶Ô½Ó¿Ú²âÊÔÓëÄ£Ä⣬´æÔÚÏÂͼÕâÑùÒ»¸öÀíÏëµÄÄ£ÐÍ:

Ò»ÇдӶ¨ÒåÁ¼ºÃµÄ½Ó¿ÚÎĵµ³ö·¢£¬Éú³ÉMock ServerºÍMock
Client, Mock Server¸øÇ°¶ËÌṩģÄâÊý¾Ý£¬¶øMock ClientÔò¸¨Öúºó¶Ë¶ÔËüÃǵĽӿڽøÐвâÊÔ.
×ÊÔ´:
RESTful
Swagger ÕâÊÇ×îΪ½Ó½üÉÏÃæÀíÏëÄ£Ð͵ÄÒ»¸ö½â¾ö·½°¸
JSON Server ¿ìËÙÉú³ÉJSON mock·þÎñÆ÷
Easy Mock ¿ÉÊÓ»¯µÄ¡¢ÔÚÏߵĽӿÚmock·þÎñ
GraphQl
GraphQL Faker
graphql-tools
Ä£ÄâÊý¾ÝÉú³É
faker.js Ç¿´óµÄÄ£ÄâÊý¾ÝÉú³É¹¤¾ß£¬Ö§³ÖNodeºÍä¯ÀÀÆ÷
Mock.js Êý¾ÝÉú³ÉºÍÄ£Ä⹤¾ß
11¡¢Åàѵ/֪ʶ¹ÜÀí/¼¼Êõ³Áµí
ÎÒ¾õµÃÒ»¸öÍŶӵÄ֪ʶ¹ÜÀíÊǷdz£ÖØÒªµÄ. ÄãÒªÎÊÒ»¸ö¸ÕÈëÐеÄÐÂÊÖ¼ÓÈëÍŶÓÏ£ÍûµÃµ½Ê²Ã´£¿ºÜ¶àÈ˵ĻشðÊÇ'ѧϰ',
Ï£Íû×Ô¼ºµÄ¼¼Êõ¿ÉÒÔ¸ü¼Ó¾«½ø, Ç®µ¹»¹ÊÇÆä´Î¡£
È»¶øÏÖʵÊÇĿǰºÜ¶à¹«Ë¾µÄ·ÕΧ²¢²»ÊÇÕâÑùµÄ£¬Ò»Ììµ½ÍíдҵÎñ´úÂë¡¢¹¤×÷Á¿´ó¡¢Ã¿Ìì×öÖØ¸´µÄÊÂÇ飬¶øÇÒ»¹¼Ó°à£¬¹¤×÷¶àÄê¼¼ÊõҲû¸Ð¾õÓжàÉÙ½ø²½,
ȷʵ»áÈÃÈ˷dz£¾ÚÉ¥¡£°üÀ¨±ÊÕßÒ²ÊÇÕâÑùµÄ¡£
ËùÒÔΪÁ˸ÄÉÆÕâÖÖÇé¿ö£¬ÎÒÀ´ÁÄÁÄ×î½üÔÚ¡®Ð¡ÍŶӡ¯×öµÄһЩ³¢ÊÔ.
11.1 ÐÂÈËÅàѵ
Èç¹ûÍŶÓÓй淶µÄгÉÔ±ÅàѵÊֲᣬ¿ÉÒÔ½ÚÊ¡ºÜ¶àÅàѵµÄʱ¼ä£¬±ÜÃâÿ´ÎÖØ¸´¿ÚÊöÒ»ÑùµÄÄÚÈÝ¡£ÅàѵÊÖ²á°üº¬ÒÔÏÂÄÚÈÝ:
²úÆ·¼Ü¹¹Óë×éÖ¯¼Ü¹¹. ½éÉܹ«Ë¾±³¾°ºÍ²úÆ·£¬Ò»°ã×éÖ¯µÄÍŶӽṹºÍ²úÆ·µÄ¼Ü¹¹ÊÇÏà¹ØÁªµÄ.
ÒÔ±ÊÕßËùÔÚ¹«Ë¾ÎªÀý, Ö÷Òª²úÆ·ÊǼ´Ê±Í¨ÐÅ:

²úÆ·Ñз¢Á÷³Ì: ½éÉܲúÆ·¿ª·¢ºÍµü´ú»áÉæ¼°µ½µÄÁ÷³Ì¡¢ÒÔ¼°ÍŶÓÖ®¼äµÄÐ×÷Ïνӣ¬ÀýÈç:

¹¤×÷·¶Î§: ÍŶӳÉÔ±µÄÖ°Ôð·¶Î§
½¨Á¢×ÊÔ´Ë÷Òý: ¿ª·¢ÐèÒªÉè¼Æµ½µÄ×ÊÔ´£¬±ÈÈç¸÷ÖÖÎĵµµØÖ·¡¢Ñз¢ÏµÍ³Èë¿Ú(ÀýÈçgitlab¡¢bug¸ú×Ùϵͳ¡¢Îļþ¹²Ïí¡¢·¢²¼Æ½Ì¨¡¢¿ª·¢/²âÊÔ»·¾³¡¢¼à¿ØÏµÍ³)¡¢Ð×÷¹æ·¶µÈµÈ¡£½«ÕâЩ×ÊÔ´ÕûÀíºÃ¿ÉÒÔ¼õÉÙ²»±ØÒªµÄ¹µÍ¨³É±¾
¹æ·¶: ¼´±¾ÎĵÄÖ÷Ìå'ǰ¶ËÐ×÷¹æ·¶'¡£Óй淶¿ÉÑ£¬¿ÉÒÔÈóÉÔ±ÒԽϿìµÄËÙ¶ÈÈëÊÖ¿ª·¢¡¢Í¬Ê±Ò²¼õÉÙÅàѵ³É±¾Í¶Èë¡£
ÅàѵÊֲὫ¿ÉÒÔÎĵµ¾ßÏ󻯵ÄÄÚÈÝÕûÀíΪÎĵµ£¬ºÍÉÏÎÄ˵µ½µÄCode ReviewÒ»Ñù£¬Ò»Ð©¶«Î÷ÎÞ·¨Í¨¹ýÎĵµÀ´ËµÃ÷£¬ËùÒÔÎÒÃÇÒ»°ã»á´îÅäÒ»¸ö¡®Åàѵµ¼Ê¦¡¯£¬ÔÚÊÔÓÃÆÚ¼ä£¬Ò»¶ÔÒ»¸¨µ¼¡£
11.2 ÓªÔì¼¼Êõ·ÕΧ
¹ÄÀø³ÉԱд¼¼Êõ²©¿Í£¬»òÕß½¨Á¢×Ô¼ºµÄÍŶÓרÀ¸. дһƪºÃµÄÎÄÕ²»ÈÝÒ×
¹ÄÀø²ÎÓ뿪ԴÏîÄ¿
½¨Á¢ÃæÊÔÌâ¿â ×éÖ¯Ò»Æð½âÒ»Ð©ÃæÊÔÌâ»òËã·¨Ì⣬¼ÓÉî¶Ô֪ʶµãµÄÀí½â
¶¨ÆÚµÄרÌâ·ÖÏí. ¹ÄÀøÍŶӳÉÔ±¶¨ÆÚ½øÐÐרÌâѧϰºÍÑо¿£¬±àд¼¼Êõ²©¿Í£¬²¢½«Ñ§Ï°µÄ³É¹û·ÖÏí¸øÆäËû³ÉÔ±.
ÕâÊÇÒ»ÖÖ±§ÍÅȡůµÄѧϰ·½Ê½£¬Ö¼ÔÚ°ïÖúÍŶӳÉÔ±Ò»ÆðѧϰºÍ³É³¤¡£
±ÈÈ翪·¢ÀÏÊÖ¿ÉÒÔ·ÖÏí×Ô¼ºµÄ¾Ñ飬Ñо¿¸üÉî²ã´ÎµÄ¼¼Êõ£»ÐÂÊÖÔò¿ÉÒÔÑо¿Ä³Ð©¿ª·¢¼¼ÇÉ¡¢Ð¼¼Êõ£¬ÀýÈçCSS
Grid£¬svg¶¯»µÈµÈ¡£ÍƼöÍŶӳÉÔ±ÓиöÃ÷È·µÄÑо¿ÁìÓò£¬ÕâÑù·Ö¹¤ºÏ×÷¿ÉÒÔѧϰµ½¸ü¶à¶«Î÷.
רÌâÔõôÀ´?
רÌâÇëÇó. ¿ÉÒÔÇëÇóÆäËû³ÉÔ±Íê³ÉרÌ⣬±ÈÈç±È½ÏÉîµÄ֪ʶ£¬¿ÉÒÔÒªÇóÍŶӱȽÏÓоÑéµÄ½øÐÐѧϰ·ÖÏí
ѧϰ×ܽá
ÏîÄ¿»Ø¹Ë
Äѵ㹥¿Ë
ÏîÄ¿¹æ·¶
¹¤¾ßʹÓÃ
ÂäʵºÍÍêÉÆ¿ª·¢¹æ·¶. ¹æ·¶±¾Éí¾ÍÊÇÍŶÓ֪ʶ³ÁµíµÄÒ»ÖÖÖ±½ÓÊä³ö
ͼÊé·ÖÏí. ºÍÀëÉ¢µÄÎÄÕ»ò½Ì³ÌÏà±È£¬Í¼ÊéµÄ֪ʶ»á±È½Ïϵͳ£¬ÁíÍâºÜ¶à¾µäµÄͼÊéÊÇÒª¾²ÏÂÀ´ºÃºÃÐÀÉ͵ġ£
¹ÄÀøÖع¹ºÍ³ÖÐøÓÅ»¯´úÂë
³éÏóÒ»Ì×»ù´¡¿â»ò¿ò¼Ü£¬¼õÉÙÖØ¸´¹¤×÷, Ìá¸ß¹¤×÷ЧÂÊ. ²»¼Ó°àÏÈ´ÓÌá¸ß¹¤×÷ЧÂÊ¿ª
|