±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ51cto
,Vue.js ÊÇÒ»¸öJavaScriptMVVM¿â£¬ÊÇÒ»Ì×¹¹½¨Óû§½çÃæµÄ½¥½øÊ½¿ò¼Ü¡£±¾ÎÄÏêϸ½éÉÜ£¬Ï£Íû¿ÉÒÔ°ïÖúÕýÔÚѧϰµÄÄã¡£ |
|
ÕªÒª
2016Äê×î»ðµÄǰ¶Ë¿ò¼Üµ±ÊôVue.jsÁË£¬ºÜ¶àʹÓùývueµÄ³ÌÐòÔ±ÕâÑùÆÀ¼ÛËü£¬¡°vue.js¼æ¾ßangular.jsºÍreact.jsµÄÓŵ㣬²¢ÌÞ³ýÁËËüÃǵÄȱµã¡±¡£ÊÚÓèÁËÕâô¸ßµÄÆÀ¼ÛµÄvue.js£¬Ò²ÊÇ¿ªÔ´ÊÀ½ç»ªÈ˵Ľ¾°Á£¬ÒòΪËüµÄ×÷ÕßÊÇλÖйúÈ˨CÓÈÓêϪ£¨Evan
You£©¡£
Vue.js ÊÇÒ»¸öJavaScriptMVVM¿â£¬ÊÇÒ»Ì×¹¹½¨Óû§½çÃæµÄ½¥½øÊ½¿ò¼Ü¡£ËüÊÇÒÔÊý¾ÝÇý¶¯ºÍ×é¼þ»¯µÄ˼Ïë¹¹½¨µÄ£¬²ÉÓÃ×Ôµ×ÏòÉÏÔöÁ¿¿ª·¢µÄÉè¼Æ¡£Ïà±ÈÓÚAngular.js£¬Vue.jsÌṩÁ˸ü¼Ó¼ò½à¡¢¸üÒ×ÓÚÀí½âµÄAPI£¬Ê¹µÃÎÒÃÇÄܹ»¿ìËÙµØÉÏÊÖ²¢Ê¹ÓÃVue.js¡£
µ÷ÊÔ²å¼þ
ÔÚvueµ÷ÊÔ·½Ã棬¿ÉÒÔÑ¡Ôñ°²×°chrome²å¼þvue Devtools¡£´ò¿ªvueÏîÄ¿£¬ÔÚconsole¿ØÖÆÌ¨Ñ¡ÔñvueÃæ°å¡£ÔÚDevtools¹¤¾ßÖУ¬¿ÉÒÔÑ¡Ôñ×é¼þ£¬²é¿´¶ÔÓ¦×é¼þÄÚµÄÊý¾ÝÐÅÏ¢¡£Ò²¿ÉÒÔÑ¡ÔñVuexÑ¡Ï²é¿´¸ÃÏîÄ¿ÄÚVuexµÄ״̬±äÁ¿ÐÅÏ¢¡£


UI ×é¼þ¿â
ÔÚvue×é¼þ¿â·½Ã棬¸öÈ˲»ÍƼöʹÓÃUI×é¼þ¿â£¬±Ï¾¹×Ô¼ºÔìÂÖ×ӵĹý³Ì»¹ÊǺÜÓгɾ͸еġ£µ±È»£¬Èç¹û¸üÖØÊÓ¿ª·¢Ð§ÂÊ£¬²¢ÇÒÑ¡ÔñÁËvue2.0×÷Ϊǰ¶Ë¿ò¼Ü£¬ÄÇô¶öÁËÃ´ÍÆ³öµÄElement×é¼þ¾ÍÊÇÒ»¸öºÜ²»´íµÄÑ¡Ôñ¡£ÆägithubÏîÄ¿£¨https://github.com/ElemeFE/element£©¸üÐÂ±È½ÏÆµ·±£¬ËäÈ»ÏîÄ¿»áÓÐЩ²»Îȶ¨£¬µ«ÊÇĿǰΪֹelement¾ÍÊÇ×îºÃµÄÖ§³Övue2.0µÄUI×é¼þ¡£¾ÍÏñËüµÄ¿ÚºÅÒ»Ñù£¬¡°¿ìËÙ³ÉÐÍ£¬¾ÍΪÈÃÄãÉټӰࡱ¡£

vue¡¢React¡¢Angular1 ¶Ô±È
ÐÔÄܶԱÈ
ÔÚAngular1ÖУ¬ÔÚscope×÷ÓÃÓòÖÐÿһ´ÎÊý¾Ý±ä»¯£¬»á´¥·¢watcherµÄÖØÐ¼ÆË㣬angular¶Ô³£ÓõÄdomʼþ£¬xhrʼþµÈ×öÁË·â×°£¬
ÔÚÀïÃæ´¥·¢½øÈëangularµÄdigestÁ÷³Ì¡£ÔÚdigestÁ÷³ÌÀïÃæ£¬»á´Órootscope¿ªÊ¼±éÀú£¬
¼ì²éËùÓеÄwatcher¡£²¢ÇÒ£¬Èç¹ûһЩ watcher ´¥·¢ÁíÒ»¸ö¸üУ¬Ôà¼ì²éÑ»·£¨digest
cycle£©¿ÉÄÜÒªÔËÐжà´Î¡£VueÔòûÓÐÕâ¸öÎÊÌ⣬ÒòΪËüʹÓûùÓÚÒÀÀµ×·×ٵĹ۲ìϵͳ²¢ÇÒÒì²½¶ÓÁиüУ¬Êý¾ÝµÄ±ä»¯¶¼ÊǶÀÁ¢´¦·£µÄ£¬³ý·ÇÊý¾ÝÖ®¼äÓÐÃ÷È·µÄÒÀÀµ¹ØÏµ¡£
vue¹Ù·½Ðû³ÆvueµÄäÖȾÐÔÄÜÓÅÓÚreact¡£ÎªÁËÓÐÀíÓоÝÈÃÈËÐÅ·þ£¬vue¿ª·¢ÍŶӽ¨Á¢ÁËÒ»¸ö¼òµ¥µÄ¶Ô±ÈÐÔÄܵÄÏîÄ¿£¨https://github.com/chrisvfritz/vue-render-performance-comparisons£©£¬Ëü¸ºÔðäÖȾ10000¸öÁбíÏî100´Î¡£Vue¹Ù·½½«Ã¿Ò»¸ö²ÎÕÕÏîÄ¿¶¼·Ö±ðÔËÐÐ
20 ´Î²¢È¡×îºÃµÄ½á¹û½á¹ûÈçÏÂͼ£º

Óɴ˿ɼû£¬VueµÄÐÔÄÜÊÇÔ¶ºÃÓÚAngular1£¬²¢ÇÒÉÔ΢ÓÅÓÚReactµÄ¡£
ÉçÇøÍØÕ¹¶Ô±È
Angular1µÄ±³ºóÊÇGoogle£¬ËùÒÔÉçÇø»ù´¡ÊDz»ÐèÒªµ£Ðĵ쬴ÓTutorialµ½StackOverflowµÄÎÊÌâÊýÁ¿¶¼¿ÉÒÔ·´Ó³³öÉú̬ϵͳºÜÍêÕû¡£Angular1Ö®ºóµÄ2.0°æ±¾¼¸ºõÊÇÒ»¸öÍÆ·ÖØ×öµÄ¿ò¼Ü£¬¶ÔÓÚʹÓÃÁË1.X°æ±¾µÄÏîÄ¿£¬ÏëҪƽ»¬µÄÉý¼¶¹ý¶Éµ½2.0°æ±¾Ó¦¸ÃÊǷdz£À§Äѵġ£
ÏÖÔÚAngular2µÄÏßÉÏÓ¦ÓÃÊýÁ¿»¹²»ËãÌ«¶à£¬Ö÷Á÷±àÂ뻹ÊÇÒÔ1.X°æ±¾¾Ó¶à¡£Õâ¸ö°æ±¾»¯¾Þ´óµÄ²îÒìÒ²¼ä½ÓÓ°Ïìµ½ÁË¿ª·¢Õß¶ÔÓÚangularµÄÐÅÐÄ¡£
VueºÍReact¶¼ÓÐÇ¿´óµÄÉçÇøÖ§³Ö¡£ReactÓÐ״̬¹ÜÀí¿âFlux¡¢ReduxVue£¬ÏàÓ¦µÄ£¬VueÓÐvuex¡£
Vue ºÍ React ¶¼ÌṩÁËÇ¿´óµÄ·ÓÉ¿âÀ´Ó¦¶Ô´óÐÍÓ¦Óá£È»¶øVueµÄ·ÓÉ¿âºÍ״̬¹ÜÀí¿â¶¼ÊÇÓɹٷ½Î¬»¤Ö§³ÖµÄ¡£
React ÔòÊÇÑ¡Ôñ°ÑÕâЩÎÊÌâ½»¸øÉçÇøÎ¬»¤£¬Òò´Ë´´½¨ÁËÒ»¸ö¸ü·ÖÉ¢µÄÉú̬ϵͳ¡£µ«Ïà¶ÔµÄ£¬React µÄÉú̬ϵͳÏà±È
Vue ¸ü¼Ó·±ÈÙ¡£
´ËÍ⣬Vue ÌṩÁËVue-cli ½ÅÊּܣ¬°üÀ¨ÁËWebpack£¬Browserify£¬ÉõÖÁ·Óɿ⣬ÄÜÈÃÄã·Ç³£ÈÝÒ׵ع¹½¨ÏîÄ¿¡£
ѧϰ¶¸ÇͶȶԱÈ
ÔÚÖ¸ÁîÓë×é¼þ·½Ã棬VueÖн«Ö¸ÁîºÍ×é¼þ·ÖµÃ¸üÇåÎú¡£Ö¸ÁîÖ»·â×° DOM ²Ù×÷£¬¶ø×é¼þ´ú±íÒ»¸ö×Ô¸ø×Ô×ãµÄ¶ÀÁ¢µ¥Ôª£¬ÓÐ×Ô¼ºµÄÊÓͼºÍÊý¾ÝÂß¼¡£ÔÚ
Angular1 ÖÐÁ½ÕßÓв»ÉÙÏà»ìµÄµØ·½¡£ÔÚAPIÓë¿ò¼ÜÉè¼Æ·½Ã棬angular1¶¼±ÈvueÒª¸´ÔӵĶࡣ¾Í¸öÈ˸оõ¶øÑÔ£¬angular1ºÍReactµÄѧϰÇúÏß»áÏà¶Ô¶¸ÇÍһЩ£¬¶øvueµÄ±àÂ뷽ʽ»á¸üÇ÷½üÓÚǰ¶Ë¿ª·¢Õߵıà³Ìϰ¹ß¡£
ÒòΪvueµÄ×÷ÕßÊÇÖйúÈË£¬vueµÄ¹Ù·½ÍøÕ¾¡¢½Ì³ÌºÍapi¿Ï¶¨ÊÇ×îÍêÉÆ¡¢×îÒ×¶®µÄ¡£´ËÍ⣬ÿ´Î´ó°æ±¾µÄ·¢²¼£¬¶¼»á°éËæ×ÅÏ꾡µÄÇ¨ÒÆËµÃ÷Îĵµ£¬°üº¬Á˺ܶàÏ꾡µÄ²ûÊöÒÔ¼°Ðí¶àÇ¨ÒÆµÄÀý×Ó£¬ÉõÖÁ»¹ÓÐÇ¨ÒÆ¹¤¾ß¡£AngularµÄ¿ª·¢ÍŶÓÄãÃǾͲ»¾õµÃÁ³ºìô¡
VueµÄʹÓ÷dz£µÄ¼òµ¥£¬´´½¨Ò»¸ö±¾µØµÄ .html Îļþ£¬È»ºóͨ¹ýÈçÏ·½Ê½ÒýÈë Vue£º

ÕâÑù¾ÍÉú³ÉÁËvueµÄhello worldÓ¦Óá£
äÖȾÄÜÁ¦¶Ô±È
ReactNativeÄÜʹÄãÓÃÏàͬµÄ×é¼þÄ£ÐͱàдÓб¾µØäÖȾÄÜÁ¦µÄ APP£¨iOS ºÍ Android£©¡£ÄÜͬʱ¿ç¶àƽ̨¿ª·¢£¬¶Ô¿ª·¢ÕßÊǷdz£°ôµÄ¡£ÎªÁËÃÖ²¹Õâ·½ÃæµÄ²»×㣬ÔÚ2016Äê9Ô¾ٰìµÄJSConf2016ÆÚ¼ä£¬vue.jsµÄ×÷ÕßÓÈÓêϪÐû²¼¼ÓÃËWeexÍŶӵ£Èμ¼Êõ¹ËÎÊ£¬Ë«·½½«½øÐиü½ôÃܵĺÏ×÷£¬¹²½¨¿ª·¢Éú̬Ȧ¡£
Weex Êǰ¢ÀïµÄ¿çƽ̨Óû§½çÃæ¿ª·¢¿ò¼Ü£¬Weex µÄ JavaScript ¿ò¼ÜÔËÐÐʱÓõľÍÊÇ Vue¡£ÔÚ´ËÖ®ºó£¬ÔÚ
Weex µÄ°ïÖúÏ£¬Ê¹Óà Vue Óï·¨¿ª·¢µÄ×é¼þ²»½ö½ö¿ÉÒÔÔËÐÐÔÚä¯ÀÀÆ÷¶Ë£¬»¹Äܱ»ÓÃÓÚ¿ª·¢ iOS ºÍ
Android ÉϵÄÔÉúÓ¦Óá£
Vue.js µÄ×÷ÕßÓÈÓêϪ±íʾ£º¡°WeexÑ¡ÔñVue×÷ΪÆäJavaScriptÔËÐÐʱ¿ò¼ÜÊÇÈÃÎҷdz£¸ßÐ˵ÄÒ»¼þÊ¡£VueµÄ×é¼þ¿ª·¢Ä£Ê½ÒѾ±»web¿ª·¢ÕßÉçÇø¹ã·º
ÈϿɣ¬¶ø°ÑVueµÄ¿ª·¢ÌåÑéÍØÕ¹µ½ÔÉúƽ̨ÔòÊÇÎÒÒ»Ö±Ïë×öµ«Ã»ÓÐÓàÁ¦È¥×öµÄÊÂÇé¡£Ò»Ïëµ½Weex½«ÄÜÈÿª·¢ÕßÃÇÓÃVueµÄÓ﷨ȥд¿ç
Web/Android/iOSÈý¶ËµÄͨÓÃ×é¼þ£¬¾ÍÈÃÎÒºÜÐË·Ü¡£¡±
vueµÄȱµã
Vue¾ÍÕâôºÃ£¬ÄѵÀûÓÐȱµãÂ𣿵±È»ÓУ¬vueËäÈ»ÔÚ16Äê·Ç³£»ð±¬£¬µ«ÊÇÏà±ÈÓÚangularºÍreact£¬²»ÂÛÊdzÉÊì¶È»¹ÊÇÉçÇø»îÔ¾¶È¶¼»¹²»ÊǶÔÊÖ¡£´ËÍ⣬VueÃ÷È·ÉùÃ÷ÁË×Ô¼º·ÅÆúÁ˶ÔIE8µÄÖ§³Ö¡£ÔÙ¿´¿´ÏÖÔÚµÄÕÐÆ¸ÍøÕ¾ÉÏ£¬ÓжàÉÙдÁËÐèÒªÓÐangular¾Ñ飬¶øÓÖÓжàÉÙдÁËÐèÒªvue¾Ñ飬¾Í¿É¼ûvueµÄÓ°ÏìÁ¦Ïà±ÈÓÚangularºÍreact»¹²îµÄºÜÔ¶¡£
vueÈ«¼ÒͰ¼°ÏîÄ¿¼Ü¹¹
VueÓÐÖøÃûµÄÈ«¼ÒͰϵÁУ¬°üº¬ÁËvue-router£¨http://router.vuejs.org£©£¬vuex£¨http://vuex.vuejs.org£©£¬
vue-resource£¨https://github.com/pagekit/vue-resource£©¡£ÔÙ¼ÓÉϹ¹½¨¹¤¾ßvue-cli£¬¾ÍÊÇÒ»¸öÍêÕûµÄvueÏîÄ¿µÄºËÐĹ¹³É¡£
vue-router·ÓÉ
ÍÆ¼öʹÓÃnpm¹¤¾ßÀ´°²×°vue-router
ͨ¹ýimportµ¼Èë²¢¶¨ÒåVueÄ£¿é¡¢vue-routerÄ£¿éºÍÐèҪʹÓõÄ×é¼þ£¬ÔÚ±¾ÀýÖУ¬·Ö±ðÊÇGoods¡¢RatingsºÍSeller×é¼þ¡£×îºó£¬Èç¹ûÔÚÒ»¸öÄ£¿é»¯¹¤³ÌÖÐʹÓÃËü£¬±ØÐëҪͨ¹ý
Vue.use() Ã÷È·µØ°²×°Â·Óɹ¦ÄÜ¡£
import Vue from¡¯vue¡¯
importRouter from¡¯vue-router¡¯
import Goods from ¡®@/components/goods/goods¡¯;
import Ratings from ¡®@/components/ratings/ratings¡¯;
import Seller from ¡®@/components/seller/seller¡¯;
Vue.use(Router); // ÐèÒªimport VueºÍRouter£¬²»È»»á±¨´íundefined
|
ͨ¹ýconst router= new VueRouter£¨£©À´¶¨ÒåÒ»¸ö·ÓÉ£¬²¢´«Èë¶ÔÓ¦µÄÅäÖ㬰üÀ¨Â·¾¶pathºÍ×é¼þcomponents¡£

×îºó£¬ÔÚʹÓÃnewVueÀ´´´½¨ºÍ¹ÒÔØvue¸ùʵÀýµÄʱºò£¬¼ÇµÃҪͨ¹ý routerÅäÖòÎÊý×¢Èë·ÓÉ£¬¼´ÔÚrouterÖÐexport³öÀ´µÄ·ÓɶÔÏ󣬴ӶøÈÃÕû¸öÓ¦Óö¼ÓзÓɹ¦ÄÜ¡£

vuex״̬¹ÜÀí
Vuex ÊÇÒ»¸öרΪ Vue.js Ó¦ÓóÌÐò¿ª·¢µÄ״̬¹ÜÀíģʽ¡£Ëü²ÉÓü¯ÖÐʽ´æ´¢¹ÜÀíÓ¦ÓõÄËùÓÐ×é¼þµÄ״̬£¬²¢ÒÔÏàÓ¦µÄ¹æÔò±£Ö¤×´Ì¬ÒÔÒ»ÖÖ¿ÉÔ¤²âµÄ·½Ê½·¢Éú±ä»¯¡£ÈçÇ°ÃæËùÌáµ½µÄ£¬Vuex
ÒѾ¼¯³Éµ½ Vue µÄ¹Ù·½µ÷ÊÔ¹¤¾ßvue Devtools£¬¿ÉÒÔÇáËɵIJ鿴ÏîÄ¿ÖеÄVuex״̬±ä»¯Çé¿ö¡£
¼ÙÉèÓÐÕâÑùÒ»¸ö³¡¾°£ºÎÒÃǵÄÏîÄ¿¹æÄ£±È½Ï´ó£¬Óжà¸ö¸¸×é¼þ£¬Ã¿¸ö¸¸×é¼þͬʱÓÖ°üº¬¶à¸ö×Ó×é¼þ¡£ÈçºÎ±£³Ö¶ÔËùÓÐʱ¼äµÄ×·×Ù½«±äµÃºÜÀ§ÄÑ¡£µ½µ×ÄĸöʼþÊÇÄĸö×é¼þÅÉ·¢µÄ£¬Äĸö×é¼þ¸Ã¼àÌýÄĸöʼþ£¿¸¸×é¼þ½«±äµÃºÍ×Ó×é¼þñîºÏÔ½À´Ô½ÑÏÖØ£¬ÒòΪËüÐèÒªÃ÷È·µÄÅÉ·¢ºÍ¼àÌý×Ó×é¼þµÄijЩʼþ¡£ÏîÄ¿Âß¼·ÖÉ¢ÔÚ¸÷¸ö×é¼þµ±ÖУ¬ºÜÈÝÒ×µ¼ÖÂÂß¼µÄ»ìÂÒ£¬²»ÀûÓÚÎÒÃÇÏîÄ¿µÄά»¤¡£
Õâ¾ÍÊÇ Vuex ÓÃÀ´½â¾öµÄÎÊÌâ¡£ Vuex µÄËĸöºËÐĸÅÄî·Ö±ðÊÇ£º
The state tree£ºVuex ʹÓõ¥Ò»×´Ì¬Ê÷£¬ÓÃÒ»¸ö¶ÔÏó¾Í°üº¬ÁËÈ«²¿µÄÓ¦Óò㼶״̬¡£ÖÁ´ËËü±ã×÷Ϊһ¸ö¡ºÎ¨Ò»Êý¾ÝÔ´(SSOT)¡»¶ø´æÔÚ¡£ÕâÒ²Òâζ×Å£¬Ã¿¸öÓ¦Óý«½ö½ö°üº¬Ò»¸ö
store ʵÀý¡£µ¥×´Ì¬Ê÷ÈÃÎÒÃÇÄܹ»Ö±½ÓµØ¶¨Î»ÈÎÒ»ÌØ¶¨µÄ״̬Ƭ¶Î£¬ÔÚµ÷ÊԵĹý³ÌÖÐÒ²ÄÜÇáÒ×µØÈ¡µÃÕû¸öµ±Ç°Ó¦ÓÃ״̬µÄ¿ìÕÕ¡£
Getters£ºÓÃÀ´´Ó store »ñÈ¡ Vue ×é¼þÊý¾Ý¡£
Mutators£ºÊ¼þ´¦ÀíÆ÷ÓÃÀ´Çý¶¯×´Ì¬µÄ±ä»¯¡£
Actions£º¿ÉÒÔ¸ø×é¼þʹÓõĺ¯Êý£¬ÒÔ´ËÓÃÀ´Çý¶¯Ê¼þ´¦ÀíÆ÷ mutations
VuexºÍ¼òµ¥µÄÈ«¾Ö¶ÔÏóÊDz»Í¬µÄ£¬µ±Vuex´ÓstoreÖжÁȡ״ֵ̬µÄʱºò£¬Èô״̬·¢ÉúÁ˱仯£¬ÄÇôÏàÓ¦µÄ×é¼þÒ²»á¸ßЧµÄ¸üС£²¢ÇÒ£¬¸Ä±ästoreÖÐ״̬µÄΨһ;¾¶¾ÍÊÇÌá½»commit
mutations¡£ÕâÑù±ãÓÚÎÒÃǸú×Ùÿһ´Î״̬µÄ±ä»¯¡£Ö»Òª·¢ÉúÁË״̬µÄ±ä»¯£¬Ò»¶¨°éËæ×ÅmutationµÄÌá½»¡£
ÈÃÎÒÃÇÀ´¿´Ò»¸ö×î¼òµ¥µÄvuexÀý×Ó£º

°²×° Vuex Ö®ºó£¬ÈÃÎÒÃÇÀ´´´½¨Ò»¸ö store¡£´´½¨¹ý³ÌÖ±½ØÁ˵±¡ª¡ª½öÐèÒªÌṩһ¸ö³õʼ state
¶ÔÏóºÍһЩ mutations£º

ÏÖÔÚ£¬Äã¿ÉÒÔͨ¹ý store.state À´»ñȡ״̬¶ÔÏó£¬ÒÔ¼°Í¨¹ý store.commit ·½·¨´¥·¢×´Ì¬±ä¸ü£º
vue-resource½éÉÜ
Vue-resourceÓÐÌå»ýС£¬Ö§³ÖIE9ÒÔÉϵÄä¯ÀÀÆ÷£¬Ö§³ÖpromiseÌØÐÔµÄÌØµã¡£Í¬ÑùÍÆ¼öʹÓÃnpmÀ´°²×°Vue-resource¡£
$ npm install
vue-resource |
ÔÚ°²×°²¢ÒýÈëvue-resourceºó£¬¿ÉÒÔ»ùÓÚÈ«¾ÖµÄVue¶ÔÏóʹÓÃhttp£¬Ò²¿ÉÒÔ»ùÓÚij¸öVueʵÀýʹÓÃhttp¡£

ÔÚ·¢ËÍÇëÇóºó£¬Ê¹ÓÃthen·½·¨À´´¦ÀíÏìÓ¦½á¹û£¬then·½·¨ÓÐÁ½¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýÊÇÏìÓ¦³É¹¦Ê±µÄ»Øµ÷º¯Êý£¬µÚ¶þ¸ö²ÎÊýÊÇÏìӦʧ°ÜʱµÄ»Øµ÷º¯Êý¡£
vue-resourceµÄÇëÇóAPIÊǰ´ÕÕREST·ç¸ñÉè¼ÆµÄ£¬ËüÌṩÁË7ÖÖÇëÇóAPI£º
¡¤ get(url,[options])
¡¤ head(url,[options])
¡¤ delete(url,[options])
¡¤ jsonp(url,[options])
¡¤ post(url,[body], [options])
¡¤ put(url, [body],[options])
¡¤ patch(url,[body], [options]) |
vue¹¤³ÌĿ¼½á¹¹
ÏÂͼÊÇÒ»¸ö¼òµ¥µÄvueÏîÄ¿µÄ´ó¸Å½á¹¹£¬ÏÂÃæ¼òÒª½éÉÜÒ»ÏÂÿ¸öÎļþ¼ÐÖÐÒ»°ã¶¼»á´æ·ÅÄÄЩÄÚÈÝ¡£

components/Îļþ¼ÐÓÃÀ´´æ·ÅVue ×é¼þ¡£¸öÈ˽¨Ò飬°Ñÿһ¸ö×é¼þÖÐʹÓõ½µÄimageͼƬ·ÅÖõ½¶ÔÓ¦µÄ×é¼þ×ÓÎļþĿ¼Ï£¬±ãÓÚͳһµÄ¹ÜÀí
Node_modules/npm°²×°µÄ¸ÃÏîÄ¿µÄÒÀÀµ¿â
vuex/Îļþ¼Ð´æ·ÅµÄÊÇºÍ Vuex store Ïà¹ØµÄ¶«Î÷£¨state¶ÔÏó£¬actions£¬mutations)
router/Îļþ¼Ð´æ·ÅµÄÊǸúvue-routerÏà¹ØµÄ·ÓÉÅäÖÃÏî
build/ÎļþÊÇ webpack µÄ´ò°ü±àÒëÅäÖÃÎļþ
static/Îļþ¼Ð´æ·ÅһЩ¾²Ì¬µÄ¡¢½ÏÉٱ䶯µÄimage»òÕßcssÎļþ
config/Îļþ¼Ð´æ·ÅµÄÊÇһЩÅäÖÃÏ±ÈÈç·þÎñÆ÷·ÃÎʵĶ˿ÚÅäÖõÈ
dist/¸ÃÎļþ¼ÐÒ»¿ªÊ¼ÊDz»´æÔÚ£¬ÔÚÎÒÃǵÄÏîÄ¿¾¹ý build Ö®ºó²Å»á²ú³ö
App.vue¸ù×é¼þ£¬ËùÓеÄ×Ó×é¼þ¶¼½«ÔÚÕâÀï±»ÒýÓÃ
index.htmlÕû¸öÏîÄ¿µÄÈë¿ÚÎļþ£¬½«»áÒýÓÃÎÒÃǵĸù×é¼þ App.vue
main.jsÈë¿ÚÎļþµÄ js Âß¼£¬ÔÚwebpack ´ò°üÖ®ºó½«±»×¢Èëµ½ index.html ÖÐ
vueÖÐlessµÄÓ¦ÓÃ

ÔÚvueÏîÄ¿ÖÐÒ»Ñù¿ÉÒÔʹÓÃlessÔ¤±àÒ룬ֻÊÇÐèҪʹÓÃnpm°²×°less-loader²å¼þ¡£°²×°Íê³Éºó£¬ÔÚvueÖеÄcssÄ£¿é½øÐмòµ¥µÄÅäÖã¬ÕâÑù¾Í¿ÉÒÔÖ±½ÓʹÓÃlessÀ´±àдÑùʽ±íÁË¡£ÔÚ´ò°ü±àÒëµÄʱºò£¬»á×Ô¶¯Éú³É¶ÔÓ¦µÄcssÑùʽ¡£
vueºÏʵÀý½²½âVueºËÐŦÄÜ
VueµÄ¹¦ÄÜÓкܶ࣬ºÜÄÑÒ»Ò»½øÐÐÏêϸµÄ½âÊÍ¡£ÏÂÃæ¸ù¾ÝÔÚ¹¤×÷ÖеÄÏîĿʵÀý£¬½áºÏ´úÂë½âÊÍÒ»ÏÂvueµÄ¼¸´óºËÐŦÄÜ¡£
¼ÆËãÊôÐÔ
¼ÙÉèÓÐÈçÏµĹºÎï³µ½áË㳡¾°£¬Óû§Ñ¡ÖÐÉÌÆ·µÄ×ܽð¶îÊǸù¾ÝÉÌÆ·ÊýÁ¿¡¢Ñ¡ÖÐÉÌÆ·ÖÖÀàÊý ºÍÉÌÆ·µ¥¼ÛÀ´±ä»¯µÄ¡£È»¶ø£¬ÊýÁ¿¡¢Ñ¡ÖÐÖÖÀàÊýÁ¿ºÍµ¥¼ÛÕ⼸¸ö¶ÔÏó¶¼ÊǸù¾ÝÓû§Ñ¡Ôñ¶ø¶¯Ì¬±ä»¯µÄ£¬Èç¹ûÔÚǰ¶ËÄ£°æÖÐΪÁ˼ÆËã×îÖÕÉÌÆ·×ܶ·ÅÈëÕ⼸¸ö¶¯Ì¬±ä»¯µÄ±äÁ¿£¨ÉÌÆ·ÊýÁ¿¡¢ÉÌÆ·µ¥¼Û¡¢Ñ¡ÖÐÉÌÆ·ÖÖÀࣩ£¬»áÈÃÕâ¸öÂß¼±äµÃ¸´ÔÓÄÑÒÔά»¤¡£ÔÚÕâÖÖÇé¿öÏ£¬Ä£°æ±ã²»ÔÙ¼ò½àÇåÎú¡£Vue¸ø³öÁË´ËÖÖ³¡¾°µÄ½â¾ö·½°¸£¬ÔÚÈκθ´ÔÓµÄÂß¼£¬vue¶¼ÍƼöʹÓüÆËãÊôÐÔ¡£


ÈçÉÏͼËùʾ£¬ÔÚhtmlÖУ¬ÎÒÃÇÖ»ÐèҪʹÓÃ{{totalPrice}}Õâ¸ö¼ÆËãÊôÐԾͿÉÒÔÀ´±íʾ×îÖÕµÄÉÌÆ·×ܶÎÒÃDz»ÐèÒª¹Ø×¢Õâ¸ö±äÁ¿µÄÊýÖµ±ä»¯£¬totalPriceÕâ¸ö±äÁ¿µÄÂ߼дÔÚ¶ÔÓ¦µÄcomputed¼ÆËãÊôÐÔÖС£
Ò²Ðí»áÓÐÒÉÎÊ£¬Õâ¸ö¼ÆËãÊôÐԺͶ¨ÒåÒ»¸ömethod·½·¨²»ÊDz¶àô£¿ÕâÁ½Õß×î´óµÄÇø±ðÊǼÆËãÊôÐÔÊÇ»ùÓÚËüµÄÒÀÀµ½øÐлº´æµÄ¡£¼ÆËãÊôÐÔÖ»ÓÐÔÚËüµÄÏà¹ØÒÀÀµ·¢Éú±ä»¯Ê±²Å»áÖØÐ¼ÆËãÇóÖµ¡£ÔÚ±¾ÀýÖУ¬Ö»Óе±Ñ¡ÔñÉÌÆ·µÄ¼Û¸ñpriceºÍÊýÁ¿count·¢Éú±ä»¯Ê±£¬Õâ¸ö¼ÆËãÊôÐÔtotalPrice²Å»áÖØÐ¼ÆËãеÄÖµ¡£Õâ¾ÍÒâζ×Å£¬Ö»ÒªtotalPriceÕâ¸öֵûÓз¢Éú±ä»¯£¬¶à´Î·ÃÎʸüÆËãÊôÐÔ»áÁ¢¼´·µ»ØÖ®Ç°µÄ¼ÆËã½á¹û£¬¶ø²»±ØÔÙ´ÎÖ´ÐмÆËã¡£
Ä£°æÓï·¨
Vue.js ʹÓÃÁË»ùÓÚ HTML µÄÄ£°æÓï·¨£¬ÔÊÐí¿ª·¢ÕßÉùÃ÷ʽµØ½« DOM °ó¶¨ÖÁµ×²ã Vue ʵÀýµÄÊý¾Ý¡£ËùÓÐ
Vue.js µÄÄ£°å¶¼ÊǺϷ¨µÄ HTML £¬ËùÒÔÄܱ»×ñѹ淶µÄä¯ÀÀÆ÷ºÍ HTML ½âÎöÆ÷½âÎö¡£VueµÄÄ£°æÓï·¨°üÀ¨ÁËʹÓÃË«´óÀ¨ºÅ²åÈëÎı¾¡¢Ê¹ÓÃv-html²åÈë´¿HTMLÄÚÈÝ¡¢Ê¹ÓÃv-bind²åÈë¶ÔÏó¡¢ÀàËÆangularµÄv-if¡¢v-show¡¢v-forÖ¸Áî¡¢ÒÔ¼°¹ýÂËÆ÷µÈµÈ¡£

×é¼þ»¯
×é¼þ£¨Component£©ÊÇ Vue.js ×îÇ¿´óµÄ¹¦ÄÜ¡£×é¼þ¿ÉÒÔ·â×°¿ÉÖØÓõĴúÂ룬ͨ¹ý´«Èë¶ÔÏóµÄ²»Í¬£¬ÊµÏÖ×é¼þµÄ¸´Óá£
¾ÙÒ»¸ö¼òµ¥µÄ×齨Àý×Ó£¬ÎÒÃÇÊ×Ïȱàдһ¸östar×é¼þ£¬Ëü¾ÍÊÇÒ»¸öÆÕͨµÄstar.vueÎļþ¡£ËüµÄ×÷ÓþÍÊǼòµ¥ÊµÏÖÁËÒ»¸öÎå½ÇÐÇ¡£
ÈçºÎÔÚÆäËûµÄvueÎļþÖÐʹÓÃÕâ¸östar×é¼þÄØ£¿ÈçÏÂͼËùʾ£¬Ê×ÏÈͨ¹ýimportÒýÈëstar×é¼þ¶ÔÏ󣬲¢ÔÚÏëʹÓÃstar×é¼þµÄvueÎļþÖÐÉùÃ÷×¢²ástar×é¼þ¡£ÏÖÔھͿÉÒÔÓä¿ìµÄͨ¹ý±êÇ©À´ÔÚ¸ÃvueÎļþÖÐÈÎÒâµØ·½Ê¹ÓÃstar×é¼þÁË¡£ÔÚÄãÏëչʾһ¸öÎå½ÇÐǵĵط½£¬Ê¹ÓÃÒ»¸östar±êÇ©£¬¾Í¿ÉÒÔÇáËÉÍê³ÉÕâ¸ö¹¦ÄÜ¡£
×é¼þʵÀýµÄ×÷ÓÃÓòÊǹÂÁ¢µÄ¡£ÕâÒâζ×Ų»ÄÜÔÚ×Ó×é¼þµÄÄ£°åÄÚÖ±½ÓÒýÓø¸×é¼þµÄÊý¾Ý¡£ÒªÈÃ×Ó×é¼þʹÓø¸×é¼þµÄÊý¾Ý£¬ÎÒÃÇÐèҪͨ¹ý×Ó×é¼þµÄpropsÑ¡Ïî¡£Èç±¾ÀýËùʾ£¬×Ó×é¼þstarÒªÏÔʽµÄʹÓÃpropsÑ¡ÏîÉùÃ÷ËüÆÚ´ý»ñµÃµÄÊý¾Ý¡£ÔÚÕâÀï¾ÍÊÇÖ¸µÄ¡°size¡±ºÍ¡°score¡±Á½¸ö±äÁ¿¡£ÎÒÃÇ¿ÉÒÔͨ¹ý¸¸¼¶¸ø×Ó×é¼þstar´«Èë´óСºÍÊýÖµÕâÁ½¸ö¶ÔÏó£¬À´ÊµÏÖ¶Ô×Ó×é¼þµÄ¶¨ÖÆ»¯¡£

¹ý¶ÉЧ¹û
Vue ÔÚ²åÈë¡¢¸üлòÕßÒÆ³ý DOM ʱ£¬Ìṩ¶àÖÖ²»Í¬·½Ê½µÄÓ¦Óùý¶ÉЧ¹û£¬¿ÉÒÔÓüòµ¥µÄ¼¸ÐдúÂëʵÏÖ¿áìŵĹý¶ÉЧ¹û¡£Vue
ÌṩÁË transition µÄ·â×°×é¼þ£¬ÔÚʹÓÃv-if¡¢v-showµÈ·½·¨Ê¹µÃtransitionÄÚ²¿domÔªËØ·¢Éú±ä»¯Ê±£¬¿ÉÒÔ¸øÈκÎÔªËØºÍ×é¼þÌí¼Ó
entering/leaving ¹ý¶É¡£
µ±v-showÖÐÄÚÈÝ·¢Éú±ä»¯Ê±£¬transition×é¼þÖеÄÔªËØ»á·¢Éú״̬µÄ¸Ä±ä£¬ÔÚÓ¦ÓÃÁËtransition·â×°ºó£¬Vue»á×Ô¶¯Ê¶±ðÄ¿±êÔªËØÊÇ·ñÓ¦ÓÃÁËCSS¹ý¶ÉЧ¹û¶¯»£¬Èç¹ûÓУ¬»áÔÚºÏÊʵÄʱ»úÌí¼Ó
entering/leavingµÄclassÀ´ÊµÏָùý¶ÉЧ¹û¡£
ÏÂͼËùʾÊÇÒ»¸ö¼òµ¥µÄ¹ý¶ÉЧ¹ûµÄÀý×Ó£¬ÐèÒª½«ÏëʵÏÖ¹ý¶ÉЧ¹ûµÄÔªËØ·ÅÔÚtransition±êÇ©Öаü¹ü£¬Í¨¹ýname=¡°slide-fade¡±À´ÉùÃ÷¹ý¶ÉЧ¹ûÃû³Æ£¬²¢ÔÚ¶ÔÓ¦µÄvueÎļþÖÐÌí¼Ó¹ý¶ÉЧ¹û
µÄcssÑùʽ£¬ÕâÑù¾Í¿ÉÒÔ¼òµ¥µÄÍê³É¸ÃÔªËØµÄ¹ý¶ÉЧ¹û¡£


×ܽá
¸ù¾Ý²»Íêȫͳ¼Æ£¬°üÀ¨¶öÁËô¡¢ËÕÄþÒ×¹º¡¢ÃÀÍÅ¡¢Ììè¡¢Laravel¡¢htmlBurgerµÈ¹úÄÚÍâÖªÃû´ó¹«Ë¾¶¼ÔÚʹÓÃvue½øÐÐÐÂÏîÄ¿µÄ¿ª·¢ºÍ¾ÉÏîÄ¿µÄǰ¶ËÖØ¹¹¹¤×÷¡£
´ËÍ⣬vue + vuex+ axios + vue-router + webpack + es6
+ lessµÄÏîÄ¿¼Ü¹¹³ÉΪÁËÔ½À´Ô½¶à´ó¹«Ë¾µÄµÚһѡÔñ¡£ |