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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
̽Ë÷ReactÉú̬Ȧ
 
×÷Õߣºyczz À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-10-20
  2542  次浏览      27
 

2004Ä꣬¶ÔÓÚǰ¶ËÉçÇøÀ´Ëµ£¬ÊÇÀï³Ì±®Ê½µÄÒ»Äê¡£Gmailºá¿Õ³öÊÀ£¬Ëü´øÀ´»ùÓÚǰ¶ËäÖȾµÄÔ­ÉúÓ¦Óü¶±ðµÄÌåÑ飬Ïà¶ÔÓÚ֮ǰµÄ·þÎñ¶ËäÖÈ¾ÍøÒ³¿ÉνÌáÉýÁËÒ»¸öʱ´ú£¬´¥¶¯ÁËÓû§µÄGµã¡£×Ô´Ë£¬Ç°¶ËäÖȾµÄÍøÕ¾³ÉΪÎÞÊý¿ª·¢Õß×·ÖðµÄ·½Ïò¡£

ΪÁ˸üºÃµØ¿ª·¢Ç°¶ËäÖȾµÄ¡°Ô­Éú¼¶±ðµÄ¡±ÍøÕ¾£¬°üÀ¨BackboneºÍAngularÔÚÄÚµÄһϵÁÐǰ¶Ë¿ò¼ÜÓ¦Ô˶øÉú£¬²¢Ñ¸ËÙ»ñµÃÁË´ó¹æÄ£µÄ²ÉÓᣵ«ÊÇºÜ¿ìµØ£¬ÐµÄÐÔÄܺÍSEOÎÊÌâÒ²½Óõà¶øÀ´¡£¼¸¾­³¢ÊÔºó£¬TwitterÉõÖÁ´Óǰ¶ËäÖÈ¾ÖØ»Ø·þÎñÆ÷äÖȾ£¬¶øStrikinglyÒ²Ãæ¶Ô¹ýͬÑù¼¬ÊÖµÄÎÊÌâ¡£

2014Ä꣬React½øÈëÎÒÃǵÄÊÓÏß¡£ÈÃÈ˶úĿһеÄÊÇ£¬¶ÔÓÚÆäËû¿ªÔ´¿ò¼ÜÓöµ½µÄÖÖÖÖÎÊÌ⣬React¶¼×ÔÐŵظø³öÁ˽â´ð¡£¼¸ºõûÓÐÓÌÔ¥£¬ÎÒÃÇ¿ªÊ¼Ê¹ÓÃReactÀ´Öع¹Strikingly¡£Èô¸ÉÄêºó£¬µ±ÎÒÃÇ»ØÍû£¬Ò²Ðí»á·¢ÏÖ£¬2014ÄêÒ²ÊÇǰ¶ËÉçÇøÀï³Ì±®Ê½µÄÒ»Äê¡£

React¼ò½é

React¾¿¾¹ÊÇʲô£¿Facebook°ÑËü¼òµ¥µÍµ÷µØ¶¨Òå³ÉÒ»¸ö¡°ÓÃÀ´¹¹½¨UIµÄJavaScript¿â¡±¡£Õâ¸ö¶¨ÒåÒ²Ðí»áÈÃÎÒÃÇÁªÏëµ½Ðí¶àJavaScriptÄ£°åÓïÑÔ£¨±ÈÈçHandlebarsºÍSwig£©£¬»òÕßÔçÆÚµÄ¿Ø¼þ¿â£¨±ÈÈçYUIºÍDojo£©£¬µ«ÊÇReactËù»ùÓڵöºËÐĸÅÄîʹËüÓëÄÇЩģ°åºÍ¿Ø¼þ¿âåÄÈ»²»Í¬¡£ÊÂʵÉÏÕ⼸¸öºËÐĸÅÄî·Ç³£³¬Ç°£¬ÒѾ­¸øÕû¸öǰ¶ËÊÀ½ç´øÀ´Á˳å»÷ÐÔµÄÓ°Ïì¡£ËüÃǰüÀ¨£º

1.×é¼þºÍ»ùÓÚ×é¼þµÄÉè¼ÆÁ÷³Ì£»

2.µ¥ÏòÊý¾ÝÁ÷¶¯£»

3.ÐéÄâDOMÈ¡´úÎïÀíDOM×÷Ϊ²Ù×÷¶ÔÏó£»

4.ÓÃJSXÓ﷨ȡ´úHTMLÄ£°å£¬ÔÚJavaScriptÀïÉùÃ÷ʽµØÃèÊöUI¡£

Õ⼸Ìõ¼òµ¥µÄÔ­Ôò·ÅÔÚÒ»Æð´øÀ´ÁË´óÁ¿µÄºÃ´¦£º

1.ǰ¶ËºÍºó¶Ë¶¼Äܹ»´ÓReact×é¼þäÖÈ¾Ò³Ãæ£¬ÍêÈ«½â¾öÁËSEO³¤ÆÚÀ§ÈÅJavaScriptµ¥Ò³Ó¦ÓõÄÎÊÌ⣻

2.ÎÒÃÇ¿ÉÒÔ¼òµ¥Ö±½ÓµØÐ´Ç°¶Ë²âÊÔ¶øÍêÈ«ÍüµôDOMÒÀÀµ£»

3.×é¼þµÄ·â×°·½Ê½ºÍµ¥ÏòÊý¾ÝÁ÷¶¯Äܹ»¼«´óµØ¼ò»¯Ç°¶Ë¼Ü¹¹µÄÀí½âÄѶȡ£

ÎÒÃÇÀ´¿´Ò»¸öÀý×Ó£º

var HelloMessage = React.createClass({   
render: function() {
return <div>Hello {this.props.name}</div>;&nbsp;&nbsp;
}
});

React.render(<HelloMessage name="John" />, document.body);

Õâ¸öReact°æµÄHello WorldÒѾ­Õ¹ÏÖÁËReactµÄһЩºËÐÄÌØÐÔ¡£Ê×ÏÈ£¬HelloMessageÊÇÒ»¸öReact×é¼þ£»´´½¨ReactÓ¦ÓõÄʱºò£¬ÎÒÃÇ×ÜÊÇÒÔ×é¼þΪ³ö·¢µã¡£Ã¿¸ö×é¼þµÄºËÐÄÊÇÒ»¸örender·½·¨£¬ÔÚÆäÖÐÎÒÃǰÑÕâ¸ö×é¼þµÄpropsºÍstateÆ´×°µ½Ò»¸ö×îÖÕÒªäÖȾµÄÄ£°åÖУ¬È»ºó·µ»ØÕâ¸öÄ£°å£¨È·ÇеØËµÕâÀïÊÇÒ»¸öUIÃèÊö¶ø²»ÊÇ´«Í³ÒâÒåÉϵÄÄ£°å£©¡£Õâ¶Î´úÂëÀï¿´ÆðÀ´ÏñHTMLÒ»ÑùµÄ²¿·Ö¾ÍÊÇÖøÃûµÄJSXÓï·¨£¬ËüÊÇÔÚReactÖÐÃèÊö¡°Ä£°å¡±µÄ×î¼Ñ·½Ê½¡£

ÏÖÔÚ£¬ÒÔvar¿ªÍ·µÄµÚÒ»¶ÎÀïÎÒÃǶ¨ÒåÁËÒ»¸ö½ÐHelloMessageµÄ×é¼þ£»ÏÂÃæµÄReact.renderÕâÒ»ÐÐËù×öµÄ£¬ÔòÊǰÑÕâ¸ö×é¼þäÖȾµ½document.bodyÀ¡ªÒ²¾ÍÊÇÎÒÃÇʵ¼ÊµÄÒ³ÃæÉÏ¡£µ«ÔÚʹÓá´HelloMessage/¡µµÄʱºò£¬ÎÒÃÇ×öÁËÁíÒ»¼þÊ£ºname="John"¡£¿´ÆðÀ´ºÜÏñHTMLÖеÄÔªËØÊôÐÔ£¬µ«ÊǼÈÈ»JSX²»ÊÇHTML£¬Õâ¸öÓï·¨µÄ×÷ÓÃÊÇÊ²Ã´ÄØ£¿Êµ¼ÊÉÏ£¬Õâ¾ÍÊÇÎÒÃÇÏòReact×é¼þ´«ÈëpropsµÄ·½Ê½¡£»ØÍ·¿´µÚÒ»¶Î£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÔÚ×é¼þµÄÄÚ²¿ÓжÔthis.props.nameµÄÒýÓá£Õâ¸öname¾ÍÊÇÎÒÃǸոÕÖ¸¶¨µÄJohn£¡

¿´µ½ÕâÀÈç¹ûÄãÊìϤjQueryµÄ»°Ò²ÐíÔÚÏ룬ÕâÓë$(document.body).html('Hello John') ÓÐʲô¸ù±¾Çø±ðÄØ£¿

Õâ¾ÍÊÇÐéÄâDOM³ö³¡µÄµØ·½ÁË¡£ÎÒÃÇÏñдHTMLÒ»ÑùдJSX£¬µ«ÊÇJSX²¢²»»áÖ±½Ó±ä³ÉHTMLºÍDOM¡£ÔÚÄ»ºó£¬Reactά»¤×ÅÒ»¸öÐéÄâDOM£¬¶øÊµ¼ÊÉϱ»ä¯ÀÀÆ÷Ö±½Ó²Ù×÷µÄ¡°ÎïÀí¡±DOMÖ»ÊÇÕâ¸öÐéÄâDOMµÄͶӰ¡£ÐéÄâDOM²»ÒÀÀµÓÚä¯ÀÀÆ÷»·¾³£¬Ëü¿ÉÒÔÔËÐÐÔÚÈκÎJavaScriptÖ´Ðл·¾³¡£Õâ¾ÍÈÃÏÂÃæµÄ´úÂë³ÉΪ¿ÉÄÜ£º

var html =React.renderToString(<HelloMessage name="John"/>);res.send(html);  

Èç¹ûµÚ¶þÐÐÓеãÑÛÊ죬ÄãûÓÐ²Â´í¡ª¡ªÕâ¶Î´úÂë·¢ÉúÔÚ·þÎñÆ÷¶Ë£¡Êǵģ¬Í¬ÑùµÄ HelloMessage£¬ÎÒÃDz»½ö¿ÉÒÔÈÃReactÔÚǰ¶ËäÖȾµ½Ò³Ã棬ͬÑù¿ÉÒÔÔÚºó¶ËÖ±½ÓäÖȾ³ÉHTML×Ö·û´®£¬È»ºó°ÑËü·µ»Ø¸øÇ°¶Ë¡£·þÎñ¶ËÔ¤äÖȾ¾ÍÕâô×ÔÈ»µØ·¢ÉúÁË¡£

React´øÀ´µÄ¸ïÃüÐÔ´´ÐÂÊÇǰ¶ËÊÀ½ç¹ýÈ¥¼¸Äê×¶¯ÈËÐĵı仯¡£×Ô´Ó½Ó´¥ReactÒÔÀ´£¬ÎÒÃÇÉîÐÅReact»á³¹µ×¸Ä±ä¿Í»§¶Ë¿ª·¢Õߣ¨°üÀ¨Ç°¶Ë¡¢iOSºÍAndroid£©µÄ¿ª·¢ÌåÑé¡£ÔÚÏÂÃæµÄƪ·ùÀÎÒÃÇÏë´ÓËĸö´óµÄ·½Ïò¡ª¡ªÄ¿±êƽ̨£¨Targets£©¡¢Êý¾Ý´¦Àí£¨Data£©¡¢¹¤¾ß£¨Tools£©ºÍеÄÌôÕ½¡ª¡ª·ÖÏíÒ»ÏÂReactÉú̬ϵͳºÍÉçÇøµÄ½øÕ¹ºÍδÀ´Ç÷ÊÆ¡£

Ä¿±êƽ̨

¶ÔÓÚÐéÄâDOMµÄÌÖÂÛ£¬ºÜ¶àÈË»á˵ËÙ¶È¿ì¹ýÓÚÕæÕýµÄDOM¡£ÕâÑùµÄÌÖÂÛ¿ÉÒÔÈÃÈË¿ìËÙÈëÃÅÀí½âReact£¬µ«ÊÇÕæÕýд¹ýReactÓ¦ÓõÄÈË»áÃ÷°×ËٶȲ¢²»ÊÇÐéÄâDOMµÄ¾«Ëè¡£ÎÒÃÇÈÏΪÐéÄâDOMµÄ´æÔÚ°ïÖúÎÒÃÇ×öµ½ÁËÁ½¼þÊ¡£µÚÒ»ÊÇÉêÃ÷ʽUI¡£Í¨¹ýÐéÄâDOM£¬UI²»ÔÙÊÇÒ»¸ö²»¶Ï±»¸ü±äµÄDOM£¬ÄãÖ»ÒªÉêÃ÷UIÊÇÔõôÉú³ÉµÄ£¬React»á×Ô¶¯°ïÄã°ÑUIµÄ¸Ä±ääÖȾµ½ÕæÕýµÄDOMÉÏ¡£ÕâÖÖеÄ˼ά·½Ê½ÈÃÄã¿ÉÒÔ²»ÓÃÊÖ¶¯²Ù×÷ÕæÕýµÄDOM¡£µÚ¶þÊǶàTarget¡£ÎÒÃÇÒ»Ö±ÔÚ½²Web£¬µ«ReactÈÃÎÒÃÇ×öµ½WebÒÔÍâµÄTarget¡£ÐéÄâDOM¸üÏñÊÇUIÐéÄâ»ú£¬×Ô¶¯°ïÄãÓ³Éäµ½ÕæÕýµÄʵÏÖÉÏ£¬¿ÉÒÔÊÇä¯ÀÀÆ÷DOM¡¢iOS UI¡¢Android UI¡£ÉõÖÁÓÐÈË×öµ½ÁËReactÓ³Éäµ½ÖÕ¶ËÎı¾UI¡£

¶àTargetsÊÇReactÉçÇø³£³£ÔÚÌÖÂÛµÄÖ÷Òª»°ÌâÖ®Ò»¡£¶àTargetsµÄ¸ù±¾ÊÇÌá¸ß¿ª·¢ÕßÌåÑé¡£¿ª·¢ÕßÌåÑ飨DX£¬Developer Experience£©ÊÇÔÚReactÉçÇøÀïÂŴα»ÌáÆðµÄ¸ÅÄî¡£ÈçºÎÔÚ±£³ÖÒ»ÑùµÄÓû§ÌåÑéÏ£¬Ìá¸ß¿ª·¢ÕßÌåÑ飬ÊǰüÀ¨ReactÔÚÄÚµÄǰ¶ËÉçÇøÕýÔÚ˼¿¼µÄÎÊÌâ¡£ÊÂʵÉÏÈκÎÒ»¼ÒÓжà¿Í»§¶ËµÄ¹«Ë¾¶¼ÃæÁÙ×ÅÕâÑùͬһ¸öÎÊÌ⣺ÔÚ¸÷ÖÖ¿Í»§¶ËÓïÑÔÀïÖØÐÂÔìÂÖ×Ó¡£¿ª·¢ÕßÐèҪѧϰеÄÓïÑÔ¡¢Ð´ºÍά»¤ÀàËÆµÄ¹¦ÄÜ¡£ÌáÉý¿Í»§¶Ë¿ª·¢ÕßÌåÑé¾ÍÊǼõÉÙѧϰ³É±¾ºÍά»¤³É±¾¡£Õâ¾ÍÊÇReactÌᳫµÄ¡°Learn once,write everywhere¡±¡£

×î½üÒ²ÓÐһЩ¹ÄÎèÈËÐĵÄÏûÏ¢¡£FacebookÄÚ²¿Ads Manager iOS°æ±¾ÓÉ7λǰ¶Ë¹¤³ÌʦÓÃReact Native»¨ÁË5¸öÔÂÍê³É¡£¶øAndroid°æ±¾£¬ÊÇͬһ°àÈË£¬3¸öÔÂÄÚÍê³É¡£´úÂëÖØÓÃÂÊ´ïµ½ÁË87%¡£

¶àTargetsÒ²¿ÉÒÔÊÇÔÚµ¥¸öƽ̨¸üÉî¶ÈµÄ½áºÏ¡£À´×ÔReactºËÐÄÍŶӵÄSebastian Markb?geÔÚReactEurope´ó»áÉϸøÁËÒ»¸öÈÃÈËÄ¿µÉ¿Ú´ôµÄÑݽ²¡¶DOM as a Second-class Citizen¡·¡£Ñݽ²ÖÐËû³©ÏëReactÖ±½ÓÊä³öµ½ä¯ÀÀÆ÷¼Ü¹¹µÄµ×²ã£¨Í¼1ä¯ÀÀÆ÷µÄäÖȾ¼Ü¹¹£¬Í¼2ΪSebastian Markb?geÈÏΪReact¿ÉÒÔ×öµÄÊÂÇ飩¡£

ͼ1 ä¯ÀÀÆ÷µÄäÖȾ¼Ü¹¹

ͼ2 Sebastian Markb?geÈÏΪReact»¹¿ÉÒÔ×öºÜ¶àÊÂÇé

¹ÃÇÒ²»Ì¸¸Ã²»¸ÃÕâô×ö£¬Í¨¹ýÐéÄâDOM´ò¿ªÁËÕâÑùµÄ»ú»á¾ÍÒѾ­ÈÃÎÒÃÇÐ˷ܲ»ÒÑÁË¡£Ò²ËµÃ÷ÁËFacebookÔÚÉè¼ÆReactʱÒѾ­¿¼Âǵ½³¬Ô½DOM¡£Ï뷨ȷʵºÜ³¬Ç°¡£

¡¾·þÎñ¶ËÔ¤äÖȾ£¨Pre-rendering£©¡¿

¶ÔÓÚÆäËûÖ÷Á÷ǰ¶Ë¿ò¼Ü£¬Ò³ÃæSEOºÍÊ״δò¿ªËٶȵÄÎÊÌâ¶¼ºÜÈÃÈËÍ·ÌÛ¡£Twitterµ±ÄêÒòΪÊ״δò¿ªËٶȹýÓÚÂýÉõÖÁÖØ»Ø·þÎñÆ÷äÖȾ·½°¸¡£Ò»Ö±ÒÔÀ´ÈËÃÇÒ»Ö±ÔÚѰÕÒÒ»ÖÖÖ»ÐèÒª±àдһ´ÎUI×é¼þ£¬Ç°ºó¶Ëͬʱ¶¼ÄÜäÖȾµÄ·½°¸¡£Èç¹ûÄÜ×öµ½µÄ»°£¬ÎÒÃǾͿÉÒÔÔÚÊ״δò¿ªÒ³ÃæÊ±ÏÈÓ÷þÎñ¶ËäÖÈ¾Ò³ÃæHTML£¬µ±ä¯ÀÀÆ÷ÊÕµ½ºóÒѾ­¿ÉÒÔÏÔÊ¾Ò³Ãæ¡£ÕâÑùSEOºÍÊ״δò¿ªËٶȶ¼Äܱ»½â¾ö¡£ÕâÖÖÍêÃÀ·½°¸ÉçÇøÀï³ÆÖ®ÎªIsomorphic/Universal App¡£

ReactÔ­ÉúÖ§³ÖÁËPre-rendering£¨·þÎñ¶ËäÖȾ£©¡£ÓÉÓÚÓÐÐéÄâDOM£¬Ò²¾ÍÒâζ×ÅÎÒÃÇÖ»ÐèÒªºó¶ËÔËÐÐJavaScriptÒýÇæ¾ÍÄÜäÖȾÕû¸öDOM¡£Ä¿Ç°Ö÷Á÷ºó¶ËÓïÑÔ¶¼¿ÉÒÔÔËÐÐV8 JavaScriptÒýÇæ¡£±ÈÈçStrikinglyµÄºó¶ËʹÓÃRuby on Rails£¬Ö»ÐèҪʹÓÿªÔ´µÄreact-rails gem¾Í¿ÉÒÔÔÚRailsºó¶ËäÖȾǰ¶ËReact×é¼þ¡£

ʹÓ÷þÎñ¶ËäÖȾʱҪעÒâwindowºÍdocumentÕâЩä¯ÀÀÆ÷²ÅÓеÄÈ«¾Ö±äÁ¿ÊDz»´æÔڵġ£React×é¼þÌṩÕâÁ½¸ölifecycle hook£ºcomponentDidMountºÍcomponentDidUpdateÔÚ·þÎñÆ÷²»»á±»ÔËÐУ¬Ö»ÓÐÔÚǰ¶Ë²Å»áÔËÐС£Ê¹Ó÷þÎñÆ÷äÖȾʱÈç¹ûҪʹÓÃÈκÎä¯ÀÀÆ÷²ÅÓеıäÁ¿ÐèÒª°Ñ´úÂë·Åµ½ÕâÁ½¸ölifecycle hook¶¨ÒåÀï¡£

Êý¾Ý´¦Àí

React¶¨Òå×Ô¼ºÎªMVCÖеÄView¡£ÕâÈÃǰ¶Ë¿ª·¢Õß´ÓV¿ªÊ¼È¥Ë¼¿¼UIÉè¼Æ¡£µ«ÏÖÔÚÕë¶ÔÊý¾Ý²Ù×÷ºÍ»ñÈ¡·½Ê½£¬ÉçÇøÀﻹûÓÐÒ»ÖÖ¹«Èϵķ½·¨¡£ÕâÒ²ÊÇÈκÎдReactÓ¦ÓÃʱ×îÄÑ´¦ÀíµÄµØ·½¡£

¡¾Flux¡¿

¶ÔÓÚMºÍC£¬FacebookÌá³öÁËFluxµÄ¸ÅÄî¡£FluxÊÇÒ»¸öרÃÅΪReactÉè¼ÆµÄÓ¦ÓóÌÐò¼Ü¹¹£ºÓ¦ÓóÌÐòÓÉDispatcher¡¢StoreºÍView×é³É£¬ÆäÖеÄView¾ÍÊÇÎÒÃǵÄReact×é¼þ¡£FluxµÄºËÐÄÊÇÈçͼ3ËùʾµÄµ¥ÏòÊý¾ÝÁ÷¶¯¡£

ͼ3 µ¥ÏòÊý¾ÝÁ÷¶¯ÎªFluxµÄºËÐÄ

Ó¦ÓóÌÐòÖеÄÈκÎÒ»´ÎÊý¾Ý±ä»¯¶¼×÷ΪAction·¢Æð£¬¾­¹ýDispatcher·Ö·¢³öÈ¥£¬±»Ïà¹ØµÄStore½ÓÊÕµ½²¢ÕûºÏ£¬È»ºó×÷ΪpropsºÍstateÌṩ¸øView£¨React×é¼þ£©¡£µ±Óû§ÔÚViewÉÏ×öÁËÈκÎÓëÊý¾ÝÏà¹ØµÄ½»»¥£¬View»á·¢ÆðеÄAction£¬¿ªÆôÒ»´ÎеÄÊý¾Ý±ä»¯ÖÜÆÚ¡£ÕâÖÖµ¥ÏòÐÔʹFluxÔڸ߲ã´ÎÉϱȴ«Í³MVC¼Ü¹¹ºÍÒÔAngularºÍKnockoutΪ´ú±íµÄË«ÏòÊý¾Ý°ó¶¨ÈÝÒ×Àí½âµÃ¶à£¬´ó´ó¼ò»¯ÁË¿ª·¢ÕßµÄ˼¿¼ºÍDebug¹ý³Ì¡£

ÔÚFacebook°ÑFlux×÷ΪһÖÖÉè¼ÆÄ£Ê½£¨¶ø²»ÊÇÒѾ­×öºÃµÄ¿ò¼Ü£©Ðû²¼Ö®ºó£¬¼¸ºõÿ¸öÔ³öÏÖһеÄFlux¿â£¬ËûÃǶ¼Óи÷×ÔµÄÌØÉ«£¬ÓеĶԷþÎñÆ÷äÖȾ֧³Ö±È½ÏºÃ£¬ÓеÄÔËÓÃÁ˸ü¶àº¯Êýʽ±à³ÌµÄ¸ÅÄî¡£ºÜ¶àFlux¿â¸üÏñÊÇʵÑ飬ÕâÓÐÖúÓÚReactÉú̬µÄÉú³¤£¬µ«²»¿É·ñÈϵÄÊÇ£¬Î´À´»áÓдóÁ¿Flux¿âÂýÂýËÀÈ¥£¬¶øÖ»ÓÐÉÙÊý»á´æÁôÏÂÀ´»ò½øÐкϲ¢¡£

¡¾GraphQL¡¿

ÔÚ¹¹½¨´óÐÍǰ¶ËÓ¦ÓÃʱ£¬Ç°¶ËºÍºó¶Ë¹¤³Ìʦͨ¹ýAPIµÄ·½Ê½½øÐкÏ×÷¡£APIÒ²ÊÇË«·½µÄЭÒé¡£ÏÖÔÚÖ÷Á÷µÄ·½Ê½ÊÇRESTful API£¬È»¶øÔÚʵ¼ùÖУ¬ÎÒÃÇ·¢ÏÖRESTfulÔÚÒ»Ð©ÕæÊµÉú²ú»·¾³µÄÐèÇóϲ»ÊǺÜÊÊÓá£ÍùÍùÎÒÃÇÐèÒª¹¹½¨×Ô¶¨Òåendpoint£¬¶øÕâÎ¥±³ÁËRESTfulµÄÉè¼ÆÀíÄî¡£

¾Ù¸öÀý×Ó£¬ÎÒÃÇÏëÒªÏÔʾÂÛ̳Ìû×Ó¡¢×÷ÕߺͶÔÓ¦µÄÁôÑÔ¡£ÎÒÃÇ·Ö±ðÒª·¢³öÈý¸ö²»Í¬µÄÇëÇó¡£µÚ¶þ¸öÇëÇóÒÀÀµµÚÒ»¸öÇëÇó½á¹û·µ»ØµÄuser_id£¬Ç°¶ËÐèҪд´úÂëЭµ÷ÇëÇóÖ®¼äµÄÒÀÀµ¡£·Ö±ð·¢³öÈý¸ö²»Í¬ÇëÇóÔÚÒÆ¶¯¶ËÕâÖÖÍøÂç²»Îȶ¨µÄ»·¾³ÏÂЧ¹ûºÜ²»ÀíÏë¡£

GET /v1/posts/1  
{
"id": 1,
"title":"React.js in Strikingly",
"user_id":2
}

GET /v1/users/2  
{
"id":2,
"name":"dfguo"
}

GET /v1/posts/1/comments  
[{
"id":6,
"name":"rechtar",
"comment":"Thanks for sharing! I would love to see some examples on GraphQL."},{
"id":9,
"name":"tengbao",
"comment":"I heard that you guys also use immutable.js. How did it help?"},{
"id":12,
"name":"syjstc",
"comment":"Impressive work! Thanks guys!"
},{
"id":18,
"name":"abeth86",
"comment":"Thanks for the sharing!"
}]

Ϊ½â¾öÕâÀàÎÊÌ⣬¹¤³Ìʦ»á×Ô¶¨ÒåһЩendpoint¡£¶ÔÓÚÕâ¸öÀý×Ó£¬ÎÒÃÇ¿ÉÒÔ½¨Á¢Ò»¸ö/feedsµÄendpoint£¬¼¯ºÏÁËËùÓÐǰ¶ËÐèÒªµÄ½á¹û£º

GET /v1/feeds/1  
{
"id":1,
"title":"React.js in Strikingly",
"user":{
"id":2,
"name":"dfguo"
},
"comments":[
{
"id":6,
"name":"rechtar",
"comment":"Thanks for sharing! I would love to see some examples on GraphQL."
}...
]
}

µ«ÊÇÎÒÃÇÔÚijЩ³¡¾°ÉÏ¿ÉÄÜÖ»ÐèÒªpostºÍuser£¬²»ÏëÒªcomments¡£ÕâʱÄѵÀÒªÔÙ¶¨ÒåÒ»¸öfeeds_without_commentsµÄendpoint£¿Ëæ×ÅÐèÇóµÄ¸Ä±ä£¬×Ô¶¨ÒåendpointµÄ·½·¨ÍùÍùʹµÃAPI½Ó¿Ú±äµÃÀÛ׸£¬Î¥±³ÁËRESTfulµÄÉè¼ÆÀíÄî¡£¶øÈκÎǰ¶Ë¹¤³ÌʦÐèÒªµÄÊý¾ÝÒ»µ©Òª¸Ä±ä¶¼ÐèÒªºó¶Ë¹¤³ÌʦµÄÅäºÏ£¬Õâ½µµÍÁ˲úÆ·µÄµü´úËÙ¶È¡£

À´×ÔFacebookµÄGraphQLÊÇÎÒÈÏΪĿǰ×î½Ó½üÍêÃÀµÄ½â¾ö·½·¨¡£ºó¶Ë¹¤³ÌʦֻÐèÒª¶¨Òå¿ÉÒÔ±»²éѯµÄType System£¬Ç°¶Ë¹¤³Ìʦ¾Í¿ÉÒÔʹÓÃGraphQL×Ô¶¨Òå²éѯ¡£GraphQL²éѯÓï¾äÖ»ÐèÒªÐÎÈÝÐèÒª·µ»ØµÄÊý¾ÝÐÎ×´£º

{
post(id:1){
id,
title,
user{
id,
name
},
comments{
id£¬
name,
comment
}
}
}

GraphQL·þÎñÆ÷¾Í»á·µ»ØÕýÈ·µÄJSON¸ñʽ£º

{  
"id":1,
"title":"React.js in Strikingly",
"user":{
"id":2,
"name":"dfguo"
},
"comments":[
{
"id":6,
"name":"rechtar",
"comment":"Thanks for sharing! I would love to see some examples on GraphQL.
}...
]
}

GraphQLÒ²Ô­ÉúÖ§³ÖÁËAPI°æ±¾¿ØÖÆ£¬ÈÃÄã¿ÉÒÔͬʱ¹²´æ¶à¸ö°æ±¾µÄ¿Í»§¶Ë£¨°üÀ¨WebºÍMobile£©¡£ÕâЩ¶¼»á¼õÉÙ¿Í»§¶Ë¹¤³ÌʦºÍºó¶Ë¹¤³ÌʦµÄñîºÏ¶È£¬Ìá¸ßÉú²úÁ¦¡£

½ñÄê7Ô¸ÕÍÆ³öÁËGraphQLµÄ¹æ·¶²¢¿ªÔ´ÁËJavaScript GraphQL¿â¡£È»¶øÒªÈÃGraphQL³ÉΪÖ÷Á÷£¬FacebookÐèÒª´òÔìÒ»¸öÏñReactÕâÑùµÄÉú̬ϵͳ¡£ÒªÏëÔÚÄã×Ô¼ºµÄÓ¦ÓÃÉÏÓÃGraphQL»¹±ØÐëÒªÓкó¶ËÓïÑÔÌṩGraphQL¿âµÄÖ§³Ö¡£±ÈÈçStrikinglyÐèÒªGraphQL Ruby¿â¡£Õâ²»½ö½öÐèҪǰ¶Ë¹¤³Ìʦ¡£ÎÒÃÇÈÏΪÕ⽫»á±ÈReactÉú̬ϵͳ¸üÄѽ¨Á¢£¨¼ûͼ4Ëùʾ£©¡£FacebookÐèÒªÕû¸öÉçÇøµÄ²ÎÓë²ÅÄÜ´ïµ½¡£

ͼ4 GraphQLÉú̬ϵͳ

¡¾Relay¡¿

RelayÊÇFacebookÌá³öµÄÔÚReactÉÏÓ¦ÓÃGraphQLµÄ·½°¸¡£ReactµÄ»ù´¡µ¥Î»ÊÇ×é¼þ£¨Component£©£¬¹¹½¨´óÐÍÓ¦ÓþÍÊÇ×éºÏºÍǶÌ××é¼þ¡£ÒÔ×é¼þΪµ¥Î»µÄÉè¼ÆÄ£Ê½ÊÇĿǰÉçÇøÀï×îÈϿɵģ¬ÕâÒ²ÊÇǰ¶ËÊÀ½çµÄÇ÷ÊÆÖ®Ò»¡£Ã¿¸ö×é¼þÐèÒªµÄÊý¾ÝÒ²Ó¦¸ÃÔÚ×é¼þÄÚ²¿¶¨Òå¡£RelayÈÃ×é¼þ¿ÉÒÔ×Ô¶¨ÒåÆäËùÐèÒªGraphQLÊý¾Ý¸ñʽ£¬ÔÚ×é¼þʵÀý»¯µÄʱºòÔÙÈ¥GraphQL·þÎñÆ÷»ñÈ¡Êý¾Ý¡£RelayÒ²»á×Ô¶¯¹¹½¨Ç¶Ì××é¼þµÄGraphQL²éѯ£¬ÕâÑù¶à¸öǶÌ×µÄ×é¼þÖ»ÐèÒª·¢Ò»´ÎÇëÇó¡£Relay½«»áÔÚ8Ô·ݿªÔ´¡£

¡¾Immutability¡¿

ReactÉçÇø½ÓÊÜÁ˺ܶຯÊýʽ±à³ÌµÄÏë·¨£¬ÆäÖÐÊÜClojureÓ°ÏìºÜÉî¡£¶ÔImmutableÊý¾ÝµÄʹÓþÍÊÇÀ´×ÔClojureÉçÇø¡£µ±ÄêOm£¬Õâ¸öÓÃClojureScriptдµÄReact wrapperÔÚËÙ¶ÈÉϾÓÈ»ÍêŰԭÉúJavaScript°æ±¾µÄReact¡£ÕâÈÃÕû¸öÉçÇø¶¼Õð¾ªÁË¡£ÆäÖÐÒ»¸öÔ­Òò¾ÍÊÇClojureScriptʹÓÃÁËImmutableÊý¾Ý¡£ReactÉçÇøÀïҲð³öÁËImmutable.js£¬ÕâÈÃJavaScriptÀïÒ²ÄÜʹÓÃImmutableÊý¾Ý£¬ÍêÃÀÃÖ²¹ÁËJavaScriptÔÚ¸ºÔðÊý¾Ý¶ÔÏó±È½ÏµÄÏÈÌìÐÔ²»×ã¡£Immutable.jsÒ²³ÉΪÁ˹¹½¨´óÐÍReactÓ¦Óõıر¸¡£ÉõÖÁÓÐÔÚÌÖÂÛÊÇ·ñ°ÑImmutable.jsÖ±½ÓÄÉÈëJavaScriptÓïÑÔÖС£ÎÒÃÇÈÏΪСÐÍÓ¦Óò»»áÓöµ½ÐéÄâDOMµÄÐÔÄÜÆ¿¾±£¬ÒýÈëImmutable.jsÖ»»áÈÃÊý¾Ý²Ù×÷ºÜÀÛ׸¡£

¹¤¾ß

¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷¡£ReactµÄ»ð±¬µÃÁ¦ÓÚÀ´×ÔÉçÇøµÄ¹¤¾ß£¬¶øReactÒ²ÍÆ¶¯ÁËÕâЩ¹¤¾ßµÄ½ø²½¡£ÕâÀïÎÒÃÇÏë½éÉܼ¸¸öReactÉçÇøÀï±È½ÏÊÜ»¶Ó­µÄ¹¤¾ß¡£

¡¾Webpack¡¿

ÔÚReactÀÓÉÓÚÐèÒªÓõ½JSX£¬Ê¹ÓÃWebpack»òBrowserifyÕâÀ๤¾ß±àÒë´úÂëÒѾ­½¥½¥³ÉΪǰ¶Ë¹¤³Ìʦ¹¤×÷Á÷³ÌµÄÒ»²¿·Ö¡£WebpackÊÇÒ»¿îÇ¿´óµÄǰ¶ËÄ£¿é¹ÜÀíºÍ´ò°ü¹¤¾ß£¨¼ûͼ5Ëùʾ£©¡£ÕâÀïÁгöËüµÄÒ»Ð©ÌØÐÔ£º

ͬʱ֧³ÖCommonJSºÍAMDÄ£¿é£»

Áé»îºÍ¿ÉÀ©Õ¹µÄLoader£¨¼ÓÔØÆ÷£©»úÖÆ£¬ÀýÈçÌṩ¶ÔJSX¡¢ES6¡¢LessµÄÖ§³Ö£»

Ö§³Ö¶ÔCSS£¬Í¼Æ¬µÈÆäËû×ÊÔ´½øÐдò°ü£»

¿ÉÒÔ»ùÓÚÅäÖúÍÖÇÄÜ·ÖÎö´ò°ü³É¶à¸öÎļþ£»

ÄÚÖÃÇ¿´óµÄCode Splitting¹¦ÄÜ¿ÉÒÔ²ð·Ö²¢¶¯Ì¬¼ÓÔØ°ü£»

¿ª·¢Ä£Ê½Ö§³ÖHot Module Replacementģʽ£¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£

ͼ5 ǰ¶ËÄ£¿é¹ÜÀíºÍ´ò°ü¹¤¾ßWebpack

¡¾Babel¡¿

ECMAScript 6£¨ES6£©¹æ·¶ÔÚ½ñÄêËÄÔ¸ÕÇö¨£¬ReactÉçÇø»ù±¾È«ÃæÓµ±§ES6¡£µ«Ä¿Ç°»¹Óкܶàä¯ÀÀÆ÷²»Ö§³ÖES6¡£Ê¹ÓÃÏñWebpackÕâÑùµÄ¹¤¾ß±àÒë´úÂëʹµÃÎÒÃÇ¿ÉÒÔÔÚ¿ª·¢Ê±Ê¹ÓÃES6£¨»òÕ߸üа汾£©£¬ÔÚÉÏÏßǰ±àÒë³ÉES5¡£±àÒ빤¾ßÖÐ×îÒýÈË×¢ÒâµÄÊÇBabel¡£Ç°ÉíΪES6to5£¬BabelÊÇĿǰÉçÇø×î»ðµÄES6±àÒëµ½ES5µÄ´úÂ빤¾ß£¬FacebookÍŶÓÉõÖÁÒѾ­¾ö¶¨×ªÓÃBabel¶ø²»ÔÙά»¤Ö®Ç°ÄÚ²¿Ê¹ÓõÄjstranform¡£Í¨¹ýLoader»úÖÆ£¬Webpack¿ÉÒԷdz£¼òÒ׵غÍBabel½áºÏÓ¦Óá£

¡¾React-hot-reload¡¿

ÔÚ¿ª·¢ÈκδóÐÍǰ¶ËÓ¦Óùý³ÌÖУ¬ÎÒÃdz£³£»áÒòΪһЩС´íÎó¾ÍÐèÒªÖØÐÂË¢ÐÂÕû¸öÒ³Ãæ¡£React-hot-reload³¢ÊÔ½â¾öÕâ¸öÎÊÌ⣬Ìá¸ß¿ª·¢Ð§ÂÊ¡£ËûʹÓÃÁËWebpackµÄHot Module Replacement¹¦ÄÜ£¬¶¯Ì¬Ìæ»»React×é¼þµÄlifecycle hook¶¨Ò壬²»ÓÃË¢ÐÂÒ³ÃæÒ²¿ÉÒÔ¸üдúÂë±ä»¯¡£

¡¾React Developer Tool¡¿

Õâ¿îFacebook¹Ù·½ÍƳöµÄChrome²å¼þ¿ÉÒÔÈÃÄã·½±ãµØÔÚä¯ÀÀÆ÷ÖÐÖ±½Ó²é¿´ReactµÄ×é¼þ½á¹¹¡£°²×°ºó£¬ÔÚChrome¿ª·¢Õß¹¤¾ßÖлá¶à³öÒ»¸öReact Tab¡£½çÃæ¾ÍÏñDOM InspectorÒ»Ñù£¬Ö»²»¹ýÊÇ¿´React×é¼þ½á¹¹¹ØÏµ¡£ÊÇ¿ª·¢ReactÓ¦Óò»¿É¶àµÃµÄ¹¤¾ßÖ®Ò»¡£

ÌôÕ½

ReactÕýÔÚ¿ìËÙ¿ªÍØ×ÅËüµÄ½®½ç£¬ÕâÒâζÔÚ»ñµÃеÄϲÔõÄͬʱ£¬ÎÒÃÇÒ²ÃæÁÙ×ÅÐí¶àеÄÌôÕ½¡£ÏÖÔÚÎ§ÈÆ×ż¸¸ö´óµÄÒéÌ⣬ReactÉçÇøÈÔûÓдï³É¶¨ÂÛ£¬Ã¿ÖÜÉõÖÁÿÌì¶¼ÓÐеÄʵÑéÏîÄ¿ÔÚ³¢ÊÔÕâЩÎÊÌâµÄ½â¾ö¡£

¡¾¶¯»­¡¿

Ò»Ö±ÒÔÀ´´ó¼Ò¶¼¶Ô¶¯»­Ó¦¸ÃÔÚReactÀïÔõô±í´ïΪ״̬¸Ðµ½À§»ó¡£Cheng LouµÄReact Tween StateÊÇÎÒÃÇÈÏΪ×î·ûºÏReact˼άµÄ×ö·¨¡£°ÑÎ»ÒÆ´æÔÚStateÀȻºóͨ¹ýJavaScript¶¯Ì¬äÖȾеÄλÖᣲ»¹ý´ó¼Ò¶Ô¸Ã×ö·¨ÊÇ·ñÄÜ´ïµ½ÂúÒâµÄËÙ¶ÈÒ»Ö±³ÖÓб£Áô̬¶È¡£ÔÚ½ñÄêReactEuropeµÄÑݽ²ÖУ¬ËûΪÎÒÃÇÕ¹ÏÖ³öÁ˳öÉ«µÄЧ¹ûºÍËÙ¶È£¬·Ç³£ÖµµÃÒ»¿´¡£

ÔÚStrikingly£¬ÎÒÃǶÔÓÚ¶¯»­Ôò²ÉÈ¡Á˱ȽÏʵÓÃÖ÷ÒåµÄ´¦Àí·½Ê½£ºÎÒÃǶ¨ÒåÁËһЩÈÝÆ÷×é¼þ£¬±ÈÈç¡´JQFade/¡µºÍ¡´JQSlide/¡µ£¬ÔÚÆäÖе÷ÓÃjQueryµÄ¶¯»­·½·¨À´ÊµÏÖÏàÓ¦µÄTransition¡£ÕâÖÖ·½Ê½ÔÚÀíÂÛÉϲ¢²»ÍêÈ«·ûºÏReactµÄ¾«Éñ£¬²»¹ýµ½ÏÖÔÚΪֹ»¹ÊÇÄܹ»Âú×ãÎÒÃÇÐèÇóµÄ¡£

¡¾Flux¿âÓëRelay¡¿

ÕýÈçÉÏÎÄÒѾ­Ìáµ½¹ýµÄ£¬Ä¿Ç°FluxµÄ¸÷ÖÖʵÏÖ¿ÉνÊǰٻ¨Æë·Å£¬ÆäÖл¹²¢Ã»ÓгöÏÖÒ»¸ö¾ßÓÐȨÍþÐÔµÄÊÂʵ±ê×¼¡£RelayͬÑùÒ²ÊǸոշõ»¯²»¾ÃµÄÐÂÉú¸ÅÄ¡ªËùÓÐÕâЩÒâζ×ÅËäÈ»Flux+Relay»á´øÀ´Éú²úÁ¦µÄ·ÉÉý£¬ÒªÊµ¼ÊÓÃÉÏËüÃÇÎÒÃÇ»¹Òª´ýÒÔʱÈÕ¡£

¡¾CSS¡¿

CSSÊÇÒ»¸öÓÐȤµÄ»°Ìâ£ºËÆºõËùÓÐÈ˶¼¾õµÃµ±Ç°µÄCSSÓÐÉî¿ÌµÄȱÏÝ£¬µ«ÊǶÔÓÚÔõô½â¾öÕâЩȱÏÝ´ó¼ÒµÄÒâ¼ûÈ´·Ö³ÉÁËÁ½Åɸ÷²»ÏàÈãºÒ»ÅÉÈÏΪCSS¡°¿ÉÒÔ±»Ð޺á±£¬²¢ÇÒÖÂÁ¦ÓÚÐÞºÃËü£¬Óɴ˵®ÉúÁËcssnextÕâÑùµÄÏîÄ¿£»ÁíÒ»ÅÉÈÏΪCSS´Ó¸ù±¾ÉÏ×÷Ϊµ®ÉúÓÚÒ»¸ö¹ÅÀÏʱ´úµÄ¶«Î÷£¬ÒѾ­²»ÄÜÊÊÓ¦´ó¹æÄ£¡¢×é¼þ»¯µÄÏÖ´ú¿ª·¢Á÷³Ì£¬Õâһ˼Ï뼯Öз´Ó³ÔÚChristopher ChedeauµÄÑݽ²¡¶React: CSS in JS¡·ÖУ»ÔÚÆäÖÐËûÌá³öÁËCSSµÄÆß¸ö¸ù±¾ÎÊÌ⣬ȻºóÖ¸³öÔÚJavaScriptÖÐÖ±½ÓʹÓÃinline CSS¿ÉÒÔ¼¸ºõ¡°Ãâ·Ñ¡±µØ½â¾öËùÓÐÕâЩÎÊÌâ¡£ÔÚ´«Í³µÄWeb¿ª·¢×î¼Ñʵ¼ùÖÐinline CSSÒ»Ö±ÊDZ»Ñ¹ÖƵķ´ÃæÊµ¼ù£¬ÏÖÔÚÎÒÃÇÈ´Äܹ»ÒÔÒ»¸öȫеÄÊӽǿ´´ýËü£¬ÕâÒ²ÍêÃÀµØÀýÖ¤ÁËReactÕæµÄÊÇÔÚ¸øÕû¸öǰ¶ËÊÀ½ç´øÀ´¸ù±¾ÐÔµÄÍÆ¶¯¡£

×ܽá

ÔÚ²»¾ÃǰµÄJSConf 2015ÉϺÕÃÅÌá³öÁËǰ¶ËµÄĦ¶û¶¨Àí£ºÇ°¶Ëÿ18Ô»áÄÑÒ»±¶¡£Ç°¶ËÖ®ËùÒԱ仯Õâô¿ì£¬ÊÇÒòΪÎÒÃÇÏÖÔÚÃæÁÙ×ÅǰËùδÓеŤ³Ì»¯ÌôÕ½¡£½ñÌìµÄǰ¶Ë¸´ÔӶȸú¼¸ÄêǰÍêÈ«²»ÊÇÒ»¸öµÈ¼¶¡£ÕâÒ²´ÙʹÉçÇøÒªÕÒµ½ÔÚÕâÖÖ¸´ÔÓ¶ÈÏÂÄܱ£³Ö¿ª·¢Ð§ÂʺͿª·¢ÌåÑéµÄ¹¤¾ßºÍÉè¼ÆÄ£Ê½

ReactÉçÇø´ÓÆäËûÁìÓò£¨ÓÎÏ·äÖȾ¡¢ClojureScript¡¢º¯Êýʽ±à³Ì£©ÍµÊ¦Ñ§ÒÕ£¬½áºÏǰ¶ËÃæÁٵĶÀÌØÎÊÌ⣬Ìá³öÁËһϵÁнâ¾ö·½°¸¡£ReactÉçÇøÔÚ¸÷·½Ãæ¶¼ÍÆ¶¯×Åǰ¶ËÉçÇøÍùǰ½ø¡£Õâ¶ÔÕû¸öÉçÇø¶¼ÊǺÃÊ¡£ÎÒÃÇҲϣÍûǰ¶Ë¸÷¸ö¿ò¼Ü¿ÉÒÔ»¥Ïàѧϰ£¬¹²Í¬Íƶ¯Õû¸öÉçÇøµÄ·¢Õ¹¡£

   
2542 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Àí½âJavascript
·ÇµäÐÍajaxʵ¼ù
³¹µ×µÄAjax
javascript ʹÓÃCookies
ʹÓà jQuery ¼ò»¯ Ajax ¿ª·¢

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

ijº½¿Õ¹«Ë¾IT²¿ JavaScriptʵ¼ù
ijµçÊÓÈí¼þ HTML5ºÍJavaScript
Öк½ÐÅ JavaScript¸ß¼¶Ó¦Óÿª·¢
´óÇìÓÍÌï web½çÃæAjax¿ª·¢¼¼Êõ
ºÍÀûʱ ʹÓÃAJAX½øÐÐWEBÓ¦Óÿª·¢