HTML5¼¼Êõ

¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç4--´òÔìµ¥Ò³Ó¦ÓÃSPA - ¸ü°®Web-APP

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2017-10-12 09:00 ÎÒÒªÆÀÂÛ( )

·ÓÉÊÇÒ»¸öµ¥Ò³Ó¦ÓõĺËÐÄ£¬´ó²¿·ÖÇ°¶Ë¿ò¼Ü¶¼ÊµÏÖÁËÒ»¸ö¸´ÔӵķÓɿ⣬°üÀ¨¶¯Ì¬Â·ÓÉ£¬Â·Óɹ³×Ó£¬×é¼þÉúÃüÖÜÆÚÉõÖÁ·þÎñÆ÷¶ËäÖȾµÈ¸´ÔӵŦÄÜ¡£µ«ÊǶÔÓÚÇ°¶Ë¿ª·¢Õ߶øÑÔ£¬Â·ÓÉ×é¼þµÄºËÐÄÊÇURL·¾¶µ½º¯ÊýµÄÓ³É䣬Á˽âÁËÕâ¸ö¸ÅÄ±ã¿ÉÒÔÇ××ÔʵÏÖÒ»¸ö¼òµ¥µÄ·Óɹ¦

 Â·ÓÉÊÇÒ»¸öµ¥Ò³Ó¦ÓõĺËÐÄ£¬´ó²¿·ÖÇ°¶Ë¿ò¼Ü¶¼ÊµÏÖÁËÒ»¸ö¸´ÔӵķÓɿ⣬°üÀ¨¶¯Ì¬Â·ÓÉ£¬Â·Óɹ³×Ó£¬×é¼þÉúÃüÖÜÆÚÉõÖÁ·þÎñÆ÷¶ËäÖȾµÈ¸´ÔӵŦÄÜ¡£µ«ÊǶÔÓÚÇ°¶Ë¿ª·¢Õ߶øÑÔ£¬Â·ÓÉ×é¼þµÄºËÐÄÊÇURL·¾¶µ½º¯ÊýµÄÓ³É䣬Á˽âÁËÕâ¸ö¸ÅÄ±ã¿ÉÒÔÇ××ÔʵÏÖÒ»¸ö¼òµ¥µÄ·Óɹ¦ÄÜ¡£

1£®Â·ÓɵÄÔ­Àí

·ÓÉ£¨Route£©ÔÚÇ°¶Ë¿ÉÒÔÀí½âΪURL·¾¶µ½º¯ÊýµÄÓ³Éä¡£µ±·ÃÎʵ½Ò»¸öÌض¨µÄ·¾¶Ê±Ö´ÐÐÌض¨µÄº¯Êý¡£ÁíÒ»¸ö¸ÅÄîRouter£¬ÓÃÓÚ¹ÜÀí¸÷ÖÖRoute£¬Ò²¾ÍÊÇÆ¥Åä·¾¶µ½º¯ÊýµÄ¹ý³Ì¡£

2£®ÊµÏÖ·ÓÉ

Web¶ËʵÏÖ·ÓÉÓÐÁ½ÖÖ¼¼Êõģʽ¡£

  • »ùÓÚHash
  • »ùÓÚHistory API
  •   Hash·ÓɵÄ·¾¶ÖлáÓÐÒ»¸ö¡°#¡±±êÖ¾£¬¼´³£ËµµÄêµã£¬Ç°¶ËÏòºó¶Ë·þÎñÆ÷·¢ËÍÇëÇóʱ²¢²»»á½âÎöHash²¿·Ö¡£Â·ÓÉʵÏÖͨ¹ý¼àÌýÒ³Ãæwindow¶ÔÏóµÄhashChangeÊÂÇ飬µ÷ÓöÔÓ¦µÄº¯Êý£¬ÓŵãÊǼæÈÝÐÔºÃÇÒÍêÈ«ÍÑÀëºó¶Ë£¬È±µãÊÇÒòΪ´øÁËHash±êÖ¾µ¼Ö·Óɲ»Ö±¹Û¡£

        History APIͨ¹ý¼àÌýHTML 5Ìí¼ÓµÄpopstateʼþ£¬URL¸ñʽ¸ú´«Í³µÄºó¶Ë·ÓÉÒ»Ö£¬ÕâÒ²ÊÇÕâÖÖģʽ×î´óµÄÓŵ㡣ȱµãÊÇÖ»ÓÐÐÂÐÍä¯ÀÀÆ÷Ö§³Ö¸ÃÌØÐÔ£¬ÇÒÐèÒªºó¶Ë·ÓÉÅäºÏ£¬ÒòΪµ±Óû§·ÃÎÊÒ»¸öHistory·ÓÉʵÏֵķ¾¶Ê±£¬Ò³ÃæÈÔ»áÏñºó¶ËÇëÇó£¬Èç¹ûºó¶ËûÓÐÉèÖÃÏàÓ¦µÄ·ÓÉʵÏÖÂß¼­£¬½«·µ»Ø404´íÎó¡£

        ¸ù¾ÝÇ°¶Ë·ÓɵĸÅÄʵÏÖÒ»¸ö·ÓÉÐèÒªÈý¸ö²¿·Ö£º´æ´¢Â·¾¶ºÍ¶ÔÓ¦µÄ»Øµ÷·½·¨£¬¼àÌýä¯ÀÀÆ÷µÄÏà¹Øʼþ£¬¸ù¾Ý¼àÌý½á¹ûÖ´Ðз¾¶¶ÔÓ¦»Øµ÷·½·¨¡£¸ù¾ÝÕâЩҪÇó£¬ÔÚ¿ª·¢µÄ·ÓÉÄ£¿éÖУ¬Éè¼ÆÒ»¸ö¶ÔÏóͨ¹ý¡°Key-Value¡±Ä£Ê½´æ·Å·¾¶ºÍ¶ÔÓ¦·½·¨£¬ÔÙͨ¹ýwindow¶ÔÏó¼àÌýpopstateʼþ£¬¸ù¾Ýµ±Ç°µÄ·¾¶´Ó·ÓɶÔÏóÖÐÑ¡ÔñÖ´ÐжÔÓ¦µÄ·½·¨£¬ÊµÏֵĴúÂëÈçÏ£º

     

    function Router() { this.routes = {}; // ´æ·Å·¾¶ºÍ¶ÔÓ¦·½·¨ this.route = function(path, callback) { // ʵÀý»¯ºóͨ¹ýµ÷ÓÃÀ´Ôö¼ÓеķÓÉ this.routes[path] = callback; // ͨ¹ýkey-value´æ·Åcallback } this.refresh = function() { // ͨ¹ýÒ»¸öº¯Êýµ÷ÓÃ×îÖÕµÄcallback var curUrl = location.hash.slice(1) || ¡®/¡¯; // ÔÚHashģʽÏ»ñȡ·¾¶ // var curUrl = location.pathname; // ÔÚHistory APIģʽÏ»ñȡ·¾¶ this.routes[curUrl](); // µ÷ÓÃ×îÖÕµÄcallback } this.init = function() { // ³õʼ»¯·½·¨ // ¼àÌýloadʼþ¶ÔÓ¦µÚÒ»´ÎÒ³Ãæ¼ÓÔØ window.addEventListener(¡®load¡¯, this.refresh.bind(this), false); // HashģʽϼàÌýhashchangeʼþ window.addEventListener(¡®hashchange¡¯, this.refresh.bind(this), false); // History APIģʽϼàÌýpopstateʼþ // window.addEventListener(¡®popstate¡¯, this.refresh.bind(this), false); } }

    ¡¡¡¡

    ÔÚʵ¼Ê¿ª·¢¹ý³ÌÖУ¬ÐèÒªµ÷ÓÃroute·½·¨Ìí¼Ó·ÓɺͶÔÓ¦·½·¨£¬Ê¹ÓôúÂëÈçÏ£º

    var router = new Router(); // ʵÀý»¯Router·½·¨ router.init(); // initÀ´¼àÌý¶ÔÓ¦µÄÈ«¾Öʼþ router.route(¡®/¡¯, function() { ¡­ }); // Óùýroute·½·¨Ìí¼ÓеķÓɺͶÔÓ¦·½·¨ router.route(¡®test¡¯, function() {¡­});

    ¡¡¡¡

        ÕâÑù¾ÍʵÏÖÁËÒ»¸ö¹¦Äܼòµ¥µÄµ¥Ò³Â·ÓÉ£¬¶ÔÓÚʹÓÃÁËReact»òÕßVue.jsÕâÑùµÄ¸´ÔÓµ¥Ò³Ó¦Óã¬Â·ÓÉ×é¼þ»¹ÊµÏÖÁËһϵÁи´ÔӵŦÄÜ¡£±¾½ÚֻʵÏÖÁËÒ»¸ö¼òµ¥µÄ·ÓÉÄ£¿é£¬ÆäËû¸´ÔӵŦÄÜ¿ÉÒԲο¼React Router»òÕßaxios£¨Vue 2.0ÍƼö·ÓÉ£©µÄÔ´Âë¡£

     

    ¸ü¶àÐÅÏ¢¹Ø×¢£º

     

    ¡¡

    1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎתÔصĸå¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬ÇëתÔØʱÎñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

    Ïà¹ØÎÄÕÂ
    • ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç3--´úÂë¼ì²éÈÎÎñ - ¸ü°®Web-APP

      ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç3--´úÂë¼ì²éÈÎÎñ - ¸ü°®Web-APP

      2017-09-30 18:00

    • ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç1¡ª¡ª¾²Ì¬²¼¾ÖÔÚÒƶ¯¶ËÉϵÄ×ÔÊÊÓ¦ - ¸ü°®Web-APP

      ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç1¡ª¡ª¾²Ì¬²¼¾ÖÔÚÒƶ¯¶ËÉϵÄ×ÔÊÊÓ¦ -

      2017-09-30 11:00

    • ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç2¡ª¡ªÊ¹ÓÃGulp¹¹½¨Ò»¸öECMAScript 6ºÍSassÓ¦Óà - ¸ü°®Web-AP

      ¡¶Òƶ¯WebÇ°¶Ë¸ßЧ¿ª·¢ÊµÕ½¡·±Ê¼Ç2¡ª¡ªÊ¹ÓÃGulp¹¹½¨Ò»¸öECMAScript 6

      2017-09-30 08:00

    • ¡¾Ç°¶Ë±Ê¼Ç¡¿ CSS »ù´¡ - רע¾«²Ê

      ¡¾Ç°¶Ë±Ê¼Ç¡¿ CSS »ù´¡ - רע¾«²Ê

      2017-09-04 14:01

    ÍøÓѵãÆÀ
    Ô