±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂç,±¾ÎÄÖ÷Òª½éÉÜÁËWeexËùÓÐĿǰÓеÄ×é¼þ£¬Ä£¿é£¬Ã¿¸ö×é¼þºÍÄ£¿éµÄÓ÷¨ºÍÊôÐÔÒÔ¼°¹ØÓÚWeexÔÚiOS¶ËµÄһЩÑо¿ºÍʵ¼ùÐĵᣠ|
|
Ò». React Native ºÍ Weex
×Ô´ÓWeex³öÉúµÄÄÇÒ»ÌìÆð£¬¾ÍÎÞ·¨°ÚÍѺÍReact NativeÏ໥±È½ÏµÄÃüÔË¡£React NativeÐû³Æ¡°Learn
once, write anywhere¡±£¬¶øWeexÐû³Æ¡°Write Once, Run Everywhere¡±¡£Weex´Ó³öÉúÄÇÌìÆð£¬¾Í±»¸øÓèÁËһͳÈý¶ËµÄºñÍû¡£React
Native¿ÉÒÔÖ§³ÖiOS¡¢Android£¬¶øWeex¿ÉÒÔÖ§³ÖiOS¡¢Android¡¢HTML5¡£
ÔÚNative¶Ë£¬Á½ÕßµÄ×î´óµÄÇø±ð¿ÉÄܾÍÊÇÔÚ¶ÔJSBundleÊÇ·ñ·Ö°ü¡£React Native¹Ù·½Ö»ÔÊÐí½«React
Native»ù´¡JS¿âºÍÒµÎñJSÒ»Æð´ò³ÉÒ»¸öJS bundle£¬Ã»ÓÐÌṩ·Ö°üµÄ¹¦ÄÜ£¬ËùÒÔÈç¹ûÏë½ÚÔ¼Á÷Á¿¾Í±ØÐëÖÆ×÷·Ö°ü´ò°ü¹¤¾ß¡£¶øWeexĬÈÏ´òµÄJS
bundleÖ»°üº¬ÒµÎñJS´úÂ룬Ìå»ýСºÜ¶à£¬»ù´¡JS¿â°üº¬ÔÚWeex SDKÖУ¬ÕâÒ»µãWeexÓëFacebookµÄReact
NativeºÍ΢ÈíµÄCordovaÏà±È£¬Weex¸ü¼ÓÇáÁ¿£¬Ìå»ýСÇÉ¡£
ÔÚJS¶Ë£¬WeexÓÖ±»È˳ÆÎªVue Native£¬ËùÒÔ React Native ºÍ Weex µÄÇø±ð¾ÍÔÚ
React ºÍ Vue Á½ÕßÉÏÁË¡£

¶þ. ÈëÃÅ»ù´¡

¹ØÓÚС°×ÏëÈëÃÅWeex£¬µ±È»×î»ù´¡µÄ»¹ÊÇҪͨ¶ÁÎĵµ£¬ÎĵµÊǹٷ½×îºÃµÄѧϰ×ÊÁÏ¡£¹Ù·½µÄ»ù´¡ÎĵµÓÐÁ½·Ý£º
1.½Ì³ÌÎĵµ
2.ÊÖ²áÎĵµ
ÔÚÎĵµÊÖ²áÀïÃæ°üº¬ÁËWeexËùÓÐĿǰÓеÄ×é¼þ£¬Ä£¿é£¬Ã¿¸ö×é¼þºÍÄ£¿éµÄÓ÷¨ºÍÊôÐÔ¡£Óöµ½ÎÊÌâ¿ÉÒÔÏȹýÀ´··¡£ºÜÓпÉÄÜÓÐЩ×é¼þºÍÄ£¿éûÓÐÄÇЩÊôÐÔ¡£
1. WeexÈ«¼ÒͰºÍ½ÅÊÖ¼Ü
¿´Íê¹Ù·½ÎĵµÒԺ󣬾ͿÉÒÔ¿ªÊ¼ÉÏÊÖ¹¹½¨¹¤³ÌÏîÄ¿ÁË¡£
ÎÒ˾ÔÚÖªºõÉÏÃæÐ´ÁË4ƪ¹ØÓÚ¡¶WeexÈë¿ÓÖ¸Äϵġ·¡£ÕâËÄÆªÎÄÕ»¹ÊǺÜÖµµÃ¿´µÄ¡£
WeexÒ²ºÍǰ¶ËÏîĿһÑù£¬ÓµÓÐËü×Ô¼ºµÄ½ÅÊÖ¼ÜÈ«¼ÒͰ¡£weex-toolkit + weexpack
+ playground + code snippets + weex-devtool¡£
weex-toolkitÊÇÓÃÀ´³õʼ»¯ÏîÄ¿£¬±àÒ룬ÔËÐУ¬debugËùÓй¤¾ß¡£

weexpackÊÇÓÃÀ´´ò°üJSBundleµÄ£¬Êµ¼ÊÒ²ÊǶÔWebpackµÄ·â×°¡£

playgroundÊÇÒ»¸öÉϼܵÄApp£¬Õâ¸ö¿ÉÒÔÓÃÀ´Í¨¹ýɨÂëʵʱÔÚÊÖ»úÉÏÏÔʾ³öʵ¼ÊµÄÒ³Ãæ¡£

code snippetsÕâ¸öÊÇÒ»¸öÔÚÏßµÄplayground¡£

ÎÒÏàÐÅ´ó¼ÒÓ¦¸Ã¶¼ÓÐNativeµÄApp£¬Èç¹ûÕæµÄApp¶¼Ã»ÓУ¬ÄǾÍÓÃweexpackÃüÁî³õʼ»¯Ò»¸öеÄÏîÄ¿¡£Èç¹ûÒѾÓÐAppÏîÄ¿ÁË£¬ÄÇôweexÃüÁî¾ÍÖ»ÊÇÓÃÀ´ÔËÐк͵÷ÊԵġ£
ÒѾÓÐiOSÏîÄ¿µÄ£¬¿ÉÒÔͨ¹ýcocospodÖ±½Ó°²×°WeexµÄSDK£¬³õʼ»¯SDKÒÔºó£¬Native¾Í¿ÉÒÔʹÓÃWeexÁË¡£¼ÓÔØµÄJSµÄµØÖ·¸Ä³É×Ô¼º¹«Ë¾·þÎñÆ÷µÄIP¡£
#define
CURRENT_IP @"your computer device ip"
// ...
// Ð޸Ķ˿ںŵ½ÄãµÄ¶Ë¿ÚºÅ
#define DEMO_URL(path) [NSString stringWithFormat:@"http://%@:8080/%s",
DEMO_HOST, #path]
// ÐÞ¸Ä JS Îļþ·¾¶
#define HOME_URL [NSString stringWithFormat:@"http://%@:8080/app.weex.js",
DEMO_HOST]
|
ÕâÑùÕû¸öÏîÄ¿¾Í¿ÉÒÔÅÜÆðÀ´ÁË¡£
ÕâÀﻹÓÐÒ»µãÐèҪ˵Ã÷µÄÊÇ£¬ÏîÄ¿ËäÈ»ÅÜÆðÀ´ÁË£¬µ«ÊÇÿ´ÎÔËÐж¼ÐèÒªÆô¶¯npm£¬´ò¿ªWeexµÄǰ¶Ë»·¾³¡£ÕâÀïÓÐÁ½¸ö×ö·¨¡£
µÚÒ»ÖÖ×ö·¨ÊÇÖ±½ÓHook XcodeµÄrunÃüÁÔÚXcodeÅäÖÃÀïÃæ¼ÓÈëÆô¶¯npmµÄ½Å±¾¡£±ÈÈçÏÂÃæÕâÑù£º

µÚ¶þÖÖ×ö·¨¾ÍÊÇÿ´ÎÔËÐÐ֮ǰ£¬×Ô¼ºÊÖ¶¯npm run dev¡£ÎÒ¸öÈË»¹ÊÇϲ»¶ÕâÖÖ·½Ê½£¬ÒòΪÔÚXcodeÔËÐÐÍê³É֮ǰ£¬Ò»¶¨¿ÉÒÔÔÚÃüÁîÐÐÉÏÃæ´òÍêÕâЩÃüÁî¡£
ÔÙ˵˵ÈçºÎDebug£¬Õâ¿éʹÓõÄÊÇweex-devtool¡£

Õâ¸ö¹¤¾ßºÍǰ¶ËÔÚChromeÀïÃæµ÷ÊÔµÄÌåÑé»ù±¾Ïàͬ¡£

2. Weex Market²å¼þ
ÔÚÈÕ³£¿ª·¢ÖУ¬ÎÒÃÇ¿ÉÒÔÈ«²¿×Ô¼º¿ª·¢ÍêËùÓеÄWeex½çÃæ£¬µ±È»»¹¿ÉÒÔÓÃһЩÒÑÓеÄÓÅÐãµÄÂÖ×Ó¡£WeexµÄËùÓÐÓÅÐãµÄÂÖ×Ó¶¼ÔÚWeex
MarketÀïÃæ¡£

ÔÚÕâ¸öMarketÀïÃæÓкܶàÒѾдºÃµÄÂÖ×Ó£¬Ö±½ÓÄÃÀ´Ó㬿ÉÒÔ½ÚÔ¼ºÜ¶àʱ¼ä¡£
±ÈÈçÕâÀïºÜ»ðµÄweex-chart¡£weex-chartͼ±í²å¼þÊÇͨ¹ýg2-mobileÒÀÀµgcanvas²å¼þʵÏÖµÄ
Èç¹ûÄãÏëʹÓÃWeex MarketµÄPlugin²å¼þ£¬Äã¿ÉÒÔʹÓÃweex plugin ÃüÁ
$
weex plugin add plugin_name |
ÄãÖ»ÐèÒªÊäÈë²å¼þµÄÃû³Æ¾Í¿ÉÒÔ´ÓÔ¶³ÌÌí¼Ó²å¼þµ½Äã±¾µØµÄÏîÄ¿£¬±ÈÈçÌí¼Ó weex-chart£¬ÎÒÃÇ¿ÉÒÔÊäÈëÃüÁ
$
weex plugin add weex-chart |
ÎÒÃÇ¿ÉÒÔʹÓÃplugin removeÒÆ³ý²å¼þ£¬±ÈÈçÒÆ³ý°²×°ºÃµÄ weex-cahrt£º
$
weex plugin remove weex-chart |
Õâ¸ö²å¼þ¿âÀïÃæÎÒÓùýweex-router£¬»¹²»´í£¬ÓÃËüÀ´×öweexµÄ·ÓɹÜÀí¡£ÍÆ¼öʹÓá£
3. iOS´ò°üºÍ·¢²¼
weex¹Ù·½ÌṩÁËweexpackÃüÁî¡£ÎÒ¾õµÃÕâ¸öÃüÁîÊÇÌṩ¸ø²»¶®iOSµÄǰ¶ËµÄÈËÓõġ£Èç¹ûÊÇNativeÀ´´ò°ü£¬ÒÀ¾ÉʹÓõÄXcodeµÄArchive´ò°ü¡£
ÍêÈ«²»¶®iOSµÄǰ¶Ë¿ª·¢Õß¿ÉÒÔʹÓÃweexpack build ios
´ò°ü£¬Öмä»áÒªÇóÊäÈëÖ¤Ê飬¿ª·¢ÕßÕ˺ŵÈÐÅÏ¢¡£¶¼ÊäÈëÕýÈ·ÒÔºó¾Í¿ÉÒÔ´ò³öipaÎļþÁË¡£
Èç¹ûÊÇiOS¿ª·¢Õߣ¬ÔÀ´Ôõô´ò°üÏÖÔÚ»¹ÊÇÔõô´ò°ü¡£Ö»²»¶àJSÕâ¿éÒªµ¥¶À½øÐдò°ü¡£½¨ÒéÊǰÑWeexÕâ¿éµ¥¶ÀÓÃÒ»¸ögit·ÖÖ§½øÐйÜÀí£¬×¨ÃÅÕë¶ÔÕâ¸ö·ÖÖ§½øÐÐweexpack»òÕßWebpack½øÐдò°ü¡£webpackµÄ¾ßÌåÅäÖÃÓÉÿ¸ö¹«Ë¾×Ô¼ºÅäÖá£
ÕâÀï¶îÍâ˵һµã£¬ÕâÒ»µãÒ²ÊÇǰ¶Ë´óÉñ¸æËßÎҵġ£webpack´òÍê°üÒÔºóÊÇ¿ÉÒÔͨ¹ýwebpack¹Ù·½ÍøÕ¾²é¿´Õâ¸ö°üÀïÃæ¾¿¾¹´òÈëÁËÄÄЩÎļþºÍÒÀÀµ¡£ËäÈ»ÎÒ´ò°ü¶¼ÊÇÒ»¹ÉÄԵͼ´òÍ꣬µ«ÊÇ×ÊÉîǰ¶Ë¿ª·¢Ò²Ðí»¹»áÔÙÈ¥¼ì²éÒ»ÏÂÊÇ·ñÓжàµÄÎļþ±»´ò½øÈ¥ÁË¡£¼«ÏÞѹËõ°üµÄÌå»ý£¬1KBµÄÎļþÒ²²»¶à·Å½øÈ¥¡£
ÔÙ̸̸·¢²¼µÄÎÊÌâ¡£ÓÉÓÚÓÐÁËWeexÒÔºó£¬Ã¿´Î·¢²¼¶¼»á°ÑÉϸö°æ±¾ÀۼƵ½Õâ¸ö°æ±¾µÄhotPatch¶¼ÀÛ¼ÆÐÞ¸´µô£¬²¢ÔÚаæÀïÃæÖ±½ÓÄÚÖÃ×îеÄJSBundleÎļþ¡£ÄÚÖÃJSµÄÄ¿µÄÒ²ÊÇΪÁËÊׯÁ¼ÓÔØÃ뿪¡£
4. ÈȸüÐÂ
¹ØÓÚÈȸüеÄ×÷Óôó¼Ò¶¼Ã÷°×£¬²»È»ÓÃWeexµÄÒâÒå¾ÍÉÙÁ˺öࡣ²»¹ýÕâÀﻹÓÐÒ»µãÐèҪ˵Ã÷µÄÊÇ¡ª¡ªÈȸüеIJßÂÔ¡£
ÔÚÈÕ³£¿ª·¢¹ý³ÌÖУ¬ÎÒÃÇÔÚä¯ÀÀÆ÷ÉÏÃæÁ¬×ÅÊÖ»úµ÷ÊÔ£¬Ò²²¢²»ÊÇʵʱˢеġ£(²»¹ýͨ¹ýÔÚÊÖ»úÉÏɨÃè¶þάÂ룬²¢ÇÒÊÖ»úºÍµçÄÔÔÚͬһ¸ö¾ÖÓòÍøÖ®ÄÚ£¬¿ÉÒÔ×öµ½ÊµÊ±¸üÐÂ)
ËùÒÔÔÚʵ¼ÊÉú²ú»·¾³ÖУ¬ÈȸüеIJßÂÔÓ¦¸ÃÊÇÕâÑù£ºÓÐеÄHotPatch¾ÍÏ·¢µ½¿Í»§¶Ë£¬È»ºó¿Í»§¶ËÔÚÏÂ´ÎÆô¶¯µÄʱºò£¬Ïȱȶ԰汾ÐÅÏ¢£¬Èç¹ûÊÇа汾£¬¾ÍÈ¥¼ÓÔØÕâ¸ö×îеÄHotPatch£¬È»ºóäÖȾÔÚÆÁÄ»ÉÏ¡£
Ôø¾ÎÒ»ÃÏë×ÅÄÜʵʱÔÚÏ߸üУ¬¾ÍÊÇÏßÉÏÒ»·¢²¼£¬ËùÓÐÓû§ÔÚÁªÍøµÄÇé¿öÏ£¬Ï·¢HotPatchÍê±ÏÒÔºóÖ±½Ó¼ÓÔØ£¬ÁªÍøµÄÓû§¿ÉÒÔʵÏÖÃë¼¶±ðµÄÈȸüС£ÕâÖÖËäÈ»¿ÉÒÔ×öµ½£¬µ«ÊÇÒâÒå²»´ó¡£×ö·¨ÊÇרÃÅά»¤Ò»Ì×Websocket£¬Ö±Á¬·þÎñÆ÷£¬Ï·¢Íê±ÏÒÔºó¿ÉÒÔͨ¹ýµ÷ÓÃNativeµÄ֪ͨ£¬Native¿Í»§¶Ë×Ô¼ºË¢ÐÂÒ³Ãæ¼´¿É¡££¨Ä¿Ç°Ó¦¸ÃûÓжàÉÙ¹«Ë¾ÊÇÕâÑù×öµÄ°É£¿£©
5. JSBundle°æ±¾¹ÜÀíÓ벿Êð
¹ØÓÚJSBundleµÄ°æ±¾¹ÜÀíÕâ¿éÊÇÓ¦¸Ã½»¸øÇ°¶ËÀ´¹ÜÀí¡£Ç°¶Ë¿ÉÄÜ»áÓð汾ºÅÀ´¹ÜÀí¸÷¸ö°üµÄ°æ±¾¡£²¿ÊðÒ²»áÇ£³¶µ½Ã¿¸ö¹«Ë¾Ç°¶Ë²¿ÊðµÄÁ÷³Ì¡£ËûÃÇ»á¸ü¼ÓÁ˽⡣²¿ÊðÒ»°ãÒ²»á·Åµ½CDNÉϼÓËÙ¡£
6. ²È¿ÓºÍ±Ü¿Ó
Èç¹û˵WeexÒ»µã¿Ó¶¼Ã»ÓУ¬ÄÇÊDz»¿ÉÄܵġ£
±ÈÈç˵ÔÚijЩ½çÃæÁ¬ÐøPushµÄʱºò£¬Ò³Ãæ±ßÔµ»áÓÐһЩÏßÌõ´ÓÆÁÄ»ÉÏɨ¹ý¡£»¹Óв¶×½JS´íÎó»òÕßÒì³£µÄʱºò£¬Weex²¢²»Äܿɿ¿µÄ²¶×½µ½Òì³££¬ÕâµãÐèÒª¿¿NativeÀ´×ö£¬Native²¶×½µ½Òì³£ÒÔºóÔÙ´«µÝʼþ¸øJS
RuntimeÈ¥´¦Àí¡£
¼ÆËãÒ³Ãæ¿í¸ß³ß´çÕâµãÊÇ×îÐèҪעÒâµÄ¡£Weex½øÐнçÃæÊÊÅäµÄʱºòÊÇÓÃ750Ϊ±ê×¼µÄ£¬ËùÒÔÐèÒª¸ù¾Ý750È¥»»Ëã¡£»¹ÓÐÒ»µãÊÇWeexÀïÃæÓÐËÄÉáÎåÈëµÄ²Ù×÷£¬Êǻᶪʧһµã¾«¶ÈµÄ¡£¾ßÌåÕâ¿éÇë¿´¡¶Weex
ʼþ´«µÝµÄÄÇЩʶù¡·ÕâÆªÎÄÕÂÀïÃæµÄÔ´Âë·ÖÎö¡£
Weex JS ÒýÇæÒ²²»Ö§³Ö HTML DOM APIs ºÍ HTML5 JS APIs£¬Õâ°üÀ¨
document, setTimeout µÈ¡£
Weex¹ØÓÚWeb±ê×¼µÄʵÏÖÏÖÔÚ»¹Ã»Óдﵽ100%£¬ËùÒÔÓÃVueÀ´Ð´WeexµÄ»°£¬ÓÐЩÊDz»Ö§³ÖµÄ¡£
±ÈÈç˵һЩCSSÑùʽ£¬×îÁîÈËÏë²»µ½µÄ¾ÍÊDz»Ö§³Ö
£¬»¹²»Ö§³Ö
£¬£¬£¬
£¬²»Ö§³ÖCSS percentage µ¥Î»£¬²»Ö§³ÖÀàËÆ em£¬rem£¬pt ÕâÑùµÄ CSS ±ê×¼ÖÐµÄÆäËû³¤¶Èµ¥Î»¡£²»Ö§³Ö
hsl(), hsla(), currentColor, 8¸ö×Ö·ûµÄÊ®Áù½øÖÆÑÕÉ«¡£
Weex¶ÔW3CÉϵÄFlexBoxµÄ¹æ·¶Ò²Ã»ÓÐÖ§³ÖÍêÈ«£¬Ôݲ»Ö§³Öinline£¬Ò²²»Ö§³ÖZÖáÉÏÃæµÄ±ä»¯£¬²»¹ýÒÆ¶¯¶ËÔÚZÖáÉϵÄÐèÇóÕæµÄûÓС£WeexµÄLayoutÊÇÓõÄYoga֮ǰµÄij¸ö°æ±¾£¬½â¾öÎÊÌâµÄ·½Ê½Ò²±È½ÏÖ±½Ó£¬ºóÆÚÉý¼¶µ½×îаæµÄYoga£¬±ã¿ÉÒÔÖ§³Ö¸ü¶àµÄFlexµÄ±ê×¼ÁË¡£
¾ßÌ廹Óв»Ö§³ÖµÄ¾ÍÒª¶à··Îĵµ£¬±ÈÈçÕâÀïµÄ¡¶Weex Ŀǰ²»Ö§³ÖµÄWeb ±ê×¼ÓÐÄÄЩ¡·¡£ÕâЩ×îºÃÏÈ¿´¿´£¬ÐÄÀïÓиöÊý£¬ÒÔÃ⿪·¢Ê±ºòÓöµ½Ò»Ð©ÄªÃûµÄbug£¬Êâ²»Öª×îÖÕÊÇÒòΪ²»Ö§³Öµ¼Öµġ£
È»ºó»¹ÓÐһЩÊÇ×é¼þÔÝʱ»¹²»Ö§³Öͬ²½·½·¨¡£ÕâÀïÊÇVue 2.0»¹²»Ö§³Ö£¬¹Ù·½Ô¤¼ÆÊÇÔÚ 0.12 °æ±¾Ö§³Ö¡£
¶îÍâÌáÐÑÒ»µã£¬ÓÉÓÚÆ»¹ûǰ¶Îʱ¼ä¶ÔJSPatchµÄ·âɱ£¬ËùÒÔµ¼ÖÂWeex¹Ù·½¶Ô×Ô¶¨ÒåÄ£¿é¸ø³öÁËÒ»¸ö¾¯¸æ£º
Weex ËùÓб©Â¶¸ø JS µÄÄÚÖà module »ò component API ¶¼Êǰ²È«ºÍ¿É¿ØµÄ£¬
ËüÃDz»»áÈ¥·ÃÎÊϵͳµÄ˽ÓÐ API £¬Ò²²»»áÈ¥×öÈκΠruntime É쵀 hack ¸ü²»»áÈ¥¸Ä±äÓ¦ÓÃÔÓеŦÄܶ¨Î»¡£
Èç¹ûÐèÒªÀ©Õ¹×Ô¶¨ÒåµÄ module »òÕß component £¬Ò»¶¨×¢Òâ²»Òª½« OC µÄ runtime
±©Â¶¸ø JS £¬ ²»Òª½«Ò»Ð©ÖîÈç dlopen()£¬ dlsym()£¬ respondsToSelector:£¬performSelector:£¬method_exchangeImplementations()
µÄ¶¯Ì¬ºÍ²»¿É¿ØµÄ·½·¨±©Â¶¸øJS£¬ Ò²²»Òª½«ÏµÍ³µÄ˽ÓÐAPI±©Â¶¸øJS
ÉÏÊö¾¯¸æÌرðÇ¿µ÷Á˲»ÒªÓÃdlopen()£¬ dlsym()£¬ respondsToSelector:£¬performSelector:£¬method_exchangeImplementations()Õ⼸¸öº¯Êý¡£ÕâÒ²ÊÇΪʲôͬÑùÊÇÓÃWeexÓÐЩÈËûÓÐͨ¹ýÉóºË£¬ÓÐЩÈËÈ´ÄÜͨ¹ýÉóºËµÄÔÒò¡£
Ìý˵°²×¿ÉÏÓÐRefresh ControlµÄһЩbug£¬°²×¿ÔÚWeexÉϵıíÏÖÎÒûÓÐÔõôÁ˽â¹ý£¬²»¹ýÕâ¿éÈç¹û³öÏÖÔÚiOSÉÏ£¬ÎÒ¾õµÃ¿ÉÒÔÖ±½ÓÓÃNativeÀ´Ìæ»»µôÕâ¿é£¬ÓÐbugµÄµØ·½¶¼ÓÃÔÉúÀ´×ö¡£
×ÜÖ®Weex»¹ÊǶà¶àÉÙÉÙÓÐһЩÎÊÌ⣬µ«ÊÇĿǰʹÓÃÀ´¿´£¬²»Ó°ÏìʹÓã¬Ö»Òª¶®µÃÁé»î±äͨ£¬Óöµ½ÊµÔÚ¹ý²»È¥µÄ¿²£¬»òÕßÊÇÕæµÄһʱhold²»×¡µÄbug£¬ÄÇô¶à¿¼ÂÇÓÃÔÉúÀ´Ìæ´ú¡£
Èý. ¸ü¶à¸ß¼¶µÄÍæ·¨
½ÓÏÂÀ´ËµÒ»ÏÂÉÔ΢¸ß¼¶µÄÍæ·¨¡£ÒÔÏÂÕâЩ¼´Ê¹Ã»ÓÐ×ö£¬Ò²²»Ó°ÏìWeexÕý³£ÉÏÏß¡£
1.Ò³Ãæ½µ¼¶
WeexĬÈÏÊÇÖ§³ÖÒ³Ãæ½µ¼¶µÄ¡£±ÈÈç³öÏÖÁË´íÎ󣬾ͻή¼¶µ½H5¡£ÕâÀィÒé×îºÃ×öÒ»¸öÏßÉϵĿª¹Ø¡£ÎÒ˾ÔÚ´¦ÀíÒ³Ãæ½µ¼¶µÄÎÊÌâÉϲÉÈ¡ÁËÁ½ÖÖ¼¶±ðµÄ¿ª¹Ø£º
App¼¶µÄ¿ª¹Ø¡£Õâ¸ö¿ª¹ØÊǹÜÀíÓû§AppÊÇ·ñʹÓÃWeex SDKµÄ£¬Õâ¿éÊÇ¿ÉÒÔÔÚÏßÅäÖõġ£
Ò³Ãæ¼¶µÄ¿ª¹Ø¡£Õâ¸ö¿ª¹ØÊǹÜÀíij¸öÒ³ÃæÊÇ·ñ¿ªÆôWeexµÄ¡£Èç¹û²»¿ªÆô¾Í½µ¼¶³ÉH5Ò³Ãæ¡£
³ýÁ˽µ¼¶ÒԺ󣬻¹¶ÔÓ¦²ÉÈ¡Á˻ҶȵIJßÂÔ£¬ÕâÑù±£Ö¤ÏßÉÏbug½µµÍµ½×îµÍ¡£
±ÈÈçÔÚÓû§Á¿µÍ·åÆÚµÄʱºò¿ªÆô¿ª¹Ø½øÐлҶȡ£»¹ÓÐÒ»¼¶»Ò¶È¾Íͨ¹ýÏßÉÏʵʱ´íÎó¼à¿ØÆ½Ì¨À´¿ØÖÆ£¬Èç¹ûÒòΪͻ·¢Ê¼þµ¼ÖÂCrashÂʶ¸Éý£¬ÄÇô¾ÍÁ¢¼´¹Ø±ÕWeexµÄ¿ª¹Ø£¬Á¢¼´½øÐнµ¼¶´¦Àí¡£
2. ÐÔÄÜ¼à¿ØºÍÂñµã
ÔÚWeex¸øµÄ¹Ù·½DemoÀïÃæÓÐÒ»¸öMµÄСԲµã¸¡¿ò£¬µã¿ª»á¿´µ½ÈçϵĽçÃæ£º

ÔÚÕâÀïÎÒÃǵ㿪ÐÔÄܵİ´Å¥£º

ÔÚÕâÀïÎÒÃÇ¿ÉÒÔ¿´µ½¼à¿ØÁËCPU£¬Ö¡ÂÊ£¬Äڴ棬µçÁ¿£¬Á÷Á¿µÈÊý¾Ý£¬ÕâЩÊý¾ÝÒ²ÊÇÎÒÃÇÔÚNative APMÖÐ¼à¿ØµÄ³£¼ûÊý¾Ý¡£µ±È»£¬Õâ¸öMÔ²µã²¢²»Ã»ÓпªÔ´¡£ËùÒÔÕâ¿éÐèÒª¸÷¸ö¹«Ë¾×Ô¼º×öÒ»Ì××Ô¼ºµÄ¼à¿ØÏµÍ³¡£Õâ¿é¿ÉÄÜÿ¸ö¹«Ë¾µÄǰ¶ËÒѾ×öºÃÁË£¬ËùÒÔWeexÐèÒª½ÓÈ뵽ǰ¶ËµÄÐÔÄÜ¼à¿ØÀï¡£
Èç¹ûÎÒÃÇÔٵ㿪¹¤¾ßµÄ½çÃæ£¬¾Í»á¿´µ½ÈçϵÄÑ¡Ï

ÕâÀï¾ÍÓÐÂñµã¼à¿Ø¡£ÔÚ³õÆÚ¿ÉÄÜWeexÂñµã»¹ÊÇÓÉNative½øÐÐÂñµã£¬ÒòΪ¸÷¼Ò¶¼ÓÐ×Ô¼ÒµÄNativeÍêÕûµÄÂñµãϵͳÁË¡£ºóÆÚÂñµãÕâ¿éÒ²¿ÉÒÔ½»¸øÇ°¶ËÔÚǰ¶ËÂñµã¡£
3. ÔöÁ¿¸üкÍÈ«Á¿¸üÐÂ
ÔÝʱ±ÊÕß»¹Ã»ÓÐʵ¼ù¹ýWeexµÄÔöÁ¿¸üУ¬ËùÒÔÕâÀï¾Í²»ÌáÔöÁ¿¸üÐÂÁË¡£È«Á¿¸üоͱȽϼòµ¥£¬Ï·¢Õû¸öJSBundle£¬AppÔÚÏÂ´ÎÆô¶¯µÄʱºòÔÙ¼ÓÔØ¼´¿É¡£WeexµÄ°ü±ÈRNµÄ°üСºÜ¶à£¬Ò»°ã¾Í100-200K×óÓÒ¡£°¢ÀïµÄÒ»´ÎWeex·ÖÏíÀïÃæÌáµ½ËûÃÇgzipѹËõÒÔºóÄÜ´ïµ½60-80K¡£
4. ÊׯÁ¼ÓÔØÊ±¼ä¼«ÖÂÓÅ»¯

ÉÏͼÊǰ¢ÀïÔÚWeex Conf´ó»áÉÏÌá³öµÄÒ»¸öÌôÕ½£¬ÍøÂçÇëÇó¼ÓÉÏÊׯÁäÖȾµÄʱ¼ä¼ÓÆðÀ´Ð¡ÓÚ1Ãë¡£

ÕâÀïÃæÉæ¼°µ½3·½ÃæµÄÒòËØ£¬ÍøÂçÏÂÔØºÄʱ£¬JSºÍNativeͨÐźÄʱ£¬»¹ÓÐäÖȾºÄʱ¡£
ÍøÂçÏÂÔØºÄʱ¿ÉÒÔͨ¹ýÖ§³ÖHTTP / 2£¬ÅäÖÃSpdyÐÒ飬ÓòÃûÊÕÁ²£¬Ö§³Öhttp-cache£¬¼«ÖÂѹËõJSBundleµÄ´óС£¬JSBundleÔ¤¼ÓÔØ¡£
JSBundleÔ¤¼ÓÔØµÄʱºò¿ÉÒÔÔÚAppÆô¶¯Ê±ºòÔ¤ÏÈÏÂÔØJS¡£Ô¶³Ì·þÎñÆ÷ÍÆ°üµÄʱºòͨ¹ý³¤Á¬Í¨µÀPush£¬ÕâÀï¿ÉÒÔÊÇÈ«Á¿
/ ÔöÁ¿£¬±»¶¯ / Ç¿ÖÆ¸üÐÂÏ໥½áºÏ¡£
°¢Àï¹ØÓÚJSºÍNativeͨÐźÄʱ£¬äÖȾºÄʱµÄÏà¹ØÓÅ»¯¼ûÉÏͼ¡£ÕâÁ½·½Ãæ±ÊÕßҲûÓÐÏà¹ØµÄʵ¼ù¡£
5. VueÈ«¼ÒͰ

ËäÈ»WeexÓÐÊôÓÚËü×Ô¼ºµÄÈ«¼ÒͰ£¬µ«ÊÇÔÚÖ§³ÖÁËVue 2.0ÒÔºó£¬ËüµÄÈ«¼ÒͰÍêÈ«¿ÉÒÔ»»³ÉVueµÄÈ«¼ÒͰ¡£Vue£¬Vue-Router£¬Vuex£¬ÔÀ´»¹ÓÐVue-resource£¬²»¹ýÓÈ´óºóÀ´È¥µôÁËÕâ¸öVue-resource£¬¸ü¼ÓÍÆ¼öaxiosÁË¡£ËùÒÔÈ«¼ÒͰÀïÃæ¾ÍÊÇVue£¬Vue-Router£¬Vuex£¬axios¡£
Èç¹ûÈ«²¿¶¼»»³ÉÁËVueÒÔºó£¬ÄÇôǰ¶ËÊׯÁäÖȾµÄËٶȾÍÐèÒªVueÀ´½â¾öÁË¡£ÎªÁËÌá¸ßÊׯÁäÖȾËÙ¶È£¬wns»º´æ+Ö±³ö
ÊDZز»¿ÉÉٵġ£ÔÚVue 1. x ʱ´ú£¬Ã»ÓÐ server-side-render ·½°¸£¬Ö±³öÐèҪרßøÐ´Ò»·ÝÊׯÁ·ÇVueÓï·¨µÄÄ£°å¡£Vue2.0
server-side-render£¨¼ò³ÆVue SSR£©µÄÍÆ³ö£¬³É¹¦µØÈÃǰºó¶ËäÖȾģ°å´úÂëͬ¹¹¡£
Èç¹ûÖ»ÓÃÁËVue-RouterÒԺ󣬵±´ò°ü¹¹½¨Ó¦ÓÃʱ£¬JSBundle °ü»á±äµÃ·Ç³£´ó£¬Ó°ÏìÒ³Ãæ¼ÓÔØ¡£Èç¹ûÎÒÃÇÄܰѲ»Í¬Â·ÓɶÔÓ¦µÄ×é¼þ·Ö¸î³É²»Í¬µÄ´úÂë¿é£¬È»ºóµ±Â·Óɱ»·ÃÎʵÄʱºò²Å¼ÓÔØ¶ÔÓ¦×é¼þ£¬ÕâÑù¾Í¸ü¼Ó¸ßЧÁË¡£
½áºÏ Vue µÄ Òì²½×é¼þ ºÍ Webpack µÄ code splitting feature,
ÇáËÉʵÏÖ·ÓÉ×é¼þµÄÀÁ¼ÓÔØ¡£¼õÉÙJSBundleµÄÌå»ý¡£
»¹ÓÐÒ»µãÐèҪעÒâµÄÊÇ£¬Vue-Router ÌṩÁËÈýÖÖÔËÐÐģʽ£º
hash : ʹÓà URL hash ÖµÀ´×÷·ÓÉ¡£Ä¬ÈÏģʽ¡£
history : ÒÀÀµ HTML5 History API ºÍ·þÎñÆ÷ÅäÖá£
abstract: Ö§³ÖËùÓÐ JavaScript ÔËÐл·¾³£¬Èç Node.js ·þÎñÆ÷¶Ë¡£
²»¹ýWeex »·¾³ÖÐÖ»Ö§³ÖʹÓà abstract ģʽ£¡
¾ÍÔÚ7Ììǰ£¬Vue ·¢²¼ÁËv2.3.0°æ±¾£¬¹Ù·½Ö§³ÖÁËSSR¡£ËùÒÔÔÚÖ§³ÖÁËSSRÒԺ󣬿ÉÒÔ´ó·ùÌáÉýSEO£¬Ò²¿ÉÒÔ×öµ½ÊׯÁÃ뿪¡£ËùÒÔΪÁËÐÔÄÜ£¬SSR±Ø×ö£¡
ËÄ. ¶¥¼¶Íæ·¨
×îºóµÄ×îºó£¬»¹ÓÐһЩ¡°Ç°Õ°ÐÔ¡±µÄÍæ·¨¡£
1. Ç¿´óµÄJSService
JS service ºÍ Weex ʵÀýÔÚ JS runtime Öв¢ÐÐÔËÐС£Weex ʵÀýµÄÉúÃüÖÜÆÚ¿Éµ÷ÓÃ
JS Service ÉúÃüÖÜÆÚ¡£Ä¿Ç°Ìṩ´´½¨¡¢Ë¢Ð¡¢Ïú»ÙÉúÃüÖÜÆÚ¡£
Õâ¿éÎÒÔÚ¹Ù·½µÄDemoÀïÃæÒ²Ã»ÓÐÕÒµ½Ïà¹ØµÄÀý×Ó¡£ÔÚ¹Ù·½µÄÎĵµÀïÃæÓÐÏà¹ØµÄÀý×Ó¡£ÔÚ¹Ù·½ÊÖ²áÀïÃæÓÐÕâÑùÒ»¾ä»°£º
ÖØÒªÌáÐÑ: JS Service ·Ç³£Ç¿´óµ«Ò²ºÜΣÏÕ£¬ÇëСÐÄʹÓã¡
¿É¼û£¬Õâ¿é·Ç³£Ç¿´ó£¬Ò²Ðí¿ÉÒÔ×öºÜ¶à¡°ÉñÆæµÄ¡±ÊÂÇé¡£
2. Weex¿ÉÄÜÓиü´óµÄ¡°Ò°ÐÄ¡±
ÔÚ¹Ù·½ÊÖ²á¡¶ÍØÕ¹JS framework¡·ÕâÒ»Õ½ÚÀïÃæ£¬Ìáµ½ÁË¿ÉÒÔºáÏòÍØÕ¹JS framework¡£Õâ¸ö¹¦ÄÜ¿ÉÄÜÒ»°ã¹«Ë¾¶¼²»»áÈ¥À©Õ¹¡£
Weex Ï£ÍûÄܹ»×ðÖØ¾¡¿ÉÄܶàµÄ¿ª·¢ÕßµÄʹÓÃϰ¹ß£¬ËùÒÔ³ýÁË Weex ¹Ù·½Ö§³ÖµÄ Vue 2.0
Ö®Í⣬¿ª·¢Õß»¹¿ÉÒÔ¶¨ÖƲ¢ºáÏòÀ©Õ¹×Ô¼ºµÄ»ò×Ô¼ºÏ²»¶µÄ JS Framework¡£
¶¨ÖÆÍê×Ô¼ºµÄJS FrameworkÒԺ󣬾ͿÉÄܳöÏÖÏÂÃæµÄ´úÂ룺
import
* as Vue from '...'
import * as React from '...'
import * as Angular from '...'
export default { Vue, React, Angular }; |
ÕâÑù»¹¿ÉÒÔºáÏòÀ©Õ¹Ö§³ÖVue£¬React£¬Angular¡£
Èç¹ûÔÚ JS Bundle ÔÚÎļþ¿ªÍ·´øÓÐÈçϸñʽµÄ×¢ÊÍ£º
//
{ "framework": "Vue" }
... |
ÕâÑù Weex JS ÒýÇæ¾Í»áʶ±ð³öÕâ¸ö JS bundle ÐèÒªÓà Vue ¿ò¼ÜÀ´½âÎö¡£²¢·Ö·¢¸ø
Vue ¿ò¼Ü´¦Àí¡£

ËùÒÔ£¬Weex Ö§³Öͬʱ¶àÖÖ¿ò¼ÜÔÚÒ»¸öÒÆ¶¯Ó¦ÓÃÖй²´æ²¢¸÷×Ô½âÎö»ùÓÚ²»Í¬¿ò¼ÜµÄ JS bundle¡£
¿ÉÒÔÖ§³Ö¶àÖÖ¿ò¼Ü²¢´æÕâµã·Ç³£Ç¿´ó£¬µ±È»»¹Ã»ÓÐÍ꣬one more thing¡¡
Èç¹ûÕý³£Ê¹ÓÃAPI£¬¿´¹Ù·½Îĵµ£¬²»¿ªÔ´Â룬ÊDz»»á·¢ÏÖRaxµÄÉíÓ°µÄ¡£¹Ù·½ÎĵµË¿ºÁûÓÐÌá¼°µ½Ëü¡£
RaxÊÇÊ²Ã´ÄØ£¿

ÔÚ¡¶ÌÔ±¦Ë«´ÙÖÐµÄ Rax¡·ÕâÆªÎÄÕÂÀïÃæ½éÉÜÁËRax£º
Rax ÊÇÒ»¸ö»ùÓÚ React ·½Ê½µÄ¿çÈÝÆ÷µÄ JS ¿ò¼Ü¡£

Rax ¾¹ý gzip ÒÔºóµÄ´óС 8k£¬Óë Angular¡¢React¡¢Vue Ïà±È¸ü¼ÓÇáÁ¿¡£Ïà±ÈReactµÄ43.7kb£¬Ð¡ÁËÌ«¶à¡£
Rax ÔÚÉè¼ÆÉϳéÏó³ö Driver µÄ¸ÅÄÓÃÀ´Ö§³ÖÔÚ²»Í¬ÈÝÆ÷ÖÐäÖȾ£¬±ÈÈçĿǰËùÖ§³ÖµÄ£ºWeb,
Weex, Node.js ¶¼ÊÇ»ùÓÚ Driver µÄ¸ÅÄδÀ´¼´Ê¹³öÏÖ¸ü¶àµÄÈÝÆ÷£¨Èç VR £¬ARµÈ£©£¬Rax
Ò²¿ÉÒÔ´ÓÈÝÓ¦¶Ô¡£Rax ÔÚÉè¼ÆÉϾ¡Á¿Ä¨Æ½¸÷¸ö¶ËµÄ²îÒìÐÔ£¬ÕâҲʹµÃ¿ª·¢ÕßÔÚ²îÒìÐԺͼæÈÝÐÔ·½ÃæÔÙÒ²²»ÐèҪͶÈëÌ«¶à¾«Á¦ÁË¡£
Èç¹û˵RNºÍWeexÕâЩ¼¼ÊõÊÇÓÃÀ´¿ç¶ËµÄ¼¼Êõ£¬ÄÇRaxÊÇÓÃÀ´¿çÈÝÆ÷µÄ£ºBrowser¡¢Weex¡¢Node.jsµÈ¡£
|