From c678841406fd3e0e788ff88580415cd410203aed Mon Sep 17 00:00:00 2001 From: YuukanOO Date: Thu, 21 Jan 2021 09:11:41 +0100 Subject: [PATCH] add vue-router and detail page --- hn-vue/package-lock.json | 5 +++ hn-vue/package.json | 3 +- hn-vue/src/Layout.vue | 8 ++++ hn-vue/src/api.js | 16 ++++++- hn-vue/src/components/Comment.vue | 20 +++++++++ hn-vue/src/components/Error.vue | 2 +- hn-vue/src/components/LinkItem.vue | 6 ++- hn-vue/src/main.js | 8 +++- hn-vue/src/pages/LinkDetail.vue | 69 ++++++++++++++++++++++++++++++ hn-vue/src/{ => pages}/Links.vue | 12 +++--- hn-vue/src/router.js | 23 ++++++++++ vue2/src/components/Link.vue | 20 +++++++++ vue2/src/main.js | 9 ++++ 13 files changed, 189 insertions(+), 12 deletions(-) create mode 100644 hn-vue/src/Layout.vue create mode 100644 hn-vue/src/components/Comment.vue create mode 100644 hn-vue/src/pages/LinkDetail.vue rename hn-vue/src/{ => pages}/Links.vue (78%) create mode 100644 hn-vue/src/router.js create mode 100644 vue2/src/components/Link.vue diff --git a/hn-vue/package-lock.json b/hn-vue/package-lock.json index 7abfbb3..a9f0e76 100644 --- a/hn-vue/package-lock.json +++ b/hn-vue/package-lock.json @@ -10982,6 +10982,11 @@ } } }, + "vue-router": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.9.tgz", + "integrity": "sha512-CGAKWN44RqXW06oC+u4mPgHLQQi2t6vLD/JbGRDAXm0YpMv0bgpKuU5bBd7AvMgfTz9kXVRIWKHqRwGEb8xFkA==" + }, "vue-style-loader": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", diff --git a/hn-vue/package.json b/hn-vue/package.json index 186cea0..715fbee 100644 --- a/hn-vue/package.json +++ b/hn-vue/package.json @@ -9,7 +9,8 @@ }, "dependencies": { "core-js": "^3.6.5", - "vue": "^2.6.11" + "vue": "^2.6.11", + "vue-router": "^3.4.9" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", diff --git a/hn-vue/src/Layout.vue b/hn-vue/src/Layout.vue new file mode 100644 index 0000000..a30285b --- /dev/null +++ b/hn-vue/src/Layout.vue @@ -0,0 +1,8 @@ + diff --git a/hn-vue/src/api.js b/hn-vue/src/api.js index 00ac1da..a362dc3 100644 --- a/hn-vue/src/api.js +++ b/hn-vue/src/api.js @@ -7,12 +7,26 @@ class Api { return this._get("/api/links"); } + getLinkById(id) { + return this._get(`/api/links/${id}`); + } + + getLinkComments(id) { + return this._get(`/api/links/${id}/comments`); + } + _get(path) { return fetch(this.baseUrl + path, { headers: { Accept: "application/json", }, - }).then((r) => r.json()); + }).then((r) => { + if (!r.ok) { + return Promise.reject(new Error("Erreur dans la requête")); + } + + return r.json(); + }); } } diff --git a/hn-vue/src/components/Comment.vue b/hn-vue/src/components/Comment.vue new file mode 100644 index 0000000..0a542ad --- /dev/null +++ b/hn-vue/src/components/Comment.vue @@ -0,0 +1,20 @@ + + + diff --git a/hn-vue/src/components/Error.vue b/hn-vue/src/components/Error.vue index 95d36e7..cf7bcbd 100644 --- a/hn-vue/src/components/Error.vue +++ b/hn-vue/src/components/Error.vue @@ -1,5 +1,5 @@ diff --git a/hn-vue/src/Links.vue b/hn-vue/src/pages/Links.vue similarity index 78% rename from hn-vue/src/Links.vue rename to hn-vue/src/pages/Links.vue index 415b95b..eea77d1 100644 --- a/hn-vue/src/Links.vue +++ b/hn-vue/src/pages/Links.vue @@ -1,11 +1,11 @@ diff --git a/vue2/src/main.js b/vue2/src/main.js index a098323..56baa30 100644 --- a/vue2/src/main.js +++ b/vue2/src/main.js @@ -18,6 +18,8 @@ const AForm = () => import(/* webpackChunkName: "aform" */ "./components/AForm.vue"); const Counter = () => import(/* webpackChunkName: "counter" */ "./components/Counter.vue"); +const Link = () => + import(/* webpackChunkName: "link" */ "./components/Link.vue"); Vue.use(VueRouter); @@ -74,6 +76,12 @@ const router = new VueRouter({ }, ], }, + { + path: "/link/:id", + component: Link, + name: "link", + meta: {}, + }, { path: "/card/:a/:b", component: Card, @@ -98,6 +106,7 @@ router.beforeEach((to, from, next) => { }); router.afterEach((to) => { + console.log(to.matched); document.title = to.meta.title; });