ʹÓùýһЩÇåµ¥ÀàµÄÓ¦ÓóÌÐò£¬Ïñ WunderList, Google KeepµÈ£¬ÓÃÀ´¼Ç¼һЩ¼Æ»®ºÍ°²ÅÅ£¬Ò²ÊÔ׎«×Ô¼ºµÄ¼Æ»®°²ÅÅͬ±Ê¼ÇÒ»ÆðÕûÀíÔÚ
Evernote ÖУ¬µ«ÊÇÎÞÂÛÄÄÖÖ·½Ê½ÓÃÆðÀ´×ܾõµÃÉÙÁ˵ãʲô£¬Èç¹ûÁ½ÕßµÄһЩ¹¦ÄÜÄܹ»½áºÏÆðÀ´£¬¾ÍºÜÍêÃÀÁË¡£
¡°todo¡±ºÍ¡°note¡±Ö®¼äµÄ¹ØÏµ±¾À´¾ÍºÜ΢Ãһ¸ö¡°todo¡±Ð´µÃÏêϸµã²»¾Í³ÉÁË¡°note¡±Âð?ÓÚÊÇ×Ô¼ºÐ´ÁËÒ»¸öÉÔ΢¸´ÔÓÒ»µãµÄÇåµ¥³ÌÐò£¬½ñÌ콫ÏîÄ¿×ܽáÕûÀíÔÚ´Ë¡£
ÎÒÊÔ׎« todoºÍ note ½áºÏ£¬¿ÉÒÔÏñ WunderList Ò»Ñù¼Ç¼¼Æ»®£¬ÓÖ¿ÉÒÔ
Evernote Ò»Ñù¹ÜÀí±Ê¼Ç¡£ÔÚ¿ª·¢¹ý³ÌÖУ¬·´¸´µ÷ÕûºÍÐ޸ģ¬×îÖÕ·¢ÏÖ£ºÆäʵÎÒÖ»ÊÇ×öÁËÒ»¸öÖ§³Ö markdown
µÄ ¼òÒ×°æWunderList :(¡£²»¹ÜÔõôÑù£¬Äܼá³ÖÏÂÀ´¾ÍÊÇÖµµÃ¹ÄÀøµÄ¡£Õû¸ö¹¤³Ìǰºó¶Ë·ÖÀ룬ºó¶ËʵÏÖ²»Ôڴ˽éÉÜ
ǰ¶Ë´úÂëµØÖ·£¬
ºó¶Ë´úÂëµØÖ·£¬
ÔÚÏßÔ¤ÀÀ¡£
½ÓÏÂÀ´£¬ÎÒ¼òµ¥½éÉÜһϠsimplelist µÄǰ¶ËʵÏÖ¹ý³Ì¡£×¢Ò⣬ÏÂÃæ½éÉܵÄһЩ¹ý³Ì²»ÊÇÒ»õí¶ø¾Í£¬ÊÇ·´¸´Ð޸ĺÍÕûÀíµÃ³öµÄ£¬±ÈÈç¼¼ÊõÑ¡ÔñºÍ×é¼þµÄ»®·Ö¡£
±àд´úÂëµÄǰÆÚ×¼±¸¹¤×÷
ÓÐÈýµã
1.È·¶¨ÐèҪʵÏֵŦÄÜ
2.È·¶¨½çÃæ
3.È·¶¨¼¼ÊõʵÏֵķ½°¸
¹¦ÄܺͽçÃæÏÈ·ÅÒ»±ß£¬½éÉÜһϲÉÓõļ¼Êõ·½°¸¡£ÆäʵҲûɶ¿É½éÉܵģ¬Ç°¶ËÀÏ˾»ú»¨Ñù¶à£¬µ«ÊÇÖ÷Á÷µÄÌ×·Ҳ¾ÍÄÇô¼¸ÖÖ£¬ÎÒÑ¡Ôñ¡°Ì×·¤ÎVue¡±¡£Vue+
Vuex+ Vue-Router£¬ÆäËûÅä¼þÏñ Less£¬WebpackµÈ´ó¼ÒÒ²Ó¦¸Ã¶¼Çå³þ¡£Óû§µÇ½ע²á¼°½Ó¿ÚµÄʵÏÖ²»ÔÚ±¾ÎÄÕµÄÌÖÂÛÖУ¬Ï´ÎÔÙ½²¡£
×é¼þ»®·ÖºÜ¹Ø¼ü
ÔÚ React µÄ×é¼þ»¯µÄ»®·Ö·½Ê½ÖУ¬½«×é¼þ·Ö³ÉÁ½ÖÖ£ºContainer
ComponentsºÍPresentational Components£¬ÈÝÆ÷×é¼þºÍ UI×é¼þ¡£ÈÝÆ÷×é¼þ¸ºÔðÊý¾ÝºÍÒµÎñÂß¼µÄ´¦Àí£¬Ð¯´øÏà¹ØµÄÄÚ²¿×´Ì¬£¬ÓëÊý¾ÝÓÐÆµ·±µÄ½»»¥£¬
UI×é¼þÖ»¸ºÔð UI µÄ³ÊÏÖ£¬Ã»ÓÐÈκεÄÊý¾ÝºÍÂß¼µÄ´¦Àí£¬×é¼þµÄÊý¾Ý´ÓÈÝÆ÷×é¼þ´«µÝ½øÀ´(ÔÚ ReactÖÐÊý¾ÝÓÉ
this.props Ìṩ)¡£Èç¹ûÒ»¸ö×é¼þ¼ÈÓÐ UI ÓÖÓÐÒµÎñÂß¼£¬¿ÉÒÔÊÔ׎«Ëü²ð·Ö³ÉÁ½¸ö£ºÒ»¸öÈÝÆ÷×é¼þ£¬°ü×ÅÒ»¸öUI
×é¼þ¡£Ç°Õ߸ºÔðÓëÍⲿµÄͨÐÅ£¬½«Êý¾Ý´«¸øºóÕߣ¬ÓɺóÕßäÖȾ³öÊÓͼ¡£
¸öÈ˱ȽÏϲ»¶ÕâÖÖ·½Ê½£¬×é¼þ±äµÃ´¿´â¡£²»¹ýËÆºõÔÚ Vue Éú̬ȦÖÐûÓÐÉè¼ÆÕâ·½ÃæµÄ½éÉÜ£¬ÔÚºóÃæÎÒ´òËã³¢ÊÔʹÓÃÕâÖÖ·½Ê½£¬²»¹ýÏÖÔÚ»¹ÊÇʹÓÃÏà¶Ô´Ö±©Ò»µãµÄ·½Ê½À´»®·Ö¡£

ÕâÊÇ WunderList µÄ½çÃæ£¬¼òµ¥µÄ·ÖÎöÖ®ºó£¬¿ÉÒÔ½«Æä»®·Ö³ÉÈçÏÂÐÎʽ£¬ÔÙÏêϸһµãµÄ»°¿ÉÒÔ¿´ÏÂͼ£¬Èç¹û¼á³ÖÈÝÆ÷×é¼þºÍ
UI×é¼þµÄÐÎʽ¿ª·¢µÄ»°£¬Ïà¶Ô½Ï¸´ÔÓÒ»µã£¬¶øÎÒÑ¡ÔñÏÈ´Ó¼òµ¥µÄÈëÊÖ¡£Ïë±ØÄãÓ¦¸Ã¿´¹ýTodoMVC£¬¶øÕâÑùÒ²ÊÇsimplelist
µÄ×î¼òµ¥Ò²ÊÇ×îºËÐĵŦÄÜ¡£ËùÒÔÔÚʵ¼Ê²Ù×÷¹ý³ÌÖУ¬ÎÒÏȽ«ÊäÈë¿òºÍµ¥¸öÈÎÎñÕâÁ½¸ö×é¼þʵÏÖ¡£

Vuex
Vuex ÊÇÒ»¸öרÃÅΪ Vue.js Ó¦ÓÃËùÉè¼ÆµÄ¼¯ÖÐʽ״̬¹ÜÀí¼Ü¹¹¡£Ëü½è¼øÁË
Flux ºÍ Redux µÄÉè¼ÆË¼Ï룬µ«¼ò»¯Á˸ÅÄ²¢ÇÒ²ÉÓÃÁËÒ»ÖÖΪÄܸüºÃ·¢»Ó Vue.js Êý¾ÝÏìÓ¦»úÖÆ¶ø×¨ÃÅÉè¼ÆµÄʵÏÖ¡£
ÔÚµ¥¶ÀʹÓà Vue.js µÄʱºò£¬Í¨³£»á°Ñ״̬´¢´æÔÚ×é¼þµÄÄÚ²¿¡£Õû¸öÓ¦ÓõÄÊý¾ÝºÍ״̬¶¼ÊÇÉ¢ÂäÔÚ¸÷¸ö×é¼þ¡£ÕâÑù²¢Ã»ÓÐÓÐʲôÎÊÌ⣬×é¼þµÄÊý¾Ý×齨×Ô¼º¹ÜÀí¡£ÓÐʱºò״̬µÄÒ»²¿·ÖÐèÒª¹²Ïí¸øÆäËûµÄ×é¼þ£¬´ËʱʹÓÃʼþϵͳ£¬ÈÃÒ»¸ö×é¼þ°ÑһЩ״̬¡°·¢ËÍ¡±µ½ÆäËû×é¼þ£¬µ«Êǵ±ÏîĿһ²½²½À©´óʱ£¬Ê¼þÁ÷½«±äµÃ·±ÔÓ£¬²»ÀûÓÚµ÷ÊÔºÍά»¤¡£´Ëʱ
Vuex ¿ÉÒÔ°ïÖúÎÒÃÇʵÏÖ״̬µÄ¹ÜÀí¡£
Vuex µÄËĸöºËÐĸÅÄî·Ö±ðÊÇ£º
1.The state tree£ºVuex ʹÓõ¥Ò»×´Ì¬Ê÷£¬ÓÃÒ»¸ö¶ÔÏó¾Í°üº¬ÁËÈ«²¿µÄÓ¦Óò㼶״̬£¬×÷Ϊһ¸ö¡ºÎ¨Ò»Êý¾ÝÔ´(SSOT)¡»¶ø´æÔÚ¡£Ã¿¸öÓ¦Óý«½ö½ö°üº¬Ò»¸ö
store ʵÀý¡£µ¥×´Ì¬Ê÷ÈÃÎÒÃÇÄܹ»Ö±½ÓµØ¶¨Î»ÈÎÒ»ÌØ¶¨µÄ״̬Ƭ¶Î£¬ÔÚµ÷ÊԵĹý³ÌÖÐÒ²ÄÜÇáÒ×µØÈ¡µÃÕû¸öµ±Ç°Ó¦ÓÃ״̬µÄ¿ìÕÕ¡£Êý¾ÝÁ÷¶¼Êǵ¥ÏòµÄ¡£
2.Getters£ºÓÃÀ´´Ó store »ñÈ¡ Vue ×é¼þÊý¾Ý¡£
3.Mutators£ºÊ¼þ´¦ÀíÆ÷ÓÃÀ´Çý¶¯×´Ì¬µÄ±ä»¯£¬Ö»ÓÐ mutation
¿ÉÒԸıä״̬¡£
4.Actions£º¿ÉÒÔ¸ø×é¼þʹÓõĺ¯Êý£¬ÓÃÀ´ÅÉ·¢ Mutation¡£
Vuex ¹æ¶¨£¬ÊôÓÚÓ¦Óò㼶µÄ״ֻ̬ÄÜͨ¹ý Mutation Öеķ½·¨À´Ð޸쬶øÅÉ·¢
Mutation ÖеÄʼþÖ»ÄÜͨ¹ý action¡£´Ó×é¼þ³ö·¢£¬×é¼þÖе÷Óà action£¬ÔÚ action
ÕâÒ»²ã¼¶ÎÒÃÇ¿ÉÒԺͺǫ́Êý¾Ý½»»¥£¬±ÈÈç»ñÈ¡³õʼ»¯µÄÊý¾ÝÔ´£¬»òÕßÖмäÊý¾ÝµÄ¹ýÂ˵ȡ£È»ºóÔÚ action ÖÐÈ¥ÅÉ·¢
Mutation¡£Mutation È¥´¥·¢×´Ì¬µÄ¸Ä±ä£¬×´Ì¬µÄ¸Ä±ä£¬½«´¥·¢ÊÓͼµÄ¸üС£

ÅäºÏ Vuex ÕâÑùµÄÊý¾Ý¹ÜÀí¼Ü¹¹£¬ÎÒÖ»ÐèÒª¹ØÐÄ×é¼þµÄ״̬±ä»¯£¬Êý¾ÝµÄ±ä»¯ºÍÁ÷ͨȫ²¿½»¸ø
Vuex¡£ÎÒÐèҪά»¤Ò»¸öÊý×飬Êý×éÖÐÿһ¸öÔªËØ´ú±íÒ»¸öÈÎÎñ£¬ÊäÈë¿òºÍÈÎÎñÉϵıà¼É¾³ýµÈ²Ù×÷£¬±¾ÖÊÉ϶¼ÊǶÔÒ»¸öÊý×éµÄ²Ù×÷¡£
¸øÈÎÎñ¼ÓÉÏ·ÖÀà
ÎÒÒѾ˵¹ýÁË£¬ÎÒÒª×öµÄÊǸ´Ô simplelist¡£ËùÒÔ£¬ÔÚÍê³ÉÁË×î¼òµ¥µÄÔöɾ¸ÄµÄ¹¦ÄÜÖ®ºó£¬Òª¼ÓÉÏÈÎÎñµÄ×Ô¼ºµÄ¹éÊôÁË¡£Ã¿¸öÈÎÎñ¶¼¹éÊôÓÚÒ»¸öÇåµ¥£¬ÓÐΨһµÄÇåµ¥
id(list_id)¡£¾ÍÏñ WunderList Ò»Ñù£¬×ó²àÇåµ¥ÁÐ±í£¬ÓÒ²àÈÎÎñÁÐ±í¡£ÕâʱºòÐèÒªÓõ½µ¥Ò³ÒýÓÃÖбز»¿ÉÉٵķÓÉ×°ÖÃÁË¡£
´Ó¼òµ¥µÄ¿ªÊ¼£¬³ýÁ˵ǼºÍ×¢²á(ĿǰÕûºÏÔÚÓ¦ÓÃÖУ¬¸üºÃµÄ×ö·¨Ó¦¸ÃÊǵǼע²á×÷ΪÁ½¸öµ¥¶ÀµÄÒ³Ãæ£¬ÕâÀïÖ»ÊǸöÈË
demo£¬Ôݲ»¿¼ÂÇ)£¬ÔÝÇÒÖ»ÓÐÒ»ÖÖ·ÓÉ״̬£¬ÓÃÀ´Ö¸Ïò¶ÔÓ¦µÄÇåµ¥£¬ÀýÈ磺/lists/:id¡£ÏÂÃæÊÇα´úÂë
<div id="app"> <router-view></router-view> </div> |
const ListItem = { template: `<div class="item">{{item.title}}</div>`, props: ['item'], } const ListContainer = { template: `<div class="list"> <h2>List {{ $route.params.id }}</h2> <div class="item-list"> <list-item v-for="item in list" :item='item'></list-item> </div> </div>`, components: { 'list-item': ListItem, }, } const router = new VueRouter({ routes: [ { path: '/lists/:id', component: ListContainer } ] }) |
È»ºó°ó¶¨ºÃ <router-link>£¬Â·ÓÉÇл»¾ÍËãÍê³ÉÁË¡£µ«ÊǹâÕâÑù»¹²»ÐУ¬×î¹Ø¼üµÄÇåµ¥Êý¾Ý¹ÜÀí»¹Ã»ÓмÓÉÏ¡£ÆäʵÇåµ¥µÄÊý¾Ý״̬¹ÜÀíÓëÈÎÎñµÄ¹ÜÀí´óͬСÒ죬¾Í²»Ôڴ˸´Êö£¬Äã¿ÉÒÔÊÔ×ÅÞÛÒ»ÞÛ¡£
µ¯²ã×é¼þµÄ¹ÜÀí
ÔÚ´´½¨ºÍ±à¼Çåµ¥µÄʱºò£¬ÐèÒªµ¯³öÒ»¸ö modal À´·½±ã²Ù×÷(²ÎÕÕ WunderList)¡£Õâ¸öʱºò¾ÍÉæ¼°µ½Ò»¸öÎÊÌ⣺ÕâÖÖ¶¨Î»²»ÊǺÜÇåÎúµÄÄ£¿é£¬¸ÃÔõôÀ´¹ÜÀí?
ÔÚÎÒ¿´À´£¬ÕâÖÖÀàÐÍÄ£¿é´óÖÂÓÐÁ½À࣬һÀàÊÇÈ«¾Ö¹²Ïí£¬¿ÉÄÜÔںܶ಻ͬµÄ×é¼þÖж¼ÐèÒªµ÷Óã¬ÕâÖÖÈ«¾ÖµÄÎÒÈÏΪ¿ÉÒÔµ¥¶ÀÄóöÀ´·ÅÔÚͬһ¸öµØ·½¹©Ó¦Óõ÷Óá£ÁíÒ»ÀàÊÇÖ»ÊôÓÚijһ¸ö×é¼þ£¬Ö»»áÔڹ̶¨µÄ×é¼þÖб»µ÷Óã¬ÕâÀàÄ£¿éÍÆ¼öÖ±½ÓдÔÚ×é¼þÖУ¬·½±ã¹ÜÀí£¬×îºÃÊÇдÔÚ¶¥¼¶×é¼þÖУ¬±ÜÃâһЩȫÆß°ËÔãµÄÑùʽ³åÍ»(ĿǰÎÒÓöµ½µÄÖ÷Òª»¹ÊDzãµþ˳ÐòµÄÎÊÌâ)¡£
˼·ÇåÎúÖ®ºó£¬¿ÉÒÔºÜ˳ÀûµÄÍê³ÉÇåµ¥µÄ´´½¨ºÍ±à¼¹¦ÄÜ¡£
˵µ½Õ⣬һ¸ö¸´Ô simplelist µÄ»ù±¾½á¹¹ºÍ¹¦ÄÜÒѾ³öÏÖÁË¡£ÄÇôÎÊÌâÀ´ÁË£¬Äãѧµ½ÁËÂð£¿
|