{"id":7748,"date":"2022-11-12T12:32:37","date_gmt":"2022-11-12T04:32:37","guid":{"rendered":"https:\/\/egonlin.com\/?p=7748"},"modified":"2022-11-12T12:32:37","modified_gmt":"2022-11-12T04:32:37","slug":"%e7%ac%ac%e5%9b%9b%e8%8a%82%ef%bc%9avue%e7%bb%84%e4%bb%b6-2","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=7748","title":{"rendered":"\u7b2c\u56db\u8282\uff1aVue\u7ec4\u4ef6"},"content":{"rendered":"<h1>\u7ec4\u4ef6<\/h1>\n<h2>1 fetch\u548caxios<\/h2>\n<p>axios\u4e0efetch\u5b9e\u73b0\u6570\u636e\u8bf7\u6c42<\/p>\n<p>(1)fetch\uff08\u4e0d\u662f\u6240\u6709\u6d4f\u89c8\u5668\u90fd\u652f\u6301\uff0c\u8c37\u6b4c\u6d4f\u89c8\u5668\u652f\u6301\uff09<br \/>\nXMLHttpRequest \u662f\u4e00\u4e2a\u8bbe\u8ba1\u7c97\u7cd9\u7684 API\uff0c\u914d\u7f6e\u548c\u8c03\u7528\u65b9\u5f0f\u975e\u5e38\u6df7\u4e71\uff0c\u800c\u4e14\u57fa\u4e8e\u4e8b\u4ef6\u7684\u5f02\u6b65\u6a21\u578b\u5199\u8d77\u6765\u4e0d\u53cb\u597d\u3002  \u517c\u5bb9\u6027\u4e0d\u597d<br \/>\npolyfill:    <a href=\"https:\/\/github.com\/camsong\/fetch-ie8\">https:\/\/github.com\/camsong\/fetch-ie8<\/a><\/p>\n<h3>1.1 fetche\u4f7f\u7528<\/h3>\n<pre><code class=\"language-h&#039;t&#039;m\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;fetch&lt;\/title&gt;\n    &lt;script src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div id=&quot;box&quot;&gt;\n\n    &lt;button @click=&quot;handleClick()&quot;&gt;\u83b7\u53d6\u5f71\u7247\u4fe1\u606f&lt;\/button&gt;\n    &lt;ul&gt;\n        &lt;li v-for=&quot;data in datalist&quot;&gt;\n            &lt;h3&gt;{{data.name}}&lt;\/h3&gt;\n            &lt;img :src=&quot;data.poster&quot;\/&gt;\n        &lt;\/li&gt;\n    &lt;\/ul&gt;\n&lt;\/div&gt;\n&lt;script type=&quot;text\/javascript&quot;&gt;\n    new Vue({\n        el: &quot;#box&quot;,\n        data: {\n            datalist: []\n        },\n        methods: {\n            handleClick() {\n                \/\/https:\/\/m.maizuo.com\/v5\/?co=mzmovie#\/films\/nowPlaying\n                fetch(&quot;.\/json\/test.json&quot;).then(res =&gt; res.json()).then(res =&gt; {\n                    console.log(res.data.films)\n                    this.datalist = res.data.films\n                })\n            }\n        }\n    })\n\n    \/*\n     \/\/ post-1\n      fetch(&quot;**&quot;,{\n          method:&#039;post&#039;,\n          headers: {\n             &quot;Content\u2010Type&quot;: &quot;application\/x\u2010www\u2010form\u2010urlencoded&quot;\n          },\n         body: &quot;name=kerwin&amp;age=100&quot;,\n         credentials:&quot;include&quot;\n     }).then(res=&gt;res.json()).then(res=&gt;{console.log(res)});\n\n     \/\/ post-2\n      fetch(&quot;**&quot;,{\n          method:&#039;post&#039;,\n          headers: {\n             &quot;Content\u2010Type&quot;: &quot;application\/json&quot;\n          },\n         body: JSON.stringify({\n             myname:&quot;kerwin&quot;,\n             myage:100\n         })\n     }).then(res=&gt;res.json()).then(res=&gt;{console.log(res)});\n    *\/\n\n&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>1.2 axios\u7684\u4f7f\u7528<\/h3>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=&quot;utf-8&quot;&gt;\n&lt;title&gt;axios&lt;\/title&gt;\n&lt;script type=&quot;text\/javascript&quot; src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;script src=&quot;https:\/\/unpkg.com\/axios\/dist\/axios.min.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div id=&quot;box&quot;&gt;\n       &lt;button @click=&quot;handleClick()&quot;&gt;\u6b63\u5728\u70ed\u6620&lt;\/button&gt;\n\n        &lt;ul&gt;\n            &lt;li v-for=&quot;data in datalist&quot;&gt;\n                &lt;h3&gt;{{data.name}}&lt;\/h3&gt;\n                &lt;img :src=&quot;data.poster&quot;\/&gt;\n            &lt;\/li&gt;\n        &lt;\/ul&gt;\n    &lt;\/div&gt;\n    &lt;script type=&quot;text\/javascript&quot;&gt;\n\n      new Vue({\n          el:&quot;#box&quot;,\n          data:{\n              datalist:[]\n          },\n          methods:{\n            handleClick(){\n                axios.get(&quot;.\/json\/test.json&quot;).then(res=&gt;{\n                    console.log(res.data.data.films) \/\/ axios \u81ea\u52a8\u5305\u88c5data\u5c5e\u6027 res.data\n                    this.datalist = res.data.data.films\n                }).catch(err=&gt;{\n                    console.log(err);\n                })\n            }\n          }\n      })\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h2>2 \u8ba1\u7b97\u5c5e\u6027<\/h2>\n<pre><code class=\"language-html\">\u590d\u6742\u903b\u8f91,\u6a21\u677f\u96be\u4ee5\u7ef4\u62a4\n(1) \u57fa\u7840\u4f8b\u5b50\n(2) \u8ba1\u7b97\u7f13\u5b58 VS methods-\u8ba1\u7b97\u5c5e\u6027\u662f\u57fa\u4e8e\u5b83\u4eec\u7684\u4f9d\u8d56\u8fdb\u884c\u7f13\u5b58\u7684\u3002-\u8ba1\u7b97\u5c5e\u6027\u53ea\u6709\u5728\u5b83\u7684\u76f8\u5173\u4f9d\u8d56\u53d1\u751f\u6539\u53d8\u65f6\u624d\u4f1a\u91cd\u65b0\u6c42\u503c\n(3) \u8ba1\u7b97\u5c5e\u6027 VS watch\n    - v-model3<\/code><\/pre>\n<h3>2.1 \u901a\u8fc7\u8ba1\u7b97\u5c5e\u6027\u5b9e\u73b0\u540d\u5b57\u9996\u5b57\u6bcd\u5927\u5199<\/h3>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n    &lt;script src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div id=&quot;box&quot;&gt;\n    &lt;!--\u5927\u6bb5\u7684\u4ee3\u7801\u5199\u5728\u8fd9\u91cc\u4e0d\u597d\uff0c\u4f7f\u7528\u8ba1\u7b97\u5c5e\u6027--&gt;\n    {{mytext.substring(0,1).toUpperCase()+mytext.substring(1)}}\n    &lt;p&gt;\u8ba1\u7b97\u5c5e\u6027\uff1a{{getname}}&lt;\/p&gt;\n    &lt;!--\u666e\u901a\u65b9\u6cd5\u8981\u52a0\u62ec\u53f7--&gt;\n    &lt;p&gt;\u666e\u901a\u65b9\u6cd5\uff1a{{getNameMethod()}}&lt;\/p&gt;\n    &lt;!--\u533a\u522b\u662f\u5728\u540c\u4e00\u4e2a\u9875\u9762\u4e2d\u4f7f\u7528\u591a\u6b21\u8ba1\u7b97\u5c5e\u6027\uff0c\u4e0d\u4f1a\u591a\u6b21\u6267\u884c--&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;script&gt;\n    var vm = new Vue({\n        el: &#039;#box&#039;,\n        data: {\n            mytext:&#039;lqz&#039;,\n        },\n        computed:{\n            getname(){\/\/\u4f9d\u8d56\u7684\u72b6\u6001\u6539\u53d8\u4e86\uff0c\u4f1a\u91cd\u65b0\u8ba1\u7b97\n                console.log(&#039;\u8ba1\u7b97\u5c5e\u6027&#039;)\n                return this.mytext.substring(0,1).toUpperCase()+this.mytext.substring(1)\n            }\n        },\n        methods:{\n            getNameMethod(){\n                console.log(&#039;\u666e\u901a\u65b9\u6cd5&#039;)\n                return this.mytext.substring(0,1).toUpperCase()+this.mytext.substring(1)\n            }\n        }\n    })\n&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>2.2 \u901a\u8fc7\u8ba1\u7b97\u5c5e\u6027\u91cd\u5199\u8fc7\u6ee4\u6848\u4f8b<\/h3>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n    &lt;script src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div id=&quot;box&quot;&gt;\n    &lt;p&gt;&lt;input type=&quot;text&quot; v-model=&quot;mytext&quot; @input=&quot;handleChange&quot;&gt;&lt;\/p&gt;\n    &lt;ul&gt;\n        &lt;li v-for=&quot;data in newlist&quot;&gt;{{data}}&lt;\/li&gt;\n    &lt;\/ul&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;script&gt;\n    var vm = new Vue({\n        el: &#039;#box&#039;,\n        data: {\n            mytext: &#039;&#039;,\n            datalist: [&#039;aaa&#039;, &#039;abc&#039;, &#039;abcde&#039;, &#039;abcdef&#039;, &#039;bbb&#039;, &#039;bac&#039;],\n\n        },\n        computed: {\n            newlist() {\n                var newlist = this.datalist.filter(item =&gt; {\n                    return item.indexOf(this.mytext) &gt; -1\n                })\n                return newlist\n            },\n        },\n\n    })\n&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h2>3 Mixins<\/h2>\n<pre><code class=\"language-html\">\u6df7\u5165 (mixins) \u662f\u4e00\u79cd\u5206\u53d1 Vue \u7ec4\u4ef6\u4e2d\u53ef\u590d\u7528\u529f\u80fd\u7684\u975e\u5e38\u7075\u6d3b\u7684\u65b9\u5f0f\u3002\u6df7\u5165\u5bf9\u8c61\u53ef\u4ee5\u5305\u542b\u4efb\u610f\u7ec4\u4ef6\u9009\u9879\u3002\u5f53\u7ec4\u4ef6\u4f7f\u7528\u6df7\u5165\u5bf9\u8c61\u65f6\uff0c\u6240\u6709\u6df7\u5165\u5bf9\u8c61\u7684\u9009\u9879\u5c06\u88ab\u6df7\u5165\u8be5\u7ec4\u4ef6\u672c\u8eab\u7684\u9009\u9879\u3002<\/code><\/pre>\n<h2>4 \u865a\u62dfdom\u4e0ediff\u7b97\u6cd5 key\u7684\u4f5c\u7528<\/h2>\n<h3>4.1 Vue2.0 v-for \u4e2d :key \u6709\u4ec0\u4e48\u7528\u5462\uff1f<\/h3>\n<pre><code class=\"language-python\">\u5176\u5b9e\u5462\u4e0d\u53ea\u662fvue\uff0creact\u4e2d\u5728\u6267\u884c\u5217\u8868\u6e32\u67d3\u65f6\u4e5f\u4f1a\u8981\u6c42\u7ed9\u6bcf\u4e2a\u7ec4\u4ef6\u6dfb\u52a0key\u8fd9\u4e2a\u5c5e\u6027\u3002\nkey\u7b80\u5355\u70b9\u6765\u8bf4\u5c31\u662f\u552f\u4e00\u6807\u8bc6\uff0c\u5c31\u50cfID\u4e00\u6837\u552f\u4e00\u6027\n\u8981\u77e5\u9053\uff0cvue\u548creact\u90fd\u5b9e\u73b0\u4e86\u4e00\u5957\u865a\u62dfDOM\uff0c\u4f7f\u6211\u4eec\u53ef\u4ee5\u4e0d\u76f4\u63a5\u64cd\u4f5cDOM\u5143\u7d20\uff0c\u53ea\u64cd\u4f5c\u6570\u636e\u4fbf\u53ef\u4ee5\u91cd\u65b0\u6e32\u67d3\u9875\u9762\u3002\u800c\u9690\u85cf\u5728\u80cc\u540e\u7684\u539f\u7406\u4fbf\u662f\u5176\u9ad8\u6548\u7684Diff\u7b97\u6cd5\u3002\n\n\u53ea\u505a\u540c\u5c42\u7ea7\u7684\u5bf9\u6bd4\n\u6309\u7167key\u503c\u6bd4\u8f83\uff0c\u51fa\u73b0\u65b0\u7684key\u5c31\u63d2\u5165\n\u901a\u7ec4\u4ef6\u5bf9\u6bd4<\/code><\/pre>\n<h3>4.2 \u865a\u62dfDOM\u7684diff\u7b97\u6cd5<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.pianshen.com\/images\/229\/9f55d5bd86a909d78e78ee23552ab3f5.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/www.pianshen.com\/images\/229\/9f55d5bd86a909d78e78ee23552ab3f5.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glnryd0lt1j30ra0ee0wm.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glnryd0lt1j30ra0ee0wm.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20201214225437290\" style=\"zoom: 67%;\" \/><\/div><\/p>\n<h3>4.3 \u5177\u4f53\u5b9e\u73b0<\/h3>\n<h4>4.3.1 \u628a\u6811\u6309\u7167\u5c42\u7ea7\u5206\u89e3<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns1f3fovj30us0bywjb.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns1f3fovj30us0bywjb.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20201214225736585\" \/><\/div><\/p>\n<h4>4.3.2 \u540ckey\u503c\u6bd4\u8f83<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns2bulkmj30vk07876m.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns2bulkmj30vk07876m.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20201214225827633\" \/><\/div><\/p>\n<h4>4.3.3 \u901a\u7ec4\u4ef6\u5bf9\u6bd4<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns3ru3prj30uu07qaci.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/tva1.sinaimg.cn\/large\/0081Kckwgy1glns3ru3prj30uu07qaci.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20201214225913886\" \/><\/div><\/p>\n<pre><code class=\"language-html\">&lt;div id=&quot;box&quot;&gt;\n    &lt;div v-if=&quot;isShow&quot;&gt;111&lt;\/div&gt;\n    &lt;p v-else&gt;222&lt;\/p&gt;\n    &lt;!--    \n    {tag:div,value:111}\n    {tag:p,value:222}\n    \u76f4\u63a5\u4e0d\u6bd4\u8f83\uff0c\u76f4\u63a5\u5220\u9664div\uff0c\u65b0\u589ep\n    --&gt;\n\n    &lt;div v-if=&quot;isShow&quot;&gt;111&lt;\/div&gt;\n    &lt;div v-else&gt;222&lt;\/div&gt;\n    &lt;!--    \n    {tag:div,value:111}\n    {tag:div,value:222}\n    \u6bd4\u8f83\u90fd\u662fdiv\uff0c\u53ea\u66ff\u6362\u6587\u672c\u5185\u5bb9\n    --&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000020170310\">https:\/\/segmentfault.com\/a\/1190000020170310<\/a><\/p>\n<h2>5 \u7ec4\u4ef6\u5316\u5f00\u53d1\u57fa\u7840<\/h2>\n<h3>5.1 \u7ec4\u4ef6\u662f\u4ec0\u4e48\uff1f\u6709\u4ec0\u4e48\u7528<\/h3>\n<pre><code class=\"language-html\">\u6269\u5c55 HTML \u5143\u7d20\uff0c\u5c01\u88c5\u53ef\u91cd\u7528\u7684\u4ee3\u7801\uff0c\u76ee\u7684\u662f\u590d\u7528\n    -\u4f8b\u5982\uff1a\u6709\u4e00\u4e2a\u8f6e\u64ad\uff0c\u53ef\u4ee5\u5728\u5f88\u591a\u9875\u9762\u4e2d\u4f7f\u7528\uff0c\u4e00\u4e2a\u8f6e\u64ad\u6709js\uff0ccss\uff0chtml\n    -\u7ec4\u4ef6\u628ajs\uff0ccss\uff0chtml\u653e\u5230\u4e00\u8d77\uff0c\u6709\u903b\u8f91\uff0c\u6709\u6837\u5f0f\uff0c\u6709html<\/code><\/pre>\n<h2>6 \u7ec4\u4ef6\u6ce8\u518c\u65b9\u5f0f<\/h2>\n<pre><code class=\"language-html\">1 \u5168\u5c40\u7ec4\u4ef6\n    Vue.component\n2 \u5c40\u90e8\u7ec4\u4ef6<\/code><\/pre>\n<h3>6.1 \u5b9a\u4e49\u5168\u5c40\u7ec4\u4ef6\uff0c\u7ed1\u5b9a\u4e8b\u4ef6\uff0c\u7f16\u5199\u6837\u5f0f<\/h3>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n    &lt;script src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div id=&quot;box&quot;&gt;\n&lt;navbar&gt;&lt;\/navbar&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;script&gt;\n    \/\/\u6ca1\u6709\u4ee3\u7801\u63d0\u793a\uff0c\u8bed\u6cd5\u68c0\u67e5\uff0c\u76ee\u524d\u8fd9\u4e48\u7528\n    \/\/\u540e\u9762\u4f1a\u4f7f\u7528webpack\u6253\u5305\uff0c\u76f4\u63a5\u5b9a\u4e49\u6210 xx.vue\u6587\u4ef6\uff0c\u901a\u8fc7webpack\u6253\u5305\n    Vue.component(&#039;navbar&#039;,{\n        template:`\n        &lt;div&gt;\n            &lt;button @click=&quot;handleClick&quot;&gt;\u8fd4\u56de&lt;\/button&gt;\n            \u6211\u662fNavBar\n            &lt;button style=&quot;background: red&quot;&gt;\u4e3b\u9875&lt;\/button&gt;\n        &lt;\/div&gt;\n        `,\n        methods:{\n            handleClick(){\n                console.log(&#039;nav nav&#039;)\n            }\n        }\n    })\n    var vm = new Vue({\n        el: &#039;#box&#039;,\n        data: {\n        },\n\n    })\n&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>6.2 \u5b9a\u4e49\u5c40\u90e8\u7ec4\u4ef6<\/h3>\n<pre><code class=\"language-html\">Vue.component(&#039;navbar&#039;, {\n    template: `\n        &lt;div&gt;\n            &lt;button @click=&quot;handleClick&quot;&gt;\u8fd4\u56de&lt;\/button&gt;\n            \u6211\u662fNavBar\n            &lt;button style=&quot;background: red&quot;&gt;\u4e3b\u9875&lt;\/button&gt;\n            &lt;br&gt;\n            &lt;child&gt;&lt;\/child&gt;\n        &lt;\/div&gt;\n    `,\n    methods: {\n        handleClick() {\n            console.log(&#039;nav nav&#039;)\n        },\n    },\n    components: {\n            child: {\n                template: `&lt;button&gt;\u513f\u5b50&lt;\/button&gt;`,\n            }\n\n        }\n})<\/code><\/pre>\n<h2>7 \u7ec4\u4ef6\u7f16\u5199\u65b9\u5f0f\u4e0eVue\u5b9e\u4f8b\u7684\u533a\u522b<\/h2>\n<pre><code class=\"language-html\">1 \u81ea\u5b9a\u4e49\u7ec4\u4ef6\u9700\u8981\u6709\u4e00\u4e2aroot element\uff0c\u4e00\u822c\u5305\u88f9\u5728\u4e00\u4e2adiv\u4e2d\n2 \u7236\u5b50\u7ec4\u4ef6\u7684data\u662f\u65e0\u6cd5\u5171\u4eab\n3 \u7ec4\u4ef6\u53ef\u4ee5\u6709data\uff0cmethods,computed....,\u4f46\u662fdata \u5fc5\u987b\u662f\u4e00\u4e2a\u51fd\u6570<\/code><\/pre>\n<pre><code class=\"language-html\">Vue.component(&#039;navbar&#039;, {\n    template: `\n        &lt;div&gt;\n            &lt;button @click=&quot;handleClick&quot;&gt;\u8fd4\u56de&lt;\/button&gt;\n            \u6211\u662fNavBar{{aa}}\n            &lt;button style=&quot;background: red&quot;&gt;\u4e3b\u9875&lt;\/button&gt;\n            &lt;br&gt;\n            &lt;child&gt;&lt;\/child&gt;\n        &lt;\/div&gt;\n    `,\n    methods: {\n        handleClick() {\n            console.log(&#039;nav nav&#039;)\n        },\n    },\n    components: {\n            child: {\n                template: `&lt;button&gt;\u513f\u5b50&lt;\/button&gt;`,\n            }\n\n        },\n    data(){\n        return {\n            aa:&#039;lqz&#039;\n        }\n    },\n})<\/code><\/pre>\n<h2>8 \u7ec4\u4ef6\u901a\u4fe1<\/h2>\n<pre><code class=\"language-html\">1 \u7236\u5b50\u7ec4\u4ef6\u4f20\u503c (props down, events up)\n2 \u7236\u4f20\u5b50\u4e4b\u5c5e\u6027\u9a8c\u8bc1props:{name:Number}Number,String,Boolean,Array,Object,Function,null(\u4e0d\u9650\u5236\u7c7b\u578b)\n3 \u4e8b\u4ef6\u673a\u5236a.\u4f7f\u7528 $on(eventName) \u76d1\u542c\u4e8b\u4ef6b.\u4f7f\u7528 $emit(eventName) \u89e6\u53d1\u4e8b\u4ef6\n4 Ref&lt;input ref=&quot;mytext&quot;\/&gt;  this.$refs.mytext\n5 \u4e8b\u4ef6\u603b\u7ebfvar bus = new Vue();* mounted\u751f\u547d\u5468\u671f\u4e2d\u8fdb\u884c\u76d1\u542c<\/code><\/pre>\n<h3>8.1 \u7236\u5b50\u901a\u4fe1\u4e4b\u7236\u4f20\u5b50<\/h3>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n    &lt;script src=&quot;js\/vue.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div id=&quot;box&quot;&gt;\n    &lt;!--\u4fdd\u8bc1\u5c5e\u6027\u540d\u548cprops\u4e2d\u7684\u5c5e\u6027\u540d\u548c\u53d8\u91cf\u540d\u4e00\u81f4\u5373\u53ef--&gt;\n    &lt;navbar myname=&quot;lqz&quot;&gt;&lt;\/navbar&gt;\n    &lt;navbar myname=&quot;egon&quot;&gt;&lt;\/navbar&gt;\n    &lt;!--\u6ce8\u610f\u6570\u636e\u7ed1\u5b9a--&gt;\n    &lt;navbar :myname=&quot;egon&quot;&gt;&lt;\/navbar&gt;\n    &lt;!--\u53ef\u4ee5\u4f20\u591a\u4e2a,\u4f46\u662f\u6ce8\u610f\uff0c\u4f20\u5165\u7684isshow\u662f\u5b57\u7b26\u4e32\uff0c\u53ef\u4ee5\u4f7f\u7528\u6570\u636e\u7ed1\u5b9a\u53d8\u6210\u5e03\u5c14--&gt;\n    &lt;navbar :myname=&quot;egon&quot; isshow=&quot;false&quot;&gt;&lt;\/navbar&gt;\n    &lt;navbar :myname=&quot;egon&quot; :isshow=&quot;false&quot;&gt;&lt;\/navbar&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;script&gt;\n    \/\/\u6ca1\u6709\u4ee3\u7801\u63d0\u793a\uff0c\u8bed\u6cd5\u68c0\u67e5\uff0c\u76ee\u524d\u8fd9\u4e48\u7528\n    \/\/\u540e\u9762\u4f1a\u4f7f\u7528webpack\u6253\u5305\uff0c\u76f4\u63a5\u5b9a\u4e49\u6210 xx.vue\u6587\u4ef6\uff0c\u901a\u8fc7webpack\u6253\u5305\n    Vue.component(&#039;navbar&#039;, {\n        template: `\n            &lt;div&gt;\n                &lt;button&gt;\u8fd4\u56de&lt;\/button&gt;\n                \u7236\u7ec4\u4ef6\u4f20\u9012\u7684\u5185\u5bb9\u662f:{{myname}}\n                &lt;button&gt;\u4e3b\u9875&lt;\/button&gt;\n                &lt;br&gt;\n            &lt;\/div&gt;\n        `,\n        props:[&#039;myname&#039;]\n    })\n    var vm = new Vue({\n        el: &#039;#box&#039;,\n        data: {},\n\n    })\n&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h4>\u5c5e\u6027\u9a8c\u8bc1<\/h4>\n<div id=\"rml_readmorelogin_placeholder\" style=\"position:relative;\"><div id=\"rml_fade_content\" style=\"position: absolute;\r\ntop:-10em;\r\nwidth:100%;\r\nheight:10em;\r\nbackground: -webkit-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -moz-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -o-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -ms-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\"><\/div><div class=\"wpf-controller aru_rml_from_in_post\" style=\"background-color:#eeeeee;border:5px solid #cce6ff;\" id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><h2 id=\"Header\">\u67e5\u770b\u66f4\u591a<\/h2><div id=\"Message\"><p>\u8054\u7cfb\u7ba1\u7406\u5458\u5fae\u4fe1tutu19192010\uff0c\u6ce8\u518c\u8d26\u53f7<\/p>\n<\/div><div id=\"StatusBarHeader\"><\/div><form id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><input name=\"post_id\" value=\"7748\" type=\"hidden\"\/><input name=\"_init_callback\" value=\"InitLogin\" type=\"hidden\"\/><input name=\"post_id\" value=\"7748\" type=\"hidden\"\/><input name=\"rt_ype\" value=\"1\" type=\"hidden\"\/><input name=\"nonce\" value=\"7bff9f2568\" type=\"hidden\"\/><input name=\"_wpnonce\" value=\"ee095c8387\" type=\"hidden\"\/><input name=\"_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_proxy_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_view\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginView\" type=\"hidden\"\/><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\" width=\"400px\"><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Username:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"username\" value=\"\" type=\"text\"\/><\/td><\/tr><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Password:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"password\" value=\"\" type=\"password\"\/><\/td><\/tr><\/tbody><\/table><p class=\"wpf-table-placeholder submit\"><button class=\"wp_plugin_framework_ajax_button\" type=\"button\" style=\"background-color:#4D90FE;;color:#ffffff;;border:1px solid #3079ed;\" name=\"_event\" value=\"ButtonLogin\">Log in<\/button><\/p><\/td><td class=\"wpf-table-placeholder-input\"><\/td><\/tr><\/tbody><\/table><\/form><div id=\"ButtonStartRegister\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=register\">Register<\/a><\/div><div id=\"Link1\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=lostpassword\">Forgotten username or password?<\/a><\/div><div id=\"StatusBarFooter\"><\/div><\/div><\/div><div id=aru_remaining_content><\/div>","protected":false},"excerpt":{"rendered":"<p>\u7ec4\u4ef6 1 fetch\u548caxios axios\u4e0efetch\u5b9e\u73b0\u6570\u636e\u8bf7\u6c42 (1)fetch\uff08\u4e0d\u662f\u6240\u6709\u6d4f\u89c8\u5668\u90fd\u652f\u6301\uff0c [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,431],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/7748"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7748"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/7748\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}