Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ç³£È«ÃæµÄǰ¶ËЭ×÷¹æ·¶
 
×÷Õߣº»Äɽ
  3816  次浏览      28
  2019-10-23
 
±à¼­ÍƼö:
ÎÄÕ·ÖÎöÁËÖÆ¶¨Ç°¶ËЭ×÷¹æ·¶£¬ÒÔ¼°ä¯ÀÀÆ÷ͳ¼ÆÊý¾Ý»ñÈ¡Óë¼¼ÊõÑ¡ÐÍ£¬Ï£Íû¿ÉÒÔΪÄúµÄѧϰ´øÀ´°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ¾ò½ð¼¼ÊõרÀ¸£¬ÓÉ»ðÁú¹ûÈí¼þ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¶¯»­µÈµÈ¡£ÍƼöÍŶӳÉÔ±ÓиöÃ÷È·µÄÑо¿ÁìÓò£¬ÕâÑù·Ö¹¤ºÏ×÷¿ÉÒÔѧϰµ½¸ü¶à¶«Î÷.

רÌâÔõôÀ´?

רÌâÇëÇó. ¿ÉÒÔÇëÇóÆäËû³ÉÔ±Íê³ÉרÌ⣬±ÈÈç±È½ÏÉîµÄ֪ʶ£¬¿ÉÒÔÒªÇóÍŶӱȽÏÓо­ÑéµÄ½øÐÐѧϰ·ÖÏí

ѧϰ×ܽá

ÏîÄ¿»Ø¹Ë

Äѵ㹥¿Ë

ÏîÄ¿¹æ·¶

¹¤¾ßʹÓÃ

ÂäʵºÍÍêÉÆ¿ª·¢¹æ·¶. ¹æ·¶±¾Éí¾ÍÊÇÍŶÓ֪ʶ³ÁµíµÄÒ»ÖÖÖ±½ÓÊä³ö

ͼÊé·ÖÏí. ºÍÀëÉ¢µÄÎÄÕ»ò½Ì³ÌÏà±È£¬Í¼ÊéµÄ֪ʶ»á±È½Ïϵͳ£¬ÁíÍâºÜ¶à¾­µäµÄͼÊéÊÇÒª¾²ÏÂÀ´ºÃºÃÐÀÉ͵ġ£

¹ÄÀøÖع¹ºÍ³ÖÐøÓÅ»¯´úÂë

³éÏóÒ»Ì×»ù´¡¿â»ò¿ò¼Ü£¬¼õÉÙÖØ¸´¹¤×÷, Ìá¸ß¹¤×÷ЧÂÊ. ²»¼Ó°àÏÈ´ÓÌá¸ß¹¤×÷ЧÂÊ¿ª

 
   
3816 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì