{"id":48241,"date":"2023-10-02T17:02:44","date_gmt":"2024-03-05T00:44:13","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/"},"modified":"2024-05-04T02:32:03","modified_gmt":"2024-05-03T18:32:03","slug":"%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/","title":{"rendered":"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f"},"content":{"rendered":"<h1>SPA -&gt; GraphQL -&gt; \u65e0\u670d\u52a1\u5668\u540e\u7aef<\/h1>\n<p>\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u4ece\u5934\u5f00\u59cb\u8fdb\u884c\u73b0\u4ee3\u5316\u7684\u524d\u7aef\u5f00\u53d1\u548c\u65e0\u670d\u52a1\u5668\u540e\u7aef\u6784\u5efa\u3002\u672c\u6b21\u5c06\u4eceVue.js\u521b\u5efa\u7684\u5355\u9875\u9762\u5e94\u7528\u5411AppSync\u53d1\u9001\u57fa\u4e8eGraphQL\u7684\u8bf7\u6c42\uff0c\u5e76\u786e\u8ba4\u901a\u8fc7\u540e\u7aef\u7684DynamoDB\u8fdb\u884c\u6570\u636e\u7684\u5199\u5165\u548c\u8bfb\u53d6\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/2-0.png\" alt=\"Untitled Diagram (1).png\" \/><\/div>\n<p>\u901a\u8fc7\u4f7f\u7528Amplify Framework\uff0c\u60a8\u53ef\u4ee5\u4ece\u547d\u4ee4\u884c\u521b\u5efaAWS\u540e\u7aef\u8d44\u6e90\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/4-0.png\" alt=\"Untitled Diagram-Page-2.png\" \/><\/div>\n<h2>\u5728\u620f\u5267\u4e2d\u4eae\u76f8\u7684\u89d2\u8272<\/h2>\n<h3>Vue.js \u662f\u4e00\u6b3e\u6d41\u884c\u7684JavaScript \u6846\u67b6\u3002<\/h3>\n<p>\u8fd9\u4e2a\u524d\u7aef\u6846\u67b6\u4ece\u5c0f\u578b\u5e94\u7528\u5230\u5927\u89c4\u6a21\u5e94\u7528\u90fd\u80fd\u5f88\u597d\u5730\u652f\u6301\uff0c\u6211\u4e2a\u4eba\u4e5f\u7ecf\u5e38\u4f7f\u7528\u5b83\u3002\u672c\u6587\u7ae0\u662f\u4f5c\u4e3aVue.js AdventCalendar\u7684\u7b2c\u5341\u5929\u53d1\u5e03\u7684\u3002<\/p>\n<h3>Buefy\u662f\u4e00\u4e2a\u9009\u9879\u3002<\/h3>\n<p>Buefy\u662f\u4e00\u4e2a\u5728Vue\u4e2d\u4f7fBulma UI\u5e93\u66f4\u6613\u7528\u7684\u5de5\u5177\u3002\u901a\u5e38\u6211\u4f1a\u4f7f\u7528ElementUI\uff0c\u4f46\u8fd9\u6b21\u6211\u5c1d\u8bd5\u4f7f\u7528Buefy\u3002\u5176\u7279\u70b9\u662f100%\u54cd\u5e94\u5f0f\u3002<\/p>\n<h3>\u589e\u5f3a\u6846\u67b6<\/h3>\n<p>Amplify JavaScript\u4e3aVue\u63d0\u4f9b\u4e86\u5f00\u53d1\u4e91\u539f\u751fWeb\u5e94\u7528\u7a0b\u5e8f\u7684\u4fbf\u5229\u5e93\u3002\u5b83\u652f\u6301Angular\u3001React\u548cVue\u4e09\u4e2a\u6846\u67b6\u3002\u4f60\u53ef\u4ee5\u5728\u5b98\u65b9\u7f51\u9875\u4e0a\u627e\u5230Vue.js\u7684\u4f7f\u7528\u8bf4\u660e\u3002<\/p>\n<h3>\u653e\u5927\u53f0<\/h3>\n<p>\u5728AWS\u7684\u6d3b\u52a8re:Invent2018\u4e0a\uff0c\u65b0\u589e\u4e86\u4e00\u4e2a\u529f\u80fd\uff0c\u53ef\u4ee5\u8f7b\u677e\u5730\u51c6\u5907\u516c\u5f00Web\u5e94\u7528\u7684\u73af\u5883\u3002\u9664\u4e86CI\/CD\u529f\u80fd\u5916\uff0c\u8fd8\u63d0\u4f9bCDN\u529f\u80fd\u3002\u6211\u4eec\u5c06\u5728\u672c\u6587\u4e2d\u8be6\u7ec6\u4ecb\u7ecd\u3002<\/p>\n<h3>AppSync \u540c\u6b65\u5e94\u7528<\/h3>\n<p>\u8fd9\u662f\u4e00\u4e2aAWS\u7684GraphQL\u6258\u7ba1\u670d\u52a1\u3002\u5b83\u53ef\u4ee5\u63a5\u6536Vue.js\u53d1\u6765\u7684GraphQL\u8bf7\u6c42\u3002\u4ecb\u7ecdGraphQL (AWS AppSync)\u3002<\/p>\n<h3>DynamoDB\uff1a\u4e9a\u9a6c\u900a\u5f00\u53d1\u7684\u4e00\u79cd\u53ef\u6269\u5c55\u7684\u4e91\u6570\u636e\u5e93\u670d\u52a1\u3002<\/h3>\n<p>\u5728AWS\u7684NoSQL\u6570\u636e\u5e93\u670d\u52a1\u4e2d\uff0c\u6211\u4eec\u5c06\u5176\u653e\u7f6e\u5728AppSync\u7684\u80cc\u540e\uff0c\u7528\u4f5c\u6570\u636e\u7684\u5b58\u50a8\u4f4d\u7f6e\u3002<br \/>\n[\u5b98\u65b9]DynamoDB\u662f\u4ec0\u4e48\uff1f<\/p>\n<h3>GitHub &#8211; GitHub\u4ed3\u5e93<\/h3>\n<p>\u672c\u6587\u4e2d\uff0c\u5c06\u7ba1\u7406Vue.js\u7684\u6e90\u4ee3\u7801\u3002\u5f53\u6e90\u4ee3\u7801\u88ab\u63a8\u9001\u5230GitHub\u7684\u4e3b\u5206\u652f\u65f6\uff0c\u89e6\u53d1Web\u5e94\u7528\u7a0b\u5e8f\u7684\u53d1\u5e03\u3002\u672c\u6587\u4e0d\u6d89\u53caGitHub\u7684\u5904\u7406\u3002<\/p>\n<h1>\u51c6\u5907<\/h1>\n<h2>Apmlify CLI\u7684\u5b89\u88c5\uff080.5\u5206\u949f\uff09<\/h2>\n<p>\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5 Amplify CLI\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>npm <span class=\"nb\">install<\/span> <span class=\"nt\">-g<\/span> @aws-amplify\/cli\r\n<\/code><\/pre>\n<p>\u53ea\u8981\u770b\u5230\u300cAWS AMPLIFY\u300d\u663e\u793a\u51fa\u6765\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>amplify\r\n\r\n  \u2588\u2588\u2588\u2588\u2588\u2557  \u2588\u2588\u2557    \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557      \u2588\u2588\u2588\u2588\u2588\u2557  \u2588\u2588\u2588\u2557   \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557  \u2588\u2588\u2557      \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557   \u2588\u2588\u2557 \r\n \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551    \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d     \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551      \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d \u255a\u2588\u2588\u2557 \u2588\u2588\u2554\u255d \r\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2551      \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557    \u255a\u2588\u2588\u2588\u2588\u2554\u255d  \r\n \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255a\u2550\u2550\u2550\u2550\u2588\u2588\u2551     \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u255a\u2588\u2588\u2554\u255d\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u255d  \u2588\u2588\u2551      \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255d     \u255a\u2588\u2588\u2554\u255d   \r\n \u2588\u2588\u2551  \u2588\u2588\u2551 \u255a\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551     \u2588\u2588\u2551  \u2588\u2588\u2551 \u2588\u2588\u2551 \u255a\u2550\u255d \u2588\u2588\u2551 \u2588\u2588\u2551      \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551         \u2588\u2588\u2551    \r\n \u255a\u2550\u255d  \u255a\u2550\u255d  \u255a\u2550\u2550\u255d\u255a\u2550\u2550\u255d  \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d     \u255a\u2550\u255d  \u255a\u2550\u255d \u255a\u2550\u255d     \u255a\u2550\u255d \u255a\u2550\u255d      \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d         \u255a\u2550\u255d    \r\n\r\namplify &lt;<span class=\"nb\">command<\/span><span class=\"o\">&gt;<\/span> &lt;subcommand&gt;\r\n\r\n...\r\n<\/code><\/pre>\n<h2>\u521b\u5efaVue\u9879\u76ee\uff081\u5206\u949f\uff09<\/h2>\n<p>\u4f7f\u7528Vue CLI\u521b\u5efaVue\u9879\u76ee\u3002\u5982\u679c\u672a\u5b89\u88c5Vue CLI\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>npm <span class=\"nb\">install<\/span> <span class=\"nt\">-g<\/span> @vue\/cli\r\n<\/code><\/pre>\n<p>\u203b[\u53c2\u8003] Vue.js\u9879\u76ee\u521b\u5efa\u6307\u5357<br \/>\n\u4f7f\u7528SpringBoot+Vue.js+ElementUI+Firebase\u521b\u5efa\u4e3b\u6570\u636e\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\u5165\u95e8#\u521b\u5efaVue\u9879\u76ee<\/p>\n<p>\u8ba9\u6211\u4eec\u4f7f\u7528&#8221;vue create&#8221;\u6765\u521b\u5efa\u9879\u76ee\u3002\u8fd9\u6b21\u6211\u4eec\u5c06\u628a\u9879\u76ee\u547d\u540d\u4e3a\u767d\u7f8a\u5ea7\u7684&#8221;Aries&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>vue create aries\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728 http:\/\/localhost:8080\/ \u4e0a\u663e\u793a\u4e86\u793a\u4f8b\u753b\u9762\uff0c\u5219\u8868\u793a\u6210\u529f\u3002<\/p>\n<h2>\u5b89\u88c5\u56fe\u4e66\u9986 (0.5\u5206\u949f)<\/h2>\n<p>\u8bf7\u5b89\u88c5\u5fc5\u8981\u7684\u6a21\u5757\u3002\u7531\u4e8e\u6b64\u5e94\u7528\u7a0b\u5e8f\u53ea\u9650\u5b9a\u4e86\u529f\u80fd\uff0c\u6240\u4ee5\u9664\u4e86amplify\u7cfb\u5217\u548cUI\u5e93buefy\u5916\uff0c\u4e0d\u9700\u8981\u5176\u4ed6\u7279\u6b8a\u6a21\u5757\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>npm i <span class=\"nt\">--save<\/span> aws-amplify\r\n<span class=\"nv\">$ <\/span>npm i <span class=\"nt\">--save<\/span> aws-amplify-vue\r\n<span class=\"nv\">$ <\/span>npm i <span class=\"nt\">--save<\/span> buefy\r\n<\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u5c06 vue-create \u521b\u5efa\u7684\u6587\u4ef6\u63a8\u9001\u5230\u4e2a\u4eba\u7684 GitHub\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>git add <span class=\"nb\">.<\/span>\r\n<span class=\"nv\">$ <\/span>git commit <span class=\"nt\">-m<\/span> <span class=\"s2\">\"first commit\"<\/span>\r\n<span class=\"nv\">$ <\/span>git push origin master\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u7279\u522b\u7684\u95ee\u9898\u7684\u8bdd\uff0c\u5230\u6b64\u4e3a\u6b62\u51c6\u5907\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\u4e86\u3002\u603b\u4f53\u800c\u8a00\uff0c\u53ea\u9700\u8981\u5927\u7ea62\u5206\u949f\u5c31\u80fd\u7ed3\u675f\u3002<\/p>\n<h1>\u6784\u5efa\u540e\u7aef<\/h1>\n<h2>\u4f7f\u7528Amplify\u6846\u67b6\u4e3aAWS\u8d44\u6e90\u505a\u51c6\u5907\uff083\u5206\u949f\uff09\u3002<\/h2>\n<p>\u4ece\u8fd9\u91cc\u5f00\u59cb\uff0c\u6211\u4eec\u5c06\u4f7f\u7528AWS\u6765\u6784\u5efa\u4f7f\u7528amplify\u7684\u8d44\u6e90\u3002\u9996\u5148\uff0c\u4e3a\u4e86\u8fdb\u884c\u521d\u59cb\u8bbe\u7f6e\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ amplify init\r\n\r\n? Choose your default editor: Visual Studio Code\r\n? Choose the type of app that you're building javascript\r\nPlease tell us about your project\r\n? What javascript framework are you using vue\r\n? Source Directory Path:  src\r\n? Distribution Directory Path: dist\r\n? Build Command:  npm run-script build\r\n? Start Command: npm run-script serve\r\n<\/code><\/pre>\n<p>\u5728\u9009\u62e9\u65f6\u6709\u51e0\u4e2a\u662f\u201c\u662f\u201d\u6216\u201c\u5426\u201d\u7684\u9009\u9879\uff0c\u4f46\u57fa\u672c\u4e0a\u9ed8\u8ba4\u8bbe\u7f6e\u662f\u6ca1\u6709\u95ee\u9898\u7684\u3002\u8bed\u8a00\u548c\u6846\u67b6\u4e00\u5b9a\u9009\u62e9JavaScript\/Vue\u3002<\/p>\n<p>\u5982\u679c\u60a8\u8fd8\u6ca1\u6709\u5b8c\u6210AWS-CLI\u7684\u914d\u7f6e\uff0c\u60a8\u9700\u8981\u901a\u8fc7\u547d\u4ee4\u884c\u8fdb\u884c\u533a\u57df\u548c\u8bbf\u95ee\u5bc6\u94a5\u7684\u8bbe\u7f6e\u3002\u4ee5\u4e0b\u4e5f\u6709\u6b65\u9aa4\u8bf4\u660e\uff0c\u8bf7\u7ee7\u7eed\u8fdb\u884c\u914d\u7f6e\u3002<\/p>\n<p>\u653e\u5927JavaScript # \u653e\u5927\u914d\u7f6e<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u521b\u5efaAPI\u7684\u7ec8\u7aef\u70b9\u3002\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ amplify add api\r\n\r\n? Please select from one of the below mentioned services GraphQL\r\n? Provide API name: aries\r\n? Choose an authorization type for the API API key\r\n? Do you have an annotated GraphQL schema? No\r\n? Do you want a guided schema creation? Yes\r\n? What best describes your project: Single object with fields (e.g., \u201cTodo\u201d with ID, name, description)\r\n? Do you want to edit the schema now? No\r\n<\/code><\/pre>\n<p>\u8fd9\u6b21\u6211\u4eec\u5c06\u4f7f\u7528GraphQL\u4f5c\u4e3a\u57fa\u7840\u8fdb\u884c\u521b\u5efa\u3002\u4e3a\u4e86\u7b80\u5316\u6388\u6743\u7c7b\u578b\uff0c\u6211\u4eec\u9009\u62e9API KEY\u3002\u6a21\u5f0f\u4e5f\u4e0d\u8fdb\u884c\u7f16\u8f91\uff0c\u6211\u4eec\u5c06\u76f4\u63a5\u4f7f\u7528\u9ed8\u8ba4\u7684Todo\u3002<\/p>\n<p>\u6700\u540e\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efaAWS\u8d44\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code>$ amplify push\r\n\r\n| Category | Resource name | Operation | Provider plugin   |\r\n| -------- | ------------- | --------- | ----------------- |\r\n| Api      | aries         | Create    | awscloudformation |\r\n\r\n? Do you want to generate code for your newly created GraphQL API Yes\r\n? Choose the code generation language target javascript\r\n? Enter the file name pattern of graphql queries, mutations and subscriptions src\/graphql\/**\/*.js\r\n? Do you want to generate\/update all possible GraphQL operations - queries, mutations and subscriptions Yes\r\n<\/code><\/pre>\n<p>\u6211\u8ba4\u4e3a\u60a8\u53ef\u4ee5\u4ece\u7ec8\u7aef\u4e2d\u786e\u8ba4\u901a\u8fc7CloudFormation\u81ea\u52a8\u751f\u6210\u4e86AppSync\u548cDynamoDB\u3002\u57fa\u672c\u4e0a\uff0c\u6240\u6709\u9009\u9879\u90fd\u662f\u9ed8\u8ba4\u7684\u3002<\/p>\n<p>\u5982\u679c\u7ec8\u7aef\u663e\u793a\u4e86GraphQL\u7684\u7aef\u70b9\u548cAPI\u5bc6\u94a5\uff0c\u90a3\u8bf4\u660e\u6210\u529f\u4e86\u3002<\/p>\n<h2>\u5728AWS\u63a7\u5236\u53f0\u4e0a\u786e\u8ba4\u521b\u5efa\u7684\u8d44\u6e90\u3002(1\u5206\u949f)<\/h2>\n<p>\u4eceAWS\u63a7\u5236\u53f0\u4e2d\u9009\u62e9AppSync\uff0c\u7136\u540e\u786e\u8ba4\u6240\u521b\u5efa\u7684\u9879\u76ee\u3002\u5728API\u5217\u8868\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u627e\u5230\u672c\u6b21\u521b\u5efa\u7684&#8221;aries&#8221;\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/55-0.png\" alt=\"FireShot Capture 98 - AWS AppSync Console_ - https___console.aws.amazon.com_appsync_home.png\" \/><\/div>\n<p>\u70b9\u51fb\u53f3\u4fa7\u7684\u201c\u6570\u636e\u6e90\u201d\uff0c\u60a8\u53ef\u4ee5\u67e5\u770b\u968f\u4e4b\u521b\u5efa\u7684DynamoDB\u3002\u5f53\u7136\uff0c\u76ee\u524d\u6570\u636e\u5e93\u4e3a\u7a7a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/57-0.png\" alt=\"FireShot Capture 99 - AWS AppSync Console_ - https___console.aws.amazon.com_appsync_home.png\" \/><\/div>\n<h1>\u5efa\u7acb\u90e8\u7f72\u6d41\u7a0b\u7ebf<\/h1>\n<h2>\u4f7f\u7528Amplify\u63a7\u5236\u53f0\u521b\u5efa\u5e94\u7528\u73af\u5883\uff083\u5206\u949f\uff09<\/h2>\n<p>\u4eceAWS\u63a7\u5236\u53f0\u4e2d\u9009\u62e9\u201cAmplify Console\u201d\uff0c\u7136\u540e\u901a\u8fc7\u201cconnect app\u201d\u6309\u94ae\u6765\u521b\u5efa\u5e94\u7528\u73af\u5883\u3002\u5728\u7b2c\u4e00\u6b65\u4e2d\uff0c\u9009\u62e9\u7ba1\u7406\u6e90\u4ee3\u7801\u7684\u4ee3\u7801\u5e93\uff0c\u672c\u6b21\u9009\u62e9\u5df2\u7ecf\u63d0\u4ea4\u4e86Vue.js\u6e90\u4ee3\u7801\u7684GitHub\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/61-0.png\" alt=\"FireShot Capture 100 - AWS Amplify Console_ - https___console.aws.amazon.com_amplify_home.png\" \/><\/div>\n<p>\u5728\u7b2c\u4e8c\u6b65\u4e2d\uff0c\u9700\u8981\u6307\u5b9a\u5b58\u50a8\u5e93\u540d\u79f0\u548c\u5206\u652f\u540d\u79f0\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/63-0.png\" alt=\"FireShot Capture 101 - AWS Amplify Console_ - https___console.aws.amazon.com_amplify_home.png\" \/><\/div>\n<p>\u7531\u4e8e\u7b2c\u4e09\u6b65\u548c\u7b2c\u56db\u6b65\u6ca1\u6709\u7279\u6b8a\u7684\u66f4\u6539\uff0c\u6240\u4ee5\u6309\u7167\u5c4f\u5e55\u4e0a\u7684\u6307\u793a\u7ee7\u7eed\u8fdb\u884c\u3002<\/p>\n<p>\u8bf7\u5728\u5b8c\u6210\u521b\u5efa\u540e\uff0c\u901a\u8fc7\u5de6\u4fa7\u83dc\u5355\u67e5\u770b\u6784\u5efa\u914d\u7f6e\u7684YAML\u6587\u4ef6\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/66-0.png\" alt=\"FireShot Capture 102 - AWS Amplify Console_ - https___console.aws.amazon.com_amplify_home.png\" \/><\/div>\n<pre class=\"post-pre\"><code><span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0.1<\/span>\r\n<span class=\"na\">frontend<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">phases<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">preBuild<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">commands<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"s\">npm ci<\/span>\r\n    <span class=\"na\">build<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">commands<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"s\">npm run build<\/span>\r\n  <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">baseDirectory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">dist<\/span>\r\n    <span class=\"na\">files<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">**\/*'<\/span>\r\n  <span class=\"na\">cache<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">node_modules\/**\/*<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u4e0a\u8ff0\u8bbe\u7f6e\u4e2d\uff0c\u5b8c\u6210\u4e86\u4e00\u4e2aGithub\u6e90\u4ee3\u7801\u5728\u6bcf\u6b21\u66f4\u6539\u65f6\u8fdb\u884c\u90e8\u7f72\u7684\u6d41\u6c34\u7ebf\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/69-0.png\" alt=\"FireShot Capture 103 - AWS Amplify Console_ - https___console.aws.amazon.com_amplify_home.png\" \/><\/div>\n<p>\u8ba9\u6211\u4eec\u4ece\u5c4f\u5e55\u663e\u793a\u7684URL\u786e\u8ba4\u4e00\u4e0b\u3002\u5982\u679c\u80fd\u591f\u786e\u8ba4\u5b83\u901a\u8fc7HTTPS\u5728\u7f51\u7edc\u4e0a\u516c\u5f00\uff0c\u90a3\u5c31\u662f\u6210\u529f\u7684\u3002<\/p>\n<h2>\u5411Vue.js\u4e2d\u6dfb\u52a0Amplify\u7684\u8bbe\u7f6e\uff081\u5206\u949f\uff09\u3002<\/h2>\n<p>\u76ee\u524d\u7684\u9636\u6bb5\uff0c\u7531\u4e8e\u4f7f\u7528vue create\u521b\u5efa\u7684\u9ed8\u8ba4\u9875\u9762\u4f1a\u663e\u793a\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u51c6\u5907\u4e00\u4e2a\u7528\u4e8e\u8fdb\u884c\u65b0\u589e\u3001\u8bfb\u53d6\u3001\u66f4\u65b0\u548c\u5220\u9664\u64cd\u4f5c\u7684\u9875\u9762\u3002\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u5bf9Amplify\u8fdb\u884c\u4fee\u6539\uff0c\u4ee5\u4fbf\u5728Vue\u4e2d\u53ef\u4ee5\u4f7f\u7528\u5b83\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">Vue<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">vue<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">App<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/App.vue<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">router<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/router<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"k\">import<\/span> <span class=\"nx\">Amplify<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">AmplifyModules<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">aws-amplify<\/span><span class=\"dl\">'<\/span> <span class=\"c1\">\/\/ \u8ffd\u8a18<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">AmplifyPlugin<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">aws-amplify-vue<\/span><span class=\"dl\">'<\/span> <span class=\"c1\">\/\/ \u8ffd\u8a18<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">aws_exports<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/aws-exports<\/span><span class=\"dl\">'<\/span> <span class=\"c1\">\/\/ \u8ffd\u8a18<\/span>\r\n<span class=\"nx\">Amplify<\/span><span class=\"p\">.<\/span><span class=\"nx\">configure<\/span><span class=\"p\">(<\/span><span class=\"nx\">aws_exports<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ \u8ffd\u8a18<\/span>\r\n\r\n<span class=\"nx\">Vue<\/span><span class=\"p\">.<\/span><span class=\"nx\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">AmplifyPlugin<\/span><span class=\"p\">,<\/span> <span class=\"nx\">AmplifyModules<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ \u8ffd\u8a18<\/span>\r\n\r\n<span class=\"nx\">Vue<\/span><span class=\"p\">.<\/span><span class=\"nx\">config<\/span><span class=\"p\">.<\/span><span class=\"nx\">productionTip<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>\r\n\r\n<span class=\"k\">new<\/span> <span class=\"nx\">Vue<\/span><span class=\"p\">({<\/span>\r\n  <span class=\"nx\">router<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">render<\/span><span class=\"p\">:<\/span> <span class=\"nx\">h<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">h<\/span><span class=\"p\">(<\/span><span class=\"nx\">App<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">}).<\/span><span class=\"nx\">$mount<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">#app<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<h2>\u589e\u52a0\u65b0\u9875\u9762\u5e76\u66f4\u6539\u8def\u7531\uff088\u5206\u949f\uff09<\/h2>\n<p>\u4e3a\u4e86\u80fd\u591f\u4ece\u5c4f\u5e55\u4e0a\u6dfb\u52a0\u5f85\u529e\u4e8b\u9879\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u65b0\u9875\u9762\u3002<\/p>\n<p>\u9996\u5148\uff0c\u8ba9\u6211\u4eec\u66f4\u6539\u8def\u7531\u3002\u5f53\u901a\u8fc7\u201c\/\u201d\u8bbf\u95ee\u65f6\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u8fdb\u884c\u4fee\u6539\uff0c\u4f7f\u5176\u8df3\u8f6c\u5230\u8fd9\u6b21\u65b0\u589e\u7684TODO\u7ba1\u7406\u9875\u9762\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">Vue<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">vue<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">Router<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">vue-router<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">Home<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/views\/Home.vue<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"nx\">Vue<\/span><span class=\"p\">.<\/span><span class=\"nx\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">Router<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">Router<\/span><span class=\"p\">({<\/span>\r\n  <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">history<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">base<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">BASE_URL<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">routes<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"c1\">\/\/ {<\/span>\r\n    <span class=\"c1\">\/\/   path: '\/',<\/span>\r\n    <span class=\"c1\">\/\/   name: 'home',<\/span>\r\n    <span class=\"c1\">\/\/   component: Home<\/span>\r\n    <span class=\"c1\">\/\/ },<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"na\">path<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">todo<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">component<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">import<\/span><span class=\"p\">(<\/span><span class=\"cm\">\/* webpackChunkName: \"todo\" *\/<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/views\/Todo.vue<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"na\">path<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">\/about<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">about<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"c1\">\/\/ route level code-splitting<\/span>\r\n      <span class=\"c1\">\/\/ this generates a separate chunk (about.[hash].js) for this route<\/span>\r\n      <span class=\"c1\">\/\/ which is lazy-loaded when the route is visited.<\/span>\r\n      <span class=\"na\">component<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">import<\/span><span class=\"p\">(<\/span><span class=\"cm\">\/* webpackChunkName: \"about\" *\/<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/views\/About.vue<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">})<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u5c06\u5bf9\u5df2\u7ecf\u8bb0\u5f55\u7684\u5bf9Home\u7684\u8bbf\u95ee\u8fdb\u884c\u6ce8\u91ca\u5904\u7406\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u521b\u5efaTodo.vue\u6587\u4ef6\u3002<\/p>\n<p>\u4f7f\u7528GraphQL\u8fdb\u884c\u6570\u636e\u7684\u6ce8\u518c\u548c\u5217\u8868\u83b7\u53d6\u3002\u901a\u8fc7\u4f7f\u7528Amplify\uff0c\u67e5\u8be2\u5df2\u7ecf\u81ea\u52a8\u5728src\/graphql\u4e0b\u751f\u6210\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u7f16\u5199\u65b0\u7684GraphQL\u67e5\u8be2\u3002\u53ef\u4ee5\u4f7f\u7528graphqlOperation\u6765\u8f7b\u677e\u8fdb\u884cAPI\u8c03\u7528\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nt\">&lt;<\/span><span class=\"k\">template<\/span><span class=\"nt\">&gt;<\/span>\r\n  <span class=\"nt\">&lt;div&gt;<\/span>\r\n    <span class=\"nt\">&lt;nav<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"level\"<\/span><span class=\"nt\">&gt;<\/span>\r\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"level-item has-text-centered\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;div&gt;<\/span>\r\n          <span class=\"nt\">&lt;p<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"heading\"<\/span><span class=\"nt\">&gt;<\/span>TODO<span class=\"nt\">&lt;\/p&gt;<\/span>\r\n          <span class=\"nt\">&lt;b-field<\/span> <span class=\"na\">label=<\/span><span class=\"s\">\"Name\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;b-input<\/span> <span class=\"na\">v-model=<\/span><span class=\"s\">\"input.name\"<\/span><span class=\"nt\">&gt;&lt;\/b-input&gt;<\/span>\r\n          <span class=\"nt\">&lt;\/b-field&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/div&gt;<\/span>\r\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\r\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"level-item has-text-centered\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;div&gt;<\/span>\r\n          <span class=\"nt\">&lt;b-field<\/span> <span class=\"na\">label=<\/span><span class=\"s\">\"Description\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;b-input<\/span> <span class=\"na\">v-model=<\/span><span class=\"s\">\"input.description\"<\/span><span class=\"nt\">&gt;&lt;\/b-input&gt;<\/span>\r\n          <span class=\"nt\">&lt;\/b-field&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/div&gt;<\/span>\r\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/nav&gt;<\/span>\r\n    <span class=\"nt\">&lt;button<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"button is-link\"<\/span> <span class=\"err\">@<\/span><span class=\"na\">click=<\/span><span class=\"s\">\"createTodo\"<\/span><span class=\"nt\">&gt;<\/span>ADD<span class=\"nt\">&lt;\/button&gt;<\/span>\r\n    <span class=\"nt\">&lt;ul<\/span> <span class=\"na\">id=<\/span><span class=\"s\">\"todo\"<\/span><span class=\"nt\">&gt;<\/span>\r\n      <span class=\"nt\">&lt;li<\/span> <span class=\"na\">v-for=<\/span><span class=\"s\">\"todo in todos\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;span<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"todo-wrapper\"<\/span><span class=\"nt\">&gt;<\/span><span class=\"si\">{{<\/span> <span class=\"nx\">todo<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span> <span class=\"si\">}}<\/span><span class=\"nt\">&lt;\/span&gt;<\/span>\r\n      <span class=\"nt\">&lt;\/li&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/ul&gt;<\/span>\r\n  <span class=\"nt\">&lt;\/div&gt;<\/span>\r\n<span class=\"nt\">&lt;\/<\/span><span class=\"k\">template<\/span><span class=\"nt\">&gt;<\/span>\r\n\r\n<span class=\"nt\">&lt;<\/span><span class=\"k\">script<\/span><span class=\"nt\">&gt;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span><span class=\"nx\">API<\/span><span class=\"p\">,<\/span> <span class=\"nx\">graphqlOperation<\/span><span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">aws-amplify<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"o\">*<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">mutations<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/graphql\/mutations<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"o\">*<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">queries<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/graphql\/queries<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">todo<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"na\">input<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">''<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"na\">description<\/span><span class=\"p\">:<\/span> <span class=\"dl\">''<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"na\">todos<\/span><span class=\"p\">:<\/span> <span class=\"p\">[]<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">},<\/span>\r\n  <span class=\"na\">created<\/span><span class=\"p\">:<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"k\">await<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">listTodos<\/span><span class=\"p\">()<\/span>\r\n\r\n  <span class=\"p\">},<\/span>\r\n  <span class=\"na\">methods<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">createTodo<\/span><span class=\"p\">:<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">input<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span> <span class=\"o\">!==<\/span> <span class=\"dl\">''<\/span> <span class=\"o\">||<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">input<\/span><span class=\"p\">.<\/span><span class=\"nx\">description<\/span> <span class=\"o\">!==<\/span> <span class=\"dl\">''<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"k\">await<\/span> <span class=\"nx\">API<\/span><span class=\"p\">.<\/span><span class=\"nx\">graphql<\/span><span class=\"p\">(<\/span><span class=\"nx\">graphqlOperation<\/span><span class=\"p\">(<\/span><span class=\"nx\">mutations<\/span><span class=\"p\">.<\/span><span class=\"nx\">createTodo<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span><span class=\"na\">input<\/span><span class=\"p\">:<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">input<\/span><span class=\"p\">}))<\/span>\r\n         <span class=\"p\">.<\/span><span class=\"k\">catch<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">))<\/span>\r\n        <span class=\"k\">await<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">listTodos<\/span><span class=\"p\">()<\/span>\r\n      <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">info<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">input empty<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"na\">listTodos<\/span><span class=\"p\">:<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"kd\">const<\/span> <span class=\"nx\">res<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">API<\/span><span class=\"p\">.<\/span><span class=\"nx\">graphql<\/span><span class=\"p\">(<\/span><span class=\"nx\">graphqlOperation<\/span><span class=\"p\">(<\/span><span class=\"nx\">queries<\/span><span class=\"p\">.<\/span><span class=\"nx\">listTodos<\/span><span class=\"p\">))<\/span>\r\n        <span class=\"p\">.<\/span><span class=\"k\">catch<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">))<\/span>\r\n      <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">todos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">listTodos<\/span><span class=\"p\">.<\/span><span class=\"nx\">items<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"nt\">&lt;\/<\/span><span class=\"k\">script<\/span><span class=\"nt\">&gt;<\/span>\r\n<span class=\"nt\">&lt;<\/span><span class=\"k\">style<\/span> <span class=\"na\">scoped<\/span><span class=\"nt\">&gt;<\/span>\r\n<span class=\"nc\">.todo-wrapper<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"c\">\/* \u9069\u5b9c\u8a18\u8ff0 *\/<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"nt\">&lt;\/<\/span><span class=\"k\">style<\/span><span class=\"nt\">&gt;<\/span>\r\n<\/code><\/pre>\n<p>\u5f53\u5728\u8f93\u5165\u8868\u5355\u4e2d\u8f93\u5165TODO\u540d\u79f0\u548c\u63cf\u8ff0\uff0c\u5e76\u70b9\u51fb\u201c\u6dfb\u52a0\u201d\u6309\u94ae\u65f6\uff0c\u5c06\u4f1a\u6267\u884ccreateTodo\u65b9\u6cd5\u3002\u5f53\u9700\u8981\u4f7f\u7528GraphQL\u8fdb\u884c\u66f4\u65b0\u65f6\uff0cmutations\u7528\u4e8e\u5411AppSync\u53d1\u9001\u8bf7\u6c42\uff0c\u5e76\u76f4\u63a5\u5c06\u6570\u636e\u5199\u5165DynamoDB\u3002\u53e6\u5916\uff0c\u5f53\u9700\u8981\u4f7f\u7528GraphQL\u8fdb\u884c\u68c0\u7d22\u65f6\uff0cqueries\u7528\u4e8e\u5411AppSync\u53d1\u9001\u8bf7\u6c42\uff0c\u5e76\u4eceDynamoDB\u4e2d\u83b7\u53d6\u6570\u636e\uff0c\u7136\u540e\u5c06\u5176\u6e32\u67d3\u5728\u5c4f\u5e55\u4e0a\u3002<\/p>\n<p>\u7531\u4e8e\u4e0e\u672c\u6b21\u76ee\u7684\u4e0d\u76f8\u5173\uff0c\u6240\u4ee5\u4e0d\u4f1a\u5728\u6b64\u6b21\u5b9e\u73b0\u806a\u660e\u7684\u529f\u80fd\u6216\u5e03\u5c40\u3002\u5982\u679c\u80fd\u53c2\u8003\u4e00\u4e0b\u67e5\u8be2\u548c\u53d8\u66f4\u7684\u8c03\u7528\u65b9\u5f0f\uff0c\u6211\u4f1a\u5f88\u9ad8\u5174\u3002\u7531\u4e8e\u6b63\u5728\u4f7f\u7528Buefy\uff0c\u56e0\u6b64\u5bf9\u4e8e\u624b\u673a\u7684\u7f51\u9875\u663e\u793a\u4e5f\u5f88\u5bb9\u6613\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/84-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u5c06\u66f4\u6539\u5e94\u7528\u4e8e\u516c\u5f00\u7684\u7f51\u9875(2\u5206\u949f)\u3002<\/h2>\n<p>\u6700\u540e\uff0c\u4f1a\u66f4\u65b0\u7f51\u9875\u3002\u4fee\u6539\u540e\u7684\u4ee3\u7801\u4f1a\u63d0\u4ea4\u5230GitHub\uff0c\u5e76\u63a8\u9001\u5230\u4e3b\u5206\u652f\uff0c\u6b64\u65f6Amplify Console\u7684\u6d41\u6c34\u7ebf\u5c06\u81ea\u52a8\u5f00\u59cb\u6784\u5efa\u8fc7\u7a0b\u3002\u7b49\u5f85\u5927\u7ea61\u5206\u949f\uff0c\u5373\u53ef\u5b8c\u6210\u90e8\u7f72\uff0c\u53ef\u4ee5\u786e\u8ba4\u4fee\u6b63\u5185\u5bb9\u5df2\u7ecf\u5b9e\u65bd\u3002<\/p>\n<h1>\u6700\u540e<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Amplify Framework\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30ed\u30b8\u30c3\u30af\u3092\u4e00\u5207\u8a18\u8ff0\u3059\u308b\u3053\u3068\u306a\u304f\u30b5\u30fc\u30d0\u30ec\u30b9\u3067\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Amplify Console\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001Vue.js\u306eCI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u7c21\u5358\u306b\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">GraphQL\u3084\u30b5\u30fc\u30d0\u30ec\u30b9\u3068\u3063\u305f\u30e2\u30c0\u30f3\u8981\u7d20\u3092\u53d6\u308a\u5165\u308c\u306a\u304c\u3089\u300120\u5206\u3067\u30a2\u30d7\u30ea\u3092\u516c\u958b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>SPA -&gt; GraphQL -&gt; \u65e0\u670d\u52a1\u5668\u540e\u7aef \u4f7f\u7528Vue.js\u548cAmplify\uff0c\u4ece\u5934\u5f00\u59cb\u8fdb\u884c\u73b0 [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48241","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u53ea\u8981\u4f7f\u7528vue-js\u548camplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f\" \/>\n<meta property=\"og:description\" content=\"SPA -&gt; GraphQL -&gt; \u65e0\u670d\u52a1\u5668\u540e\u7aef \u4f7f\u7528Vue.js\u548cAmplify\uff0c\u4ece\u5934\u5f00\u59cb\u8fdb\u884c\u73b0 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u53ea\u8981\u4f7f\u7528vue-js\u548camplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-05T00:44:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T18:32:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/2-0.png\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/\",\"name\":\"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-03-05T00:44:13+00:00\",\"dateModified\":\"2024-05-03T18:32:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u53ea\u8981\u4f7f\u7528vue-js\u548camplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\/","og_locale":"zh_CN","og_type":"article","og_title":"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f","og_description":"SPA -&gt; GraphQL -&gt; \u65e0\u670d\u52a1\u5668\u540e\u7aef \u4f7f\u7528Vue.js\u548cAmplify\uff0c\u4ece\u5934\u5f00\u59cb\u8fdb\u884c\u73b0 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u53ea\u8981\u4f7f\u7528vue-js\u548camplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-03-05T00:44:13+00:00","article_modified_time":"2024-05-03T18:32:03+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d839f913a08637a6b3d7b\/2-0.png"}],"author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/","name":"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-03-05T00:44:13+00:00","dateModified":"2024-05-03T18:32:03+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u53ea\u8981\u4f7f\u7528Vue.js\u548cAmplify\uff0c\u5c31\u53ef\u4ee5\u572820\u5206\u949f\u5185\u53d1\u5e03\u4e00\u4e2a\u73b0\u4ee3\u5316\u7684Web\u5e94\u7528\u7a0b\u5e8f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%8f%aa%e8%a6%81%e4%bd%bf%e7%94%a8vue-js%e5%92%8camplify%ef%bc%8c%e5%b0%b1%e5%8f%af%e4%bb%a5%e5%9c%a820%e5%88%86%e9%92%9f%e5%86%85%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aa%e7%8e%b0%e4%bb%a3%e5%8c%96\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48241"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48241\/revisions"}],"predecessor-version":[{"id":95580,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48241\/revisions\/95580"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}