{"id":361,"date":"2024-10-23T23:21:55","date_gmt":"2024-10-23T15:21:55","guid":{"rendered":"https:\/\/eve2333.top\/?p=361"},"modified":"2024-10-23T23:21:55","modified_gmt":"2024-10-23T15:21:55","slug":"vue-part-9","status":"publish","type":"post","link":"https:\/\/eve2333.top\/?p=361","title":{"rendered":"Vue part-9"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u52a8\u753b\u4e0e\u8fc7\u6e21<\/h1>\n\n\n\n<h4 class=\"wp-block-heading\">Test.vue<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;button @click=\"isShow = !isShow\"&gt;\n      \u663e\u793a\/\u9690\u85cf\n    &lt;\/button&gt;\n    &lt;transition name=\"hello\" appear&gt;\n      &lt;h1 v-show=\"isShow\"&gt;\u4f60\u597d\u554a!&lt;\/h1&gt;\n    &lt;\/transition&gt;\n    &lt;transition   appear&gt;\n      &lt;h1 v-show=\"isShow\"&gt;\u5c1a\u7845\u8c37&lt;\/h1&gt;\n    &lt;\/transition&gt;\n    &lt;!--\u6ca1\u6709name\u90fd\u548cv-enter-active\u5173\u8054--&gt;\n    \n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: \"Test\",\n  data(){\n    return {\n      isShow: true\n    }\n  }\n}\n&lt;\/script&gt;\n\n&lt;style scoped&gt;\n  h1{\n    background: orange;\n  }\n  .hello-enter-active{\n    animation: anim linear 0.5s;\n  }\n\n  .hello-leave-active{\n    animation: anim  linear 0.5s reverse;\n  }\n  @keyframes anim {\n    from {\n      transform: translateX(-100%);\n    }\n    to{\n      transform: translateX(0px);\n    }\n  }\n&lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Test2.vue<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;button @click=\"isShow = !isShow\"&gt;\n      \u663e\u793a\/\u9690\u85cf\n    &lt;\/button&gt;\n    &lt;!--transition \u53ea\u80fd\u5305\u88f9\u4e00\u4e2a\u5143\u7d20\u800ctransition-group\u53ef\u4ee5\u5305\u542b\u591a\u4e2a\u5143\u7d20--&gt;\n    &lt;transition-group name=\"hello\" appear&gt;\n      &lt;h1 v-show=\"isShow\" key=\"1\"&gt;\u4f60\u597d!&lt;\/h1&gt;\n      &lt;h1 v-show=\"isShow\" key=\"2\"&gt;Shanghai&lt;\/h1&gt;\n    &lt;\/transition-group&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: \"Test2\",\n  data(){\n    return {\n      isShow: true\n    }\n  }\n}\n&lt;\/script&gt;\n\n&lt;style scoped&gt;\n  h1{\n    background: orange;\n  }\n  \/*\u8fdb\u5165\u7684\u8d77\u70b9\uff0c\u79bb\u5f00\u7684\u7ec8\u70b9*\/\n  \/*\n     h1{\n    transition\uff1a0.5s linear;\n  }\n    .hello-enter{\n        transform: translateX(-100%);\n    }\n    .hello-enter{\n        transform: translateX(0);\n    }\n  *\/\n  .hello-enter,\n  .hello-leave-to{\n    transform: translateX(-100%);\n  }\n  \/*\u8fdb\u5165\u7684\u8fc7\u7a0b\uff0c\u79bb\u5f00\u7684\u8fc7\u7a0b*\/\n  .hello-enter-active,\n  .hello-leave-active{\n    transition: linear .5s;\n  }\n  \/*\u8fdb\u5165\u7684\u7ec8\u70b9,\u79bb\u5f00\u7684\u8d77\u70b9*\/\n  .hello-enter-to,\n  .hello-leave{\n    transform: translateX(0);\n  }\n\n&lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<p>&nbsp;\u4e00\u822c\u662f\u5f15\u5165\u7b2c\u4e09\u65b9\u52a8\u753b\u7248\uff0c\u6548\u679c\u4f1a\u5f88\u597d<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Test3.vue<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template>\n  &lt;div>\n    &lt;button @click=\"isShow = !isShow\">\n      \u663e\u793a\/\u9690\u85cf\n    &lt;\/button>\n    &lt;!--transition \u53ea\u80fd\u5305\u88f9\u4e00\u4e2a\u5143\u7d20\u800ctransition-group\u53ef\u4ee5\u5305\u542b\u591a\u4e2a\u5143\u7d20-->\n    &lt;transition-group\n        appear\n        name=\"animate__animated animate__bounce\"\n        enter-active-class=\"animate__swing\"\n        leave-active-class=\"animate__backOutUp\"\n    >\n      &lt;h1 v-show=\"isShow\" key=\"1\">\u4f60\u597d!&lt;\/h1>\n      &lt;h1 v-show=\"isShow\" key=\"2\">Shanghai&lt;\/h1>\n    &lt;\/transition-group>\n    &lt;!--\u4ece\u53f3\u4e0a\u89d2\u4e0b\u6765\u7684\u4e0d\u80fd\u5728h1\u7684\u6837\u5f0f\u91cc\u5199transition\u4e86\uff0c\u4f7f\u7528.hello-enter-active,.hello-leave-active\u5199 -->\n  &lt;\/div>\n&lt;\/template>\n\n&lt;script>\nimport 'animate.css';\nexport default {\n  name: \"Test3\",\n  data(){\n    return {\n      isShow: true\n    }\n  }\n}\n&lt;\/script>\n\n&lt;style scoped>\n  h1{\n    background: orange;\n  }\n&lt;\/style><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u96c6\u6210\u7b2c\u4e09\u65b9\u52a8\u753b<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Animate.css<\/h4>\n\n\n\n<p><a href=\"https:\/\/animate.style\/\" target=\"_blank\"  rel=\"nofollow\" >animate.style<\/a>\u6253\u4e0d\u5f00<\/p>\n\n\n\n<p>\u4e0b\u8f7d\u540e\u5f15\u5165<br> \u200b<img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"346\" class=\"wp-image-362\" style=\"width: 600px;\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696346-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231208.png\" alt=\"\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696346-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231208.png 960w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696346-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231208-300x173.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696346-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231208-768x443.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n\n\n\n<p>\u901a\u8fc7\u7ed9 transition-group\u5143\u7d20\u8bbe\u7f6e tag \u5c5e\u6027\uff0c\u6307\u5b9a transition-group \u6e32\u67d3\u4e3a\u6307\u5b9a\u7684\u5143\u7d20\uff0c\u5982\u679c\u4e0d\u6307\u5b9a tag \u5c5e\u6027\uff0c\u9ed8\u8ba4\u6e32\u67d3\u4e3a span \u6807\u7b7e<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u7f51\u7edc\u914d\u7f6e-\u914d\u7f6eajax\u4ee3\u7406<\/h1>\n\n\n\n<p>\u5728\u6587\u4ef6\u5939\u4e2d\u6709nodejs\uff0ccmd\u4e2dnode server1\uff0cserver1\u57285000\u7aef\u53e3\u3002\u540c\u6837\u7684\u65b9\u5f0f\u53ef\u4ee55001\u7aef\u53e3<\/p>\n\n\n\n<p>\u5b66\u5b8cajax promise \u548caxios<\/p>\n\n\n\n<p>1.xhr<br>new XMLHttpRequest() xhr.open() xhr.send()&nbsp;<br>\u4e0d\u5e38\u7528<\/p>\n\n\n\n<p>2.jQuery 80-20\u7684\u6bd4\u4f8b\uff0cget post<\/p>\n\n\n\n<p>3.axios \u597d\u597d\u597d\u5f88\u597d\u5f88\u597d\u597d<\/p>\n\n\n\n<p>4.fetch\uff0caxios\u53ea\u9700\u8981\u901a\u8fc7\u4e00\u6b21\u8bf7\u6c42 fetch\u505a\u4efb\u4f55\u4e8b\u60c5\u90fd\u9700\u8981\u8ba9\u4f60\u901a\u8fc7\u4e24\u6b21\uff0c\u4f46\u517c\u5bb9\u6027\u5783\u573e<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6b65\u9aa4<\/h2>\n\n\n\n<p>npm i axios<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import axios from 'axios'<\/code><\/pre>\n\n\n\n<p>\u534f\u8bae \u57df\u540d \u7aef\u53e3\u53f7\uff1a\u56e0\u4e3a5000\u548c8080\uff0c8080\u7aef\u53e3\u8bbf\u95ee5000\u7aef\u53e3\uff0c\u8de8\u57df\u4e86\uff0c\u8fd9\u4e2a\u4e0d\u5bf9\uff0c\u670d\u52a1\u5668\u6ca1\u6709\u628a\u6570\u636e\u7ed9\u6d4f\u89c8\u5668\uff0c\u800c\u662f\u4e00\u5f00\u59cb\u6709\u4e00\u4e2a\u57df\u68c0\u6d4b\uff0c\u518d\u90a3\u91cc\u5c31\u6ca1\u901a\u8fc7<\/p>\n\n\n\n<p>jsonp\u89e3\u51b3\u8de8\u57df\uff0c\u4f46\u662f\u4e0d\u7528\uff0c\u56e0\u4e3a\u5fc5\u987b\u524d\u540e\u7aef\u4e00\u8d77\u914d\u7f6e<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u89e3\u51b3\u65b9\u6cd5\u4e00\uff1a\u4ee3\u7406\u670d\u52a1\u5668<\/h2>\n\n\n\n<p>1.\u914d\u7f6e\u7c7b\u65b9\u5f0f(\u5b9e\u73b0WebMvcConfigurer) &nbsp;2.\u4f7f\u7528@CrossOrigin\u6ce8\u89e3 &nbsp;3.\u4f7f\u7528nginx\u53cd\u5411\u4ee3\u7406\u89e3\u51b3\u8de8\u57df &nbsp;4.Vue\u4e2d\u914d\u7f6ecli\u4ee3\u7406\u670d\u52a1\u5668<\/p>\n\n\n\n<p><a href=\"https:\/\/cli.vuejs.org\/zh\/config\/#devserver-proxy\" target=\"_blank\"  rel=\"nofollow\" >\u914d\u7f6e\u53c2\u8003 | Vue CLI (vuejs.org)<\/a><\/p>\n\n\n\n<p>\u6d4f\u89c8\u5668\u662f\u8bbf\u95ee8080\u7aef\u53e3\uff0c\u800c\u4e0d\u662f\u5360\u7528\u7aef\u53e3\uff0c8080\u4e0a\u53ea\u6709\u4e00\u4e2a\u4ee3\u7406\u670d\u52a1\u5668\u5728\u76d1\u542c\u3002\u6211\u4eec\u6253\u5f005000\u670d\u52a1\u5668<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;button @click=\"getStudents\"&gt;\u83b7\u53d6\u5b66\u751f\u4fe1\u606f&lt;\/button&gt;\n    &lt;button @click=\"getCars\"&gt;\u83b7\u53d6\u6c7d\u8f66\u4fe1\u606f&lt;\/button&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport axios from 'axios';\nexport default {\n  name: \"App\",\n  methods:{\n     getStudents(){\n       axios.get('\/api\/students') \/\/\u5176\u5b9e\u8fd9\u91cc\u5c31\u662f\u8bf7\u6c42http:\/\/localhost:8080\/students\u53ea\u4e0d\u8fc7\u628a\u8bf7\u6c42\u8f6c\u79fb\u7ed9\u4e86\u7aef\u53e35001\n       .then(res =&gt; console.log(res.data))\n       .catch(e =&gt; console.log(`msg: ${e.message}, stack: ${e.stack}`));\n    },\n    getCars(){\n      axios.get('\/demo\/cars') \/\/\u540c\u7406\n          .then(res =&gt; console.log(res.data))\n          .catch(e =&gt; console.log(`msg: ${e.message}, stack: ${e.stack}`));\n    }\n  }\n}\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>&nbsp;\u6240\u5904\u7684\u4f4d\u7f6e\u662f8080\uff0c\u4ee3\u7406\u670d\u52a1\u5668\u662f8080\uff0c\u5b58\u50a8\u7684\u6570\u636e\u57285000\u3002\u4ec0\u4e48\u65f6\u5019\u4e0d\u628a\u8bf7\u6c42\u8f6c\u53d1\u7ed98080\u5427\uff1f\u5f53\u4f60\u8bf7\u6c42\u7684\u8d44\u6e908080\u672c\u8eab\u5c31\u6709\uff0c\u5c31\u4e0d\u4f1a\u628a\u8bf7\u6c42\u8f6c\u53d15000<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u89e3\u51b3\u65b9\u6cd5\u4e8c\uff1a\u591a\u91cd\u4ee3\u7406<\/h2>\n\n\n\n<p>\u56e0\u4e3a\u53ea\u80fd\u53ea\u80fd\u914d\u7f6e\u4e00\u4e2a\u4ee3\u7406\uff0c\u4e00\u4e2a\u8bf7\u6c42\uff0c\u65e0\u6cd5\u4f7f\u7528\u7b2c\u4e8c\u4e2a\u670d\u52a1\u5668\uff1b\u5176\u6b21\u662f\u65e0\u6cd5\u7075\u6d3b\u63a7\u5236<\/p>\n\n\n\n<p><strong>vue.config.js<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/common js \u66b4\u9732\nmodule.exports = {\n    pages: {\n        index: {\n            \/\/\u5165\u53e3\n            entry: 'src\/main.js',\n        },\n    },\n    \/\/\u5173\u6389\u9ed8\u8ba4\u7684\u8bed\u6cd5\u68c0\u67e5\n    lintOnSave: false,\n    \/\/ \/\/\u5f00\u542f\u4ee3\u7406\u670d\u52a1\u5668(\u65b9\u5f0f\u4e00)\n    \/\/ devServer:{\n    \/\/     proxy: 'http:\/\/localhost:5001', \/\/\u5c06\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u7aef\u53e3\u53f75001\uff0c\u6ce8\u610f\u8fd9\u91cc\u53ea\u80fd\u914d\u7f6e\u5355\u4e2a\u4ee3\u7406\uff0c\u4e0d\u80fd\u914d\u7f6e\u591a\u4e2a\u4ee3\u7406\n    \/\/ }\n    \/\/\u5f00\u542f\u4ee3\u7406\u670d\u52a1\u5668(\u65b9\u5f0f\u4e8c) \u591a\u4e2a\u4ee3\u7406\n    devServer: {\n        proxy: {\n            \/\/\u5f53\u8bf7\u6c42\u7684\u524d\u7f00\u662fapi\uff0c\u76f4\u63a5\u8f6c\u53d1\u8bf7\u6c42\u5230\u670d\u52a1\u56685001\u7aef\u53e3\n            '\/api': {\n                target: 'http:\/\/localhost:5001',\n                ws: true, \/\/\u7528\u4e8e\u652f\u6301websocket\n                changeOrigin: true, \/\/\u7528\u4e8e\u63a7\u5236\u8bf7\u6c42\u5934\u4e2dhost\u7684\u503c\n                pathRewrite:{\n                    \/\/\u628a\u8bf7\u6c42\u4e2d\u542b\u6709\u7684api\u66ff\u6362\u6210\u7a7a\u5b57\u7b26\u4e32\n                    '^\/api': '',\n                }\n            },\n            '\/demo': {\n                target: 'http:\/\/localhost:5002',\n                \/\/\u4e0d\u5199 ws\u548cchangeOrigin\u9ed8\u8ba4\u4e3atrue\n                pathRewrite: {\n                    '^\/demo':'',\n                }\n            }\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\u5f15\u5165Vue\nimport Vue from \"vue\";\n\/\/\u5f15\u5165App\nimport App from '.\/App';\n\n\/\/\u5173\u95edVue\u7684\u751f\u4ea7\u63d0\u793a\nVue.config.productionTip = false;\n\n\nnew Vue({\n    el: '#app',\n    render: h =&gt; h(App),\n});<\/code><\/pre>\n\n\n\n<p><strong>App.vue<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;button @click=\"getStudents\"&gt;\u83b7\u53d6\u5b66\u751f\u4fe1\u606f&lt;\/button&gt;\n    &lt;button @click=\"getCars\"&gt;\u83b7\u53d6\u6c7d\u8f66\u4fe1\u606f&lt;\/button&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport axios from 'axios';\nexport default {\n  name: \"App\",\n  methods:{\n     getStudents(){\n       axios.get('\/api\/students') \/\/\u5176\u5b9e\u8fd9\u91cc\u5c31\u662f\u8bf7\u6c42http:\/\/localhost:8080\/students\u53ea\u4e0d\u8fc7\u628a\u8bf7\u6c42\u8f6c\u79fb\u7ed9\u4e86\u7aef\u53e35001\n       .then(res =&gt; console.log(res.data))\n       .catch(e =&gt; console.log(`msg: ${e.message}, stack: ${e.stack}`));\n    },\n    getCars(){\n      axios.get('\/demo\/cars') \/\/\u540c\u7406\n          .then(res =&gt; console.log(res.data))\n          .catch(e =&gt; console.log(`msg: ${e.message}, stack: ${e.stack}`));\n    }\n  }\n}\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>&nbsp;\u603b\u7ed3\u4e00\u4e0b\uff0c\u4e24\u79cd\u4ee3\u7406\u65b9\u5f0f\uff0c\u524d\u7aef\u5199\u4ee3\u7801\u5e38\u7528DevServer\u6b63\u5411\u4ee3\u7406\uff0c\u4ee3\u7406\u6d4f\u89c8\u5668\uff0c\u4ec5\u9650\u5f00\u53d1\u9636\u6bb5\uff0c\u9879\u76ee\u4e0a\u7ebf\u540e\uff0c\u4f7f\u7528Nginx\u53cd\u5411\u4ee3\u7406\uff0c\u4ee3\u7406\u670d\u52a1\u5668\uff0c\u540e\u7aef\u4eba\u5458\u7f16\u5199<\/p>\n\n\n\n<p><a href=\"https:\/\/www.bilibili.com\/video\/BV1Zy4y1K7SH\/?p=97&amp;spm_id_from=pageDriver&amp;vd_source=b31958e33027799323b8b7d77ae181d4\" target=\"_blank\"  rel=\"nofollow\" >097_\u5c1a\u7845\u8c37Vue\u6280\u672f_\u914d\u7f6e\u4ee3\u7406_\u65b9\u5f0f\u4e8c_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a>\u65ad\u4e86\u4e00\u6b21\u672a\u66fe\u542c\u61c2<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">GitHub\u7528\u6237\u641c\u7d22\u6848\u4f8b<\/h1>\n\n\n\n<p>\u200b<img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"386\" class=\"wp-image-363\" style=\"width: 600px;\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696597-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231613.png\" alt=\"\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696597-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231613.png 988w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696597-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231613-300x193.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696597-\u5c4f\u5e55\u622a\u56fe-2024-10-23-231613-768x494.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u9759\u6001\u754c\u9762<\/h3>\n\n\n\n<h5 class=\"wp-block-heading\">App.vue<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;div class=\"container\"&gt;\n      &lt;Search\/&gt;\n      &lt;List\/&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport Search from \"@\/components\/Search\";\nimport List from \"@\/components\/List\";\nexport default {\n  name: \"App\",\n  components:{\n    Search,\n    List\n  }\n}\n&lt;\/script&gt;\n&lt;style lang=\"css\"&gt;\n&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">List.vue<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div class=\"row\"&gt;\n    &lt;!--\u5c55\u793a\u7528\u6237\u5217\u8868--&gt;\n    &lt;div v-show=\"info.users.length\" class=\"card\" v-for=\"user in info.users\" :key=\"user.login\"&gt;\n      &lt;a :href=\"user.html_url\" target=\"_blank\"&gt;\n        &lt;img :src=\"user.avatar_url\" style='width: 100px'\/&gt;\n      &lt;\/a&gt;\n      &lt;p class=\"card-text\"&gt;{{ user.login }}&lt;\/p&gt;\n    &lt;\/div&gt;\n    &lt;!---\u6b22\u8fce\u8bcd--&gt;\n    &lt;h1 v-show=\"info.isFirst\"&gt;Welcome!&lt;\/h1&gt;\n    &lt;!--\u52a0\u8f7d\u4e2d---&gt;\n    &lt;h1 v-show=\"info.isLoading\"&gt;Loading...&lt;\/h1&gt;\n    &lt;!---\u9519\u8bef\u4fe1\u606f--&gt;\n    &lt;h1 v-show=\"info.errMsg\"&gt;Something has been wrong, errorMessage: {{ info.errMsg }}&lt;\/h1&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: \"List\",\n  data(){\n    return {\n      info : {\n        isFirst: true, \/\/\u662f\u5426\u4e3a\u7b2c\u4e00\u6b21\u4f7f\u7528\n        users:&#91;],\n        isLoading: false, \/\/\u662f\u5426\u5728\u52a0\u8f7d\u4e2d\n        errMsg: '',\n      }\n    }\n  },\n  mounted() {\n    this.$bus.$on('updateListData', (dataObj) =&gt; {\n      \/\/ console.log(`\u6211\u662flist\uff0c\u63a5\u5230\u4e86\u6570\u636edata:`, users);\n      \/\/ this.isFirst = isFirst;\n      \/\/ this.isLoading = isLoading;\n      \/\/ this.errMsg = errMsg;\n      \/\/ this.users = users;\n      this.info = { ...this.info, ...dataObj };\n    });\n  }\n\n}\n&lt;\/script&gt;\n\n&lt;style scoped&gt;\n.album {\n  min-height: 50rem; \/* Can be removed; just added for demo purposes *\/\n  padding-top: 3rem;\n  padding-bottom: 3rem;\n  background-color: #f7f7f7;\n}\n\n.card {\n  float: left;\n  width: 33.333%;\n  padding: .75rem;\n  margin-bottom: 2rem;\n  border: 1px solid #efefef;\n  text-align: center;\n}\n\n.card &gt; img {\n  margin-bottom: .75rem;\n  border-radius: 100px;\n}\n\n.card-text {\n  font-size: 85%;\n}\n&lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Search.vue<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template>\n  &lt;section class=\"jumbotron\">\n    &lt;h3 class=\"jumbotron-heading\">Search Github Users&lt;\/h3>\n    &lt;div>\n      &lt;input type=\"text\" placeholder=\"enter the name you search\" v-model=\"keyword\"\/>&amp;nbsp;\n      &lt;button @click=\"searchUsers\">Search&lt;\/button>\n    &lt;\/div>\n  &lt;\/section>\n&lt;\/template>\n\n&lt;script>\nimport axios from \"axios\";\nexport default {\n  name: \"Search\",\n  data() {\n    return {\n      keyword: '',\n    }\n  },\n  methods:{\n    \/\/\u4f7f\u7528\u5168\u5c40\u4e8b\u4ef6\u603b\u7ebf\u5728\u7ec4\u4ef6\u95f4\u4f20\u9012\u6570\u636e\n    searchUsers(){\n      this.$bus.$emit('updateListData', {\n        isFirst: false,\n        isLoading: true,\n        errMsg: '',\n        users: &#91;]\n      })\n      axios.get(`https:\/\/api.github.com\/search\/users?q=${this.keyword}`)\n      .then(res => {\n        console.log(res.data.items);\n        this.$bus.$emit(\"updateListData\", {\n          isLoading: false,\n          errMsg: '',\n          users: res.data.items\n        });\n      })\n      .catch(e => {\n        console.log(`\u8bf7\u6c42\u5931\u8d25:${e.message}`)\n        this.$bus.$emit(\"updateListData\", {\n          isLoading: false,\n          errMsg: e.message,\n          users: &#91;]\n        });\n      });\n    }\n  }\n}\n&lt;\/script>\n\n&lt;style scoped>\n\n&lt;\/style><\/code><\/pre>\n\n\n\n<p>\u53ea\u8981import\u7528\u4e86bootstarp\u8fd9\u79cd\u5916\u90e8\u63d2\u53e3\uff0cvue\u811a\u624b\u67b6\u4f1a\u8fdb\u884c\u4e25\u683c\u7684\u68c0\u67e5\uff0c\u53ea\u8981\u4e0d\u5b58\u5728\u5c31\u62a5\u9519<\/p>\n\n\n\n<p>\u56fe\u7247\u52a0\u8f7d\u4e0d\u51fa\u6765\u7684\uff0c\u662f\u56e0\u4e3a\u8001\u5e08\u7528\u7684\u7f51\u7edc\u8def\u5f84\uff0c\u539f\u8def\u5f84\u6362\u4e86\uff0c\u628a\/image\u53bb\u6389\u5c31\u884c\uff0c\u56fe\u7247\u94fe\u63a5cn\u524d\u52a0\u4e0av2.\u5c31\u884c\u4e86\uff0cscoped\u662f\u6837\u5f0f\u53ea\u5728\u5f53\u524d\u7ec4\u4ef6\u751f\u6548<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u52a8\u6001\u7ec4\u4ef6<\/h3>\n\n\n\n<p>\u4e3b\u8981\u662fdata\uff08\uff09{}\u4ee5\u53ca5\uff0c6\u884c\u7684v-model\u548c@click=\"searchUser\"\uff0cmethods\u7684axios\u540e\u7aef\u6570\u636e\u4f20\u9012\uff0c<s>\u6a21\u677f\u5b57\u7b26\u4e32\u8bf7\u7528ESC\u4e0b\u65b9\u7684\u82f1\u6587\u987f\u53f7\u5305\u88f9\u5b57\u7b26\u4e32\uff0c\u5426\u5219\u4e0d\u751f\u6548\uff0c\u8fd9\u4e0d\u5c41\u8bdd\u5417<\/s> \u200b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1032\" height=\"739\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696864-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232038.png\" alt=\"\" class=\"wp-image-364\" style=\"width:603px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696864-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232038.png 1032w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696864-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232038-300x215.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696864-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232038-1024x733.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696864-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232038-768x550.png 768w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"520\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696876-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232043-1024x520.png\" alt=\"\" class=\"wp-image-365\" style=\"width:620px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696876-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232043-1024x520.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696876-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232043-300x152.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696876-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232043-768x390.png 768w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729696876-\u5c4f\u5e55\u622a\u56fe-2024-10-23-232043.png 1032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u6211\u4eec\u7528\u5230\u4e09\u4e2a\u8fd4\u56de\u503c\uff0cavatar_url&nbsp; &nbsp; &nbsp;,html_url,&nbsp; &nbsp; &nbsp; &nbsp;login\u5206\u522b\u662f\u5934\u50cf\u5730\u5740\uff0c\u4e2a\u4eba\u4e3b\u9875\uff0c\u7528\u6237\u540d\u5b57<\/p>\n\n\n\n<p>&nbsp;\u56e0\u6b64\u4f7f\u7528v-for\u904d\u5386\u751f\u6210\u56fe\u6807\uff0c\u4e0d\u518d\u591a\u4e2alist<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;div class=\"row\"&gt;\n        &lt;div class=\"card\" v-for=\"user in users\" :key=\"user.login\"&gt;\n            &lt;a :href=\"user.html_url\" target=\"_blank\"&gt;\n                &lt;img :src=\"user.avatar_url\" style='width: 100px' \/&gt;\n            &lt;\/a&gt;\n            &lt;p class=\"card-text\"&gt;{{ user.login }}&lt;\/p&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n    name: 'List',\n    data() {\n        return {\n            isFirst:true,\n            isLoading:false,\n            errMsg:'',\n            users: &#91;]\n        }\n    },\n    mounted() {\n        this.$bus.$on('getUsers', (users) =&gt; {\n            console.log('\u6211\u662f List \u7ec4\u4ef6\uff0c\u6536\u5230\u6570\u636e\uff1a', users)\n            this.users = users\n        })\n    },\n}\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>\u8fd9\u65f6\u6b22\u8fce\u4f7f\u7528\u8fd8\u5728\u5448\u73b0\uff0c\u56e0\u6b64\u70b9\u51fb\u641c\u7d22\u540eisFirst\u5c31false\uff0cisLoading\u5c31true\uff0c<\/p>\n\n\n\n<p>\u5b8c\u5584\u90e8\u5206\uff01\uff01\uff01\uff01\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\u5b8c\u86cb\u4e86\uff01 \u200b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u52a8\u753b\u4e0e\u8fc7\u6e21 Test.vue Test2.vue &nbsp;\u4e00\u822c\u662f\u5f15\u5165\u7b2c\u4e09\u65b9\u52a8\u753b\u7248\uff0c\u6548\u679c\u4f1a\u5f88\u597d Test3.vue \u96c6\u6210\u7b2c\u4e09\u65b9\u52a8 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[2],"tags":[12,11,10],"class_list":["post-361","post","type-post","status-publish","format-standard","hentry","category-2","tag-js","tag-vue","tag-10"],"_links":{"self":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=361"}],"version-history":[{"count":0,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/361\/revisions"}],"wp:attachment":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}