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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Qunar React Native ´ó¹æÄ£Ó¦ÓÃʵ¼ù
 
×÷ÕߣºÒóÎÄÕÑ À´Ô´ÓÚ£º¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ£º 2017-2-27
  2450  次浏览      27
 

¡¾µ¼Óï¡¿Qunar React Native£¨ÏÂÎļò³Æ QRN£©ÊÇÈ¥ÄĶùÍø£¨Qunar£©»ùÓÚ React Native£¨ÏÂÎļò³Æ RN£©¶¨ÖƵÄÒ»Ì׿ò¼Ü£¬Èà RN ÓÃÆðÀ´¸ü·½±ã¿ì½Ý£¬2016 Äê 3 ÔÂÉÏÏߺóÒÑÔÚ¹«Ë¾ÄÚ²¿´ó¹æÄ£Ó¦Óá£Í¸¹ý QRN µÄ´ó¹æÄ£Êµ¼ùÎÒÃÇ¿ÉÒÔ¿´µ½ÈçºÎ¸üºÃµØÈ¥Ê¹Óà RN¡£

ǰÑÔ

ÒÆ¶¯ App ¿çƽ̨¿ª·¢¼¼ÊõÒòΪ¿ÉÒԵͳɱ¾¡¢¸ßЧÂʵØÍê³É App ¿ª·¢£¬Ò»Ö±ÒÔÀ´¶¼ÊÇÒÆ¶¯¿ª·¢µÄÈȵ㡣Ŀǰ³£¼ûµÄ¿çƽ̨¿ª·¢¼¼Êõ°üÀ¨ React Native¡¢Weex ºÍ»ùÓÚ HTML5 µÄ Hybrid ¿ò¼Ü¡£Qunar »ùÓÚ React Native ¶¨ÖÆÁËÒ»Ì×¿çÆ½Ì¨ÒÆ¶¯¿ª·¢¿ò¼Ü¡ª¡ªQunar React Native£¨QRN£©£¬QRN ÓëÒÑÓÐÁ½ÄêÀúÊ·µÄ HY£¨»ùÓÚ H5 µÄ Hybrid ·½°¸£©Ò»Í¬¹¹³ÉÁ˵±Ç° Qunar µÄ¿çƽ̨¿ª·¢¿ò¼Ü£¬ÕâÁ½¸ö¿ò¼Ü¶¼ÊÇÓÉ Qunar ÒÆ¶¯¼Ü¹¹×é YMFE ÍÆ³ö¡£

QRN ½â¾öÁËʹÓà RN ÖеÄÖî¶àÎÊÌ⣬ʵÏÖÁ˸üÉÙµÄÆ½Ì¨²îÒì¡¢¸ü¸ßµÄ¿ª·¢Ð§ÂÊ¡¢¸üºÃµÄÓû§ÌåÑ飬Ҳ·Ç³£ÊʺÏÏñ Qunar ÄÚ²¿ÕâÖÖ¶à¸öÒµÎñ¸ôÀëµÄ¿ª·¢Ìåϵ¡£½áºÏ³ÉÊìµÄÀëÏß×ÊÔ´°ü¿ò¼Ü£¬QRN Ò³Ãæ¿ÉÒÔͨ¹ýÈÈ·¢¿ìËÙµØÍê³ÉÏßÉÏ Bug µÄÐÞ¸´ÉõÖÁ·¢²¼ÐÂÒ³Ãæ¡£Ä¿Ç° Qunar ÄÚ²¿ÒѾ­ÓдóÁ¿µÄÒµÎñÉÏÏß»ùÓÚ QRN µÄÒ³Ãæ£¬ÕâÆäÖÐÒ²°üÀ¨ÁËÐí¶àºËÐĵÄÒµÎñÁ÷³ÌºÍÈÕ¾ùǧÍò PV µÄÒ³Ãæ¡£

ÆðÔ´

Qunar ´Ó 2009 ÄêÂÊÏÈ¿ªÊ¼ÎÞÏßÒµÎñÖÁ½ñ£¬Òƶ¯¿Í»§¶ËÒ»Ö±³Ðµ£×Å´óÁ¿µÄÒµÎñÐèÇó¡£2014¡¢2015 ÄêÕýÊÇ Qunar ÔÚÒÆ¶¯¶Ë·¢Á¦¡¢ÒµÎñÔö³¤Ð×Ã͵ĹؼüʱÆÚ£¬È¥ÄĶùÂÃÐÐ App µÄÒ³ÃæÒ²ÓëÈÕ¾ãÔö£¬2015 Äêµ× iOS ¶Ë App ´óСһ¶È³¬¹ý 110MB¡£ÓÉÓÚ App Store µÄÏÞÖÆ£¬³¬¹ý 100MB µÄ App Ö»ÄÜÔÚ Wi-Fi ϲÅÄÜÏÂÔØ£¬Õâ¾Íµ¼ÖÂÁËÓû§ÆÚÍû¶¨»úƱ¡¢¾Æµêʱ²»ÄÜʹÓà 3G/4G ÍøÂçËæÊ±ÏÂÔØÈ¥ÄĶùÂÃÐпͻ§¶Ë£¬Òò´Ëµ±Ê±Ò»¸öÆÈÇеÄÐèÇó¾ÍÊǼõÉÙ App µÄ´óС¡£

Ëõ¼õ App °ü´óСµÄ³£¼û˼·ÊÇÈ¥³ýÈßÓàµÄÒµÎñ¡¢ÓÅ»¯Í¼Æ¬×ÊÔ´µÈ£¬µ«ÊÇÕâÑùÒÀÈ»ºÜÄѽ« App µÄ´óС¼õÉÙµ½ 100MB ÒÔÏ¡£¶ø´Ó¸ù±¾ÉϼõÉÙ App ´óС¾ÍÐèÒª¼õÉÙ Native µÄÒ³Ãæ£¬É¾¼õÒµÎñÏÔÈ»²»ÊÇÒ»¸ö¿ÉÐеķ½°¸£¬Õâ¾ÍÒªÇóÎÒÃǽ«Ò³Ãæ×ö³É¿ÉÒÔ¶¯Ì¬»¯ÅäÖá£

ÔÚ QRN ֮ǰ£¬Qunar ÄÚ²¿Ò»Ö±´æÔÚÓÐÎÒÃÇÍŶÓÍÆ³öµÄÒ»Ì׿ÉÒÔÖ§³Ö¶¯Ì¬»¯ÅäÖÃµÄ¿çÆ½Ì¨ App ¿ª·¢¿ò¼Ü¡ª¡ªHY¡£HY ÊÇ»ùÓÚ HTML5 µÄ Hybrid ¿ª·¢¿ò¼Ü£¬ÔÚ Qunar App ÖÐÒѾ­ÓдóÁ¿µÄÒµÎñʹÓø÷½°¸¿ª·¢¡£µ«ÊÇ HTML5 µÄ½â¾ö·½°¸´æÔÚÌåÑéºÍÐÔÄÜÁ½·½ÃæµÄÎÊÌ⣬±íÏÖΪ»ùÓÚ HY ¿ª·¢µÄÒ³ÃæºÜÄÑ´ïµ½Ò»¸öÔ­ÉúµÄÓû§ÌåÑ飬ÔÚµÍ¶Ë Android »úÉÏÌåÑé²î£¬ÕâÔÚһЩ¸´Ôӵ͝»­³¡¾°ÖÐÓÈΪÃ÷ÏÔ¡£ÕâЩÎÊÌâÆäʵÊÇ HTML5 ·½°¸µÄ»ùÒòËù¾ö¶¨£¬Òò´ËΪÁ˼õÉÙ App µÄ´óСÎÒÃÇÆÈÇÐÐèÒªÒ»¸öеÄÖ§³Ö¶¯Ì¬»¯ÅäÖÃµÄ¿çÆ½Ì¨ App ¿ª·¢¿ò¼Ü¡£

¾­¹ýһϵÁеĵ÷ÑкÍÌÖÂÛºó£¬ÎÒÃǾö¶¨³¢ÊÔʹÓà Facebook ¿ªÔ´µÄ React Native ×÷ΪÐÂµÄ¿çÆ½Ì¨ÒÆ¶¯¿ª·¢¿ò¼Ü£¬ÕâÊÇÒòΪ RN ¾ßÓÐÒÔÏÂÌØÐÔ£º

1.Ö§³Ö¶¯Ì¬»¯£ºRN µÄÒ³ÃæÂß¼­Ê¹Óà JavaScript£¨ÏÂÎļò³Æ JS£©À´¿ØÖÆ£¬Òò´ËÎÒÃÇ¿ÉÒÔ×öµ½¶¯Ì¬·¢²¼¡£

2. ¿çƽ̨ÐÔ£ºRN ±¾ÉíÊÇÖ§³Ö iOS ºÍ Android Á½¸öƽ̨µÄ¿ª·¢¡£Í¬Ê±ÓÉÓÚÆäÒ³Ãæ¿ª·¢·½Ê½ÊÇÍêÈ« Web »¯µÄ JS ºÍ React£¬Õâ¾ÍÈà RN µÄ Web ¶ËʵÏÖ³ÉΪ¿ÉÄÜ£¨React Web ¾ÍÊÇ QRN µÄ Web ¶ËʵÏÖ£©£¬Òò´Ë RN ÍêÈ«¿ÉÒÔ×öµ½Ò»Ì×´úÂëÈý¶ËÔËÐС£

3. Native µÄÓû§ÌåÑ飺RN Ò³ÃæÊ¹ÓõÄÊÇ Native µÄÔ­Éú×é¼þ£¬¾ßÓиüÇ¿µÄ¿É¶¨ÖÆÐÔ£¬ÍêÈ«¿ÉÒÔ×öµ½Ò»¸ö Native µÄÓû§ÌåÑé¡£

ΪÁËÑéÖ¤ RN µÄ¼¼Êõϸ½Ú£¬2015 Äê 12 ÔÂÎÒÃÇÔÚ Qunar µÄÒ»¸öÈÈÃŶÀÁ¢¿Í»§¶Ë¡°È¥ÄĶù˯¡±ÉÏÏßÁË»ùÓÚ RN ¿ª·¢µÄ¾ÆµêÓû§µãÆÀÒ³£¬ÆäÖаüÀ¨Ïà²áµÄѡȡ½çÃæ¶¼ÊÇÓà RN À´Íê³É£¨Èçͼ 1 Ëùʾ£©£¬¸ÃÏîĿͬʱÉÏÏßÁË iOS ºÍ Android£¬Ò³ÃæµÄÕûÌåЧ¹û³¬¹ýÔ¤ÆÚ£¬ÕâÒ²ÈÃÎÒÃǼáÐÅ React Native ÊÇÍêÈ«¿ÉÒÔ×÷Ϊһ¸öÐÂµÄ¿çÆ½Ì¨¿ª·¢¿ò¼Ü¡£

ͼ 1 ¡°È¥ÄĶù˯¡±¿Í»§¶Ë¾ÆµêÓû§µãÆÀÒ³Ãæ

ÔÚÉÏÏßÈ¥ÄĶù˯µÄ¾ÆµêµãÆÀÒ³µÄ¹ý³ÌÖУ¬ÎÒÃÇÒ²·¢ÏÖÁ˺ܶà RN ´æÔÚµÄÎÊÌ⣬±ÈÈ粿·Ö RN ×é¼þÒòΪʹÓõÄÊÇ Native µÄ×é¼þËùÒÔ»¹´æÔÚÆ½Ì¨²îÒì¡¢´ò¿ª RN Ò³ÃæÊ±ÐèÒªÒ»¸ö½Ï³¤µÄ¼ÓÔØÊ±¼äµÈ¡£ÎªÁ˽â¾öÕâЩÎÊÌ⣬ÎÒÃÇ»¨ÁË 3 ¸öÔµÄʱ¼ä»ùÓÚ RN ¶¨ÖÆÁËÒ»Ì׸ü¿ì¡¢¸üºÃ¡¢¸üͳһµÄ¿çƽ̨¿ª·¢¿ò¼Ü QRN¡£

´ó¹æÄ£Ó¦ÓÃÏÖ×´

2016 Äê 3 ÔÂÎÒÃÇÉÏÏßÁ˵ÚÒ»¸ö»ùÓÚ QRN µÄÒ³Ãæ£ºÈ¥ÄĶùÂÃÐÐ iOS ¿Í»§¶ËµÄ¾ÆµêÊ×Ò³¡£ÔÚÖ®ºóµÄ¼¸¸öÔÂÖÐÎÒÃÇÉÏÏßÁË´óÁ¿»ùÓÚ QRN ¿ª·¢µÄÏîÄ¿£¬µ½ 2016 Äê 10 ÔÂÔÚÈ¥ÄĶùÂÃÐпͻ§¶ËÖÐÒÑÓг¬¹ý 20 ¸ö QRN ÏîÄ¿£¬ÆäÖÐÓÐ 14 ¸öÊÇͬʱÉÏÏßÁË iOS ºÍ Android¡£Æ½¾ùÿ¸öÏîÄ¿ÓÐ 8 ¸öÒÔÉϵÄÒ³Ãæ£¬ÔÚ´ËÖ®ÖУ¬¾ÆµêÒ»¸ö QRN ÏîÄ¿¾ÍÓжà´ï 20 ¸öÒ³Ãæ¡£

ÔÚÈ¥ÄĶùÂÃÐпͻ§¶ËÖÐÊ×Ò³µÄ¾Æµê£¨½ö iOS£©¡¢¿ÍÕ»ÃûËÞ¡¢½ðÈÚÀí²ÆµÄÒ»¼¶Èë¿Ú¾ùΪ QRN Ò³Ãæ¡£²»½öÈç´Ë£¬¶ÔÓÚºËÐÄÒµÎñÁ÷³Ì£¬ÀýÈç¶©µ¥ÁбíÒ³¡¢¶©µ¥ÏêÇéÒ³¡¢Óû§µÇÂ¼Ò³ÃæÒ²¶¼Ì滻ΪÁË QRN Ò³Ãæ£¨¼ûͼ 2£©£¬ÕâÆäÖаüº¬Á˺ܶàÈÕ¾ùǧÍò PV µÄÒ³Ãæ¡£

ͼ 2 QRN Ò³ÃæÌæ»»

QRN µÄ¼Ü¹¹Ìصã

QRN ÔÚÈ¥ÄĶùÄÚ²¿´ó¹æÄ£µÄÓ¦ÓÃÓëÆä¼Ü¹¹Ãܲ»¿É·Ö£¬ÔÚÉè¼Æ QRN ¿ò¼ÜʱÎÒÃÇÖ÷Òª¿¼ÂÇÁËÏÂÃæÈýµã£º

1.ÒµÎñʹÓõıãÀûÐÔ£º²¿·Ö RN ×é¼þ£¬±ÈÈç Switch¡¢Picker µÈ²¢Ã»ÓÐ×öµ½ iOS¡¢Android Á½¶ËµÄ UI ·ç¸ñͳһ£¬¶øÔÚ Qunar ÒÆ¶¯¿ª·¢ÖÐÒªÇóÁ½¸öƽ̨¾ßÓÐÒ»Ö嵀 UI ·ç¸ñ£¬Òò´ËΪÁ˱£Ö¤ÒµÎñʹÓõıãÀûÐÔ£¬ÎÒÃÇÐèÒª½øÒ»²½Ä¨Æ½Æ½Ì¨²îÒì¡£

2. ÓëÏÖÓÐÒ³ÃæµÄ¹²´æ£ºÔÚ Qunar ÒÆ¶¯¶ËÖв»½ö½ö´æÔÚ Native Ò³Ãæ£¬»¹´æÔÚ×Å´óÁ¿ HY Ò³Ãæ£¬ÔõôºÍÕâЩÏÖÓÐÒ³Ãæ½øÐй²´æÒ²ÊÇÎÒÃÇÉè¼Æ QRN ËùÐ迼ÂǵÄÎÊÌâ¡£

3.Ö§³ÖÈÈ·¢¸üУºRN ÊÇÒ»¸öÖ§³Ö¶¯Ì¬»¯µÄÒÆ¶¯ App ¿ª·¢¿ò¼Ü£¬Òò´ËÎÒÃÇÐèÒª¿¼ÂÇÉè¼ÆÒ»¸öÍêÉÆµÄÈÈ·¢¸üлúÖÆÀ´ÊµÏÖ QRN Ò³ÃæµÄ bugfix ÉõÖÁÌṩÉÏÏßÐÂÒ³Ãæ¡£

ÄÇô£¬ÎÒÃÇÊÇÔõô×öµÄÄØ£¿

½øÒ»²½Ä¨Æ½Æ½Ì¨²îÒì

RN µÄ Switch ʹÓõÄÊÇ iOS ºÍ Android ¸÷×ÔÆ½Ì¨µÄ UI ·ç¸ñ£¨Èçͼ 3 Ëùʾ£©£¬ÕâÔÚʹÓÃʱ¼«Îª²»±ã¡£

ͼ 3 React Native µÄ Switch Á½¶Ë UI ·ç¸ñ¶Ô±È

ÔÚ QRN ÖÐÎÒÃÇÌṩÁË iOS ºÍ Android ͳһµÄ UI ·ç¸ñ£¬·½±ãÒµÎñʹÓã¨Èçͼ 4 Ëùʾ£©£¬¶ÔÓÚÆäËû²»Í³Ò»µÄ»ù´¡ UI ×é¼þ£¬ÎÒÃǶ¼ÔÚ Android ÉÏ»ùÓÚ iOS ·ç¸ñÖØÐÂʵÏÖ£¬±£Ö¤ÁËÁ½¸öƽ̨µÄ UI ͳһ¡£

ͼ 4 QRN ÖÐͳһµÄ Switch UI ·ç¸ñ

ͬʱ£¬ÎÒÃÇҲʹÓà JS ʵÏÖÁËһЩ³£¼ûµÄÍⲿ UI ×é¼þ£¬ÀýÈçͼ 5 ÖÐÖ§³Ö²à»¬²Ù×÷µÄ ListView ºÍÈÕÀúµÈ×é¼þ¡£Ê¹Óà JS ʵÏÖµÄ×é¼þ¾ßÓкÜÇ¿µÄ¿çƽ̨ÐÔ£¬Èç¹ûÕâЩ UI ×é¼þ³öÏÖ Bug£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ýÈÈ·¢¸üпìËÙÐÞ¸´£¬Æä³É±¾Ô¶µÍÓÚÐÞ¸´Ò»¸ö Native µÄ×é¼þ£¨´Óhttp://ued.qunar.com/qrn/extraUI.html ¿É²é¿´¸ü¶àµÄ QRN Íⲿ JS UI ×é¼þ£©¡£

ͼ 5 Ö§³Ö²à»¬²Ù×÷µÄ ListView ºÍÈÕÀú×é¼þÑÝʾ

³ýÁË UI ÉϵIJ»Í¬£¬iOS ºÍ Android ƽ̨µÄ²îÒ컹ÌåÏÖÔÚÆäËûµØ·½£¬ÆäÖÐÒ»¸ö²»Í¬µã¾ÍÊÇ App ״̬À¸¡£ÔÚ iOS ÉÏ´Ó iOS 7 ¿ªÊ¼¾ÍÖ§³Ö³Á½þʽ״̬À¸£¬ÇҸ߶ȾùΪ 20£¬µ«ÊÇ Android ÉÏÓÉÓÚϵͳ°æ±¾ºÍ»úÐ͵IJ»Í¬£¬ÊÇ·ñÖ§³Ö³Á½þʽ״̬À¸¡¢×´Ì¬À¸¸ß¶ÈÕâЩÊôÐÔÔÚд RN Ò³ÃæÊ±¶¼ÐèÒª¹Ø×¢£¬µ« RN ²¢Ã»ÓÐÌṩһ¸öͳһµÄ API È¥»ñÈ¡¡£¶ÔÓÚÕâЩ²îÒ죬ÔÚ QRN ÖÐÎÒÃǶ¼ÌṩÁËͳһµÄ API ·½±ãÒµÎñÔÚд QRN Ò³ÃæÊ±¿ÉÒÔÖ±½Ó»ñÈ¡£¬´Ó¶øÎÞÐèÇø·Öƽ̨¡£

ͨ¹ýÕâЩ·½Ê½ÎÒÃÇÕæÕý×öµ½ÁË¿çÆ½Ì¨ÐÔ£¬È¥ÄĶùÂÃÐпͻ§¶ËÊ×Ò³µÄ¿ÍÕ»ÃûËÞÒ³ÃæÍ¬Ê±ÉÏÏßÁË iOS ºÍ Android£¬Æä JavaScript ´úÂëÖ»ÓÐ 6 ´¦ Platform ½øÐÐÆ½Ì¨µÄÅжϣ¬¶øÆäÔ´ÓÚÐèÒªºÍ iOS¡¢Android ÏÖÓÐµÄ Native Ò³Ãæ½øÐн»»¥£¬±¾ÉíÁ½¸öƽ̨µÄ Native Ò³Ãæ½øÐÐÊý¾Ý´«µÝµÄ Scheme »á´æÔÚ²îÒ죬ËùÒÔÐèÒª½øÐÐÆ½Ì¨µÄÅжϡ£¿ÉÒÔ˵ʹÓà QRN ½øÐÐÒ³ÃæµÄ¿ª·¢ÍêÈ«¿ÉÒÔ×öµ½²»ÐèҪƽ̨´úÂëµÄÅжϣ¬Ò»Ì×´úÂëͬʱÔËÐÐÔÚÁ½¸öƽ̨ÉÏ¡£

JS Bundle µÄ²ð·Ö

RN ÖÐ×îÖÕ pack ³öÀ´µÄ JS Bundle Îļþ²»½ö½ö°üº¬ÁËÒµÎñµÄÒ³Ãæ JS Âß¼­£¬»¹°üº¬ÁË RN ×é¼þºÍÆä¿ò¼ÜµÄ JS¡£ÔÚ QRN ÖУ¬ÎÒÃÇ°Ñ JS Bundle Îļþ²ð·Ö³ÉÁË QRN µÄ¿ò¼Ü JS ºÍÒµÎñ JS£¨Èçͼ 6 Ëùʾ£©£¬ÔÚ²ð·ÖºóËùÓеÄÒµÎñ¹²ÓÃÒ»·Ý QRN ¿ò¼Ü JS£¬ÕâÑùÿ¸öÒµÎñÖ»ÐèÌṩ×Ô¼ºµÄÒµÎñ JS£¬Í¨¹ýËüÃǵIJð·Ö£¬ÓÐЧµØ¼õÉÙÁË JSBundle µÄ´óС£¬Í¬Ê±Ò²·½±ãÁ˺óÐøµÄÔ¤¼ÓÔØºÍ»º´æ¡£

ͼ 6 ²ð·Ö JS Bundle

QRN µÄÔ¤¼ÓÔØºÍ»º´æ

RN Öд´½¨ RCTRootView£¨RN Ò³ÃæäÖȾµÄ View£©Ö®ºó»áÓÐÒ»¸ö°×ÆÁµÄʱ¼äµÈ´ý RN »·¾³µÄ³õʼ»¯ºÍ¼ÓÔØ JS Bundle Îļþ£¬Õâ¸öʱ¼ä»á½Ó½ü 1s¡£ÔÚ QRN ÖУ¬ÎÒÃÇÌṩһ¸öÒì²½»ñÈ¡ RCTRootView µÄ·½·¨£¬»ñÈ¡µÄ RCTRootView ÒѾ­Íê³ÉÁË RN »·¾³µÄ³õʼ»¯£¬²¢ÒѼÓÔØÍê QRN µÄ¿ò¼Ü JS ºÍÒµÎñ JS£¬Õâʱ¿ÉÒÔÖ±½Ó¿ªÊ¼äÖȾ¡£

ΪÁ˼õÉÙ QRN ÖлñÈ¡ View µÄʱ¼ä£¬ÎÒÃǽøÐÐÁË RN »·¾³µÄÔ¤¼ÓÔØºÍ»º´æ¡£ËùνԤ¼ÓÔØ¾ÍÊÇÌáǰ³õʼ»¯ºÃÒ»¸öÒѾ­¼ÓÔØ QRN ¿ò¼Ü JS µÄ RN »·¾³£¬ÕâÑù¾ÍÖ»ÐèҪȥ¼ÓÔØÒµÎñ JS£¬¿ÉÒÔËõ¶Ì×îÉÙ 200ms µÄµÈ´ýʱ¼ä¡£»º´æÖ¸µÄÊÇÎÒÃǻỺ´æÒ»¸öÒµÎñÒѾ­¼ÓÔØºÃµÄ RN »·¾³£¬µ±Ï´νøÈëÕâ¸öÒµÎñʱ¾Í¿ÉÒÔÖ±½Ó¿ªÊ¼Ò³ÃæµÄäÖȾ¡£

ÔÚ QRN ÖÐÎÒÃǸøÃ¿¸öÒµÎñÌṩÁËÒ»¸ö¶ÀÁ¢µÄ RN »·¾³£¬±£Ö¤ÁËÒµÎñµÄ¶ÀÁ¢ÐÔ£¬µ±Ò»¸öÒµÎñµÄ JS ´úÂë³öÏÖÎÊÌâʱ²¢²»»áÓ°ÏìÆäËûÒµÎñ¡£ÕâÖÖ QRN ÒµÎñÍêÈ«½âñîµÄ·½Ê½·Ç³£ÊʺÏÀàËÆÓÚ Qunar ÕâÖÖÒµÎñ¸ôÀëµÄÇé¿ö¡£

³ÉÊìµÄÀëÏß×ÊÔ´°ü¿ò¼Ü

ÔÚ QRN ÖУ¬ÒµÎñ JS ÊÇÏßÉÏ×ÊÔ´£¬ÎªÁ˼õÉÙÓû§ÏÂÔØÊ±¼ä£¬ÎÒÃǸø QRN Ìí¼ÓÁËÀëÏß×ÊÔ´°üµÄÖ§³Ö£¬Èç¹ûÆäÖÐÓжÔÓ¦ÍøÂçÇëÇóµÄÍøÂç×ÊÔ´£¬ÄÇôÇëÇó»áÖ±½Ó·µ»Ø±¾µØÀëÏß×ÊÔ´°üÖеÄÎļþ£¬Õâ¸öʱ¼äºÍ¶ÁÈ¡±¾µØÎļþÒ»Ñù£¬Òò´ËÓÐЧ¼õÉÙÁËÍøÂçÇëÇóÒµÎñ JS µÄʱ¼ä¡£Í¬Ê±¶ÔÓÚÒµÎñʹÓõÄͼƬµÈ×ÊÔ´£¬ÎÒÃÇÒ²»á·ÅÔÚÀëÏß×ÊÔ´°üÖмӿì×ÊÔ´´ò¿ªËÙ¶È¡£ÀëÏß×ÊÔ´°üµÄʹÓò»½ö½ö¼õÉÙÁËÏÂÔØÒµÎñ JS µÄʱ¼ä£¬¶øÇÒÈà QRN Ò³Ãæ¿ÉÒÔÔÚÀëÏßÇé¿öÏ´ò¿ª£¬¸üÏñÒ»¸ö Native µÄÒ³Ãæ¡£

ĿǰËùÓеĶ¯Ì¬»¯Òƶ¯¿ª·¢¿ò¼Ü¶¼ÐèÒªÀëÏß×ÊÔ´°üµÄÖ§³ÖÀ´¼õÉÙ×ÊÔ´¼ÓÔØÊ±¼ä£¬Ã¿¸ö¹«Ë¾Ó¦¸Ã¶¼»áÓÐ×Ô¼ºµÄÒ»Ì×ʵÏÖ»úÖÆ£¬QRN ʹÓõÄÀëÏß×ÊÔ´°üÒѾ­ÔÚ HY ÖÐÓ¦ÓöàÄ꣬Æä»ùÓÚ BSDiff µÄ²î·Ö¸üлúÖÆºÍÖÇÄÜ»¯µÄ¸üвßÂÔ¿ÉÒÔÔÚ±£Ö¤½ÚÊ¡Óû§Á÷Á¿µÄͬʱӵÓм«¸ßµÄ×ÊÔ´°ü¸üÐÂÂÊ¡£Ò»¸ö 1.2MB µÄ×ÊÔ´°ü£¬Æä¸üÐÂʱ½ö½öÐèÒªÏÂÔØ²»µ½ 1KB µÄ²¹¶¡¡£¸ÃÀëÏß×ÊÔ´°ü¿ò¼ÜÊʺϼÓËÙÒÆ¶¯¿ª·¢Öеĸ÷ÖÖÍøÂç×ÊÔ´ÇëÇó£¬ÒýÈë¿ò¼Ü²»ÐèÒª¶ÔÒÑÓеÄÍøÂçÇëÇó´úÂë×öÈκÎÐ޸ģ¬Õû¸ö×ÊÔ´°ü¿ò¼Ü¶ÔÓÚ×ÊÔ´ÇëÇó·½ÊÇÎÞ¸ÐÖªµÄ¡£

×Ô¶¨Òå IconFont£¨Í¼±ê×ÖÌ壩µÄÖ§³Ö

ÔÚ QRN ÖÐÎÒÃÇÌí¼ÓÁË×Ô¶¨Òå IconFont µÄÖ§³Ö£¬¿ÉÒÔʹÓà IconFont À´×÷Ϊͼ±ê¡£ÒµÎñÖ»ÐèÒªÔÚ JS ´úÂëÖÐÅäÖÃÐèÒª¼ÓÔØµÄ IconFont ¾Í¿ÉÒÔ×Ô¶¯Íê³É×ÖÌåµÄÌí¼Ó£¬Õû¸ö¹ý³ÌÎÞÐè±àдÈκΠNative ´úÂë¡£ÓëʹÓÃͼƬ×öͼ±êÏà±È£¬IconFont ×÷ΪʸÁ¿Í¼¸üÇåÎú¡¢¸üÇáÁ¿Ò²¸üÁé»î¡£

ͼ 7 ËùʾµÄÈ¥ÄĶùÂÃÐпÍÕ»ÃûËÞÒ³ÃæÖеÄסËÞÀàÐÍͼ±ê¾ÍÊÇ»ùÓÚ IconFont ʵÏÖ£¬Í¨¹ýÉèÖÃ×ÖÌåÑÕÉ«¡¢ÒõÓ°µÈÊôÐԾͿÉÒÔ¿ØÖÆÍ¼±êµÄЧ¹û£¬Èç¹ûʹÓÃͼƬµÄ»°¾ÍµÃΪÿ¸ö²»Í¬µÄ´óСºÍЧ¹û×¼±¸²»Í¬µÄÎļþ¡£

ͼ 7 »ùÓÚ IconFont ʵÏÖµÄסËÞÀàÐÍͼ±ê

ÎÞÂñµãͳ¼Æ·½°¸Ö§³Ö

QRN ÖÐÔö¼ÓÁË¶Ô Qunar ÎÞÂñµãͳ¼Æ·½°¸ QAV µÄÖ§³Ö£¬Í¨¹ýÐÞ¸Ä RN ¿ò¼Ü£¬ÎÒÃÇ×öµ½ÁË JS ´úÂëÎÞÐèÈκÎÐ޸ľͿÉÒÔͳ¼ÆÓû§µÄµã»÷¡¢Ìø×ªÊý¾Ý£¬½áºÏ QAV ÌṩµÄÓû§Ï¸²é¡¢Ò³ÃæÁ÷Á¿·ÖÎöµÈ¶àά¶ÈµÄÓû§·ÖÎöÇþµÀ£¬Èà App ¿ª·¢Õß¿ÉÒÔ¶´²ìÓû§µÄÐÐΪ¡£¶øÒýÈëÕâÌ×ÎÞÂñµã·½°¸·Ç³£¼òµ¥£¬Ö»Ð轫 RN Ìæ»»Îª QRN ¼´¿É£¬²»ÓöÔÒÑÓÐµÄ RN JS ´úÂë×öÈκεÄÐ޸ġ£

È«Ð嵀 ScrollView ºÍ ListView

ScrollView ºÍ ListView ÊÇÒµÎñ×ʹÓõÄÁ½¸ö×é¼þ£¬µ«ÊÇ RN µÄ ScrollView ºÍ ListView µÄÐÔÄܺÍÄÚ´æÕ¼Óôﲻµ½ÎÒÃÇµÄÆÚÍû¡£Ä¿Ç°ÍøÉÏÓкܶ࿪ԴµÄÓÅ»¯·½°¸£¬ÔÚ QRN ÖÐÎÒÃÇÒ²Éè¼ÆÁËÒ»Ì×È«Ð嵀 ScrollView ºÍ ListView£¬¿ÉÒÔ´øÀ´¸ü¸ßµÄÁé»îÐԺ͸üСµÄÄÚ´æÕ¼Óá£

QRN µÄ ScrollView Óë RN ScrollView ×î´óµÄ²»Í¬ÔÚÓÚǰÕߵĹö¶¯ÊÖÊÆÊÇÓÉ JS ¿ØÖÆ£¬¶øºóÕßʹÓõÄÊÇ Native µÄ ScrollView£¬ÔÚ Native ´¦ÀíÁ˹ö¶¯ÊÖÊÆºó֪ͨ JS ScrollView ¹ö¶¯µ½ÄĸöλÖã¬Ïêϸ¶Ô±È¿É¼ûͼ 8¡£

ͼ 8 QRN ScrollView Óë RN ScrollView ´¦Àí¶Ô±È

ÒòΪ RN ÖгýÁË ScrollView ºÍ ListView ÒÔÍ⣬ÆäËû×é¼þµÄÓû§ÊÖÊÆ¾ùÓÉ JS ´¦Àí£¬Èç¹ûʹÓà QRN ScrollView Ôò¿ÉÒÔ±£Ö¤ RN Ò³ÃæËùÓеÄ×é¼þ¶¼Ê¹ÓÃÁËͳһµÄÊÖÊÆ´¦Àí»úÖÆ£¬´Ó¶ø´øÀ´¼«´óµÄÁé»îÐÔ£¬Èà ScrollView ǶÌ× ScrollView µÄЧ¹û¸ü¼Ó×ÔÈ»¡£

QRN µÄ ListView »ùÓÚ React µÄÐéÄâ DOM Diff Ë㷨ʵÏÖÁËÕæÕýÒâÒåÉ쵀 Cell ¸´Óã¬Í¼ 9 ÏÔʾÁËÔÚ iPhone 7 ÉÏͬÑù 2000 ÐÐÊý¾Ý»¬¶¯µ½µ×ʱµÄÄÚ´æÕ¼ÓÃÇé¿ö£¬¿ÉÒÔ¿´µ½ QRN µÄ ListView ÄÚ´æÕ¼ÓÃһֱά³ÖÔÚ 70MB ÒÔÄÚ£¬¶ø RN µÄ ListView ÔÚ»¬¶¯¹ý³ÌÖÐÄÚ´æ×î¸ß´ï 1.3GB£¬×îÖÕÎȶ¨µÄÄÚ´æÕ¼ÓÃÒ²½Ó½ü 600MB£¬ÏÔÈ»¶ÔÓڴ󲿷ֵĻúÐÍ£¬RN ListView ÕâÑùµÄÄÚ´æÕ¼ÓûᵼÖ App ÉÁÍË¡£

ͼ 9 ÄÚ´æÕ¼Ó÷åÖµ¶Ô±È

QRN µÄ ListView Óë RN ListView Ó÷¨ÍêȫһÖ£¬Ò»¸öÏÖÓÐµÄ RN ÏîĿֻÐèÒª½« import{ListView}from'react-native'ÐÞ¸ÄΪ import{ListView}fromqunar-react-native ¼´¿ÉʹÓà QRN µÄ ListView¡£

ÓÉÓÚ QRN µÄ ScrollView »áÔÚ JS Öд¦Àí¹ö¶¯ÊÖÊÆ£¬QRN µÄ ListView Ò²»áÔÚ JS Öд¦Àí cell µÄ¸´Óã¬Òò´ËÒ»µ© JS Ï̸߳ºµ£¹ýÖØ¾Í»áµ¼ÖÂÒ³ÃæµÄ¿¨¶Ù£¬ÕâÒ²ÊÇĿǰ QRN ScrollView ºÍ ListView ´æÔڵIJ»×㣬ºÃÔÚÆäÖд󲿷ֶ¼¿ÉÒÔͨ¹ýÓÅ»¯ JS ´úÂë½â¾ö¡£

Óöµ½µÄÎÊÌâ

ÔÚ´ó¹æÄ£Ó¦Óà QRN µÄ¹ý³ÌÖУ¬ÎÒÃÇÒ²Óöµ½Á˺ܶàÎÊÌ⣬Ö÷Òª±íÏÖΪ£º

node_modules ÒÀÀµÎÊÌâ

npm ²¢Ã»Óкܺõؽâ¾öÄ£¿éÒÀÀµ³åÍ»µÄÎÊÌ⣨¹ØÓÚ npm ´¦ÀíÄ£¿éÒÀÀµ³åÍ»µÄ·½Ê½¿ÉÔĶÁ£º

http://www.alloyteam.com/2016/03/master-npm/

µ«ÊÇÔÚ RN ÖÐÕâ¸öÇé¿ö»á±äµÃ¸ü¼Ó¸´ÔÓ£¬RN pack °üµÄÂß¼­»áĬÈÏʹÓõÚÒ»¼¶Ä¿Â¼ÏµÄÄ£¿é£¬Ò²¾ÍÊÇ˵Èç¹ûÒ»¸öÄ£¿é A£¬ÔÚµÚÒ»¼¶Ä¿Â¼Ï°²×°Á˰汾 A@1£¬µ«ÊÇÁíÍâÒ»¸öÄ£¿é B ÒÀÀµÁËÄ£¿é A@2£¬ÄÇôÔÚÄ£¿é B µÄ node_modules Ï»ᰲװģ¿é A@2£¬µ«ÊÇ RN pack ³öÀ´µÄ JS Bundle ÖÐÖ»»á´æÔÚ A@1¡£

ÒòΪ QRN ÖнøÐÐÁË¿ò¼Ü JS ºÍÒµÎñ JS µÄ²ð·Ö£¬¶øÍ¬Ò»¸öÄ£¿éÖ»»áÔÚ¿ò¼Ü JS ºÍÒµÎñ JS ÖдæÔÚÒ»·Ý£¬Õâ¾Íµ¼ÖÂÁËÎÒÃÇÐèÒª±£Ö¤²»Í¬µÄÒµÎñ pack JS Bundle ʱһ¼¶Ä¿Â¼Ï QRN ÒÀÀµµÄÄ£¿é¶¼ÊÇÖ¸¶¨°æ±¾¡£Ä¿Ç°£¬ÎÒÃÇ×Ô¶¨ÒåÁËÒ»Ì×¹¤¾ßÀ´½â¾öÕâ¸öÎÊÌâ¡£

React Native ¿ª·¢

RN µÄ¿ª·¢Ê¹ÓÃÁË´óÁ¿µÄǰ¶Ë¹¤¾ß£¬Èç JSX¡¢Redux µÈ¡£Òò´Ë£¬Ò»¸öǰ¶Ë¿ª·¢ÕßÀ´¿ª·¢ RN ʱ»á¸üÈÝÒ×ÉÏÊÖ£»µ«ÊÇ RN µÄ¿ª·¢ÓÖÐèÒªÁ˽â Native µÄ²¼¾Ö£¬Õâµã Native ¿ª·¢Õß»á¸ü¼ÓÊìϤ¡£

ĿǰÔÚ Qunar ÄÚ²¿£¬Í¬Ê±ÓÐǰ¶ËÍÅ¶ÓºÍ Native ¿ª·¢ÍŶÓÔÚ½øÐÐ QRN Ò³ÃæµÄ¿ª·¢¡£ÔÚÎÒÃÇ¿´À´£¬RN µÄ¿ª·¢ÊÇÒ»¸öȫеĿª·¢·½Ê½£¬Æä¼È²»ÊÇ´«Í³µÄǰ¶Ë¿ª·¢£¬Ò²²»Äܼòµ¥µØµ±×÷ iOS¡¢Android ¿ª·¢¡£Ïà±ÈÓÚǰ¶Ë¼¸Ê®ÄêµÄ¿ª·¢ÀúÊ·£¬RN ´Ó¹«²¼µ½ÏÖÔÚ»¹²»×ã 2 Ä꣬¹ØÓÚ RN »¹È±·¦×ã¹»¶àµÄÓÅ»¯¼¼ÇÉÓë×ÊÁÏ£¬ØÑ·¦µÄ¸ß¼¶ RN ¿ª·¢Õ߯äʵҲ×è°­ÁË RN µÄÍÆ¹ãÓëÓ¦Ó㬺ÃÔÚÕâ¸öÎÊÌâÏàÐÅ»áËæ×ÅÔ½À´Ô½¶àµÄÈËѧϰ RN ¿ª·¢µÃµ½¸ÄÉÆ¡£

Ò»Ö±±ä»¯µÄ¹Ù·½°æ±¾

RN Ŀǰ»¹´¦Óڱ仯ÖУ¬Ã¿Á½ÖÜ»áÓÐÒ»¸öа汾£¬´Ó 2017 Ä꿪ʼ£¬RN µÄ·¢²¼ÖÜÆÚ±äΪÿ¸öÔÂÒ»´Î£¬Öð½¥Ç÷ÓÚÎȶ¨¡£°æ±¾µÄƵ·±¸üÐÂÌØ±ðÊDz¼¾Ö CSS Layout µÄ¸Ä¶¯£¬»áµ¼ÖÂÏÖÓÐµÄ Flex ²¼¾Ö³öÏÖÎÊÌâ¡£ÏëÏóһϣ¬Ò»¸ö Web Ò³ÃæÔÚÒ»Äê¼äÒªÒÀ´Î¼æÈÝ IE6 ÖÁ IE10£¬ÕâÏÔÈ»ÊÇÐèÒª¿ª·¢Õß»¨·Ñ´óÁ¿¾«Á¦À´´¦Àí°æ±¾Éý¼¶Ëù´øÀ´µÄ¼æÈÝÎÊÌâ¡£

QRN ÔÚ 2016 Äê 10 ÔÂ×öÁËÒ»´Î¹Ù·½°æ±¾µÄͬ²½£¬½«»ùÓÚµÄ RN °æ±¾´Ó 0.20.0 Éý¼¶µ½ÁË 0.33.0£¬Éý¼¶Ö®ºóÐèÒªÒµÎñ½øÐÐËùÓÐÒ³ÃæµÄ»Ø¹é£¬Ö÷ÒªÊÇÒªÒµÎñ½â¾ö Flex ²¼¾ÖµÄ±ä»¯¿ÉÄܵ¼ÖÂÒ³ÃæÏÔʾ´íÎóµÄÎÊÌâ¡£Éý¼¶µÄÖ÷ҪĿµÄÊÇΪÁ˽â¾ö 0.20.0 ÖÐ RN ´æÔÚµÄ Bug£¬Õâ¸ö¹ý³ÌÖз¢ÏÖÉý¼¶ Base µÄ RN °æ±¾»á¸øÒµÎñÔì³É¸ºµ££¬ºóÐø QRN »áÆÀ¹Àͬ²½ RN а汾µÄÊÕÒæºÍ·çÏÕÀ´¾ö¶¨ÊÇ·ñÉý¼¶ Base µÄ RN °æ±¾¡£

дÔÚ×îºó

Qunar Ò»Ö±ÒÔÀ´¾ÍÊÇÒÔ¼¼ÊõÇý¶¯µÄ¹«Ë¾£¬¸ÒÓÚ³¢ÊÔ¸÷ÖÖеļ¼Êõ£¬ÔÚ RN ¿ªÔ´ºóÎÒÃÇÍŶӾÍÒ»Ö±ÔÚ̽ÌÖ App ÖÐÒýÈë RN µÄ¿ÉÐÐÐÔ¡£Ä¿Ç° QRN ÒѾ­ÔÚ Qunar ÄÚ²¿´ó¹æÄ£Ó¦Óã¬ÕâÒ²ÑéÖ¤ÁËÎÒÃÇ¶Ô RN µÄ¿´·¨£ºRN ÍêÈ«¿ÉÒÔʤÈκËÐÄÒµÎñÒ³Ãæ£¬ËäÈ»ºÍ Native µÄÒ³Ãæ»¹´æÔÚ²î¾à£¬µ«ÊÇÓÉÓÚÆäºÜÇ¿µÄ¿É¶¨ÖÆÐÔ£¬Òò´ËDZÁ¦ºÜ´ó¡£Ëæ×ÅÔ½À´Ô½¶à¸üÊìÁ·µÄ RN ¿ª·¢Õß³öÏÖ£¬RN ±Ø½«ÔÚÒµ½ç³ÉΪһ¸ö·Ç³£ºËÐĵÄÒÆ¶¯¿çƽ̨¿ª·¢·½°¸¡£ºóÐøÎÒÃǽ«°Ñ QRN ×ö³ÉÒ»¸ö SDK£¬¿ª·Å¸ø´ó¼ÒʹÓã¬Èà RN µÄ¿ª·¢±äµÃ¸ü¼Ó¿ì½Ý¡¢¼òµ¥£¬Î´À´Ò²Ôڼƻ®¿ªÔ´ QRN¡£

   
2450 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ