vue.jsでルーティングにvue-routerを使うとして
import Vue from "vue"; import VueRouter from "vue-router"; Vue.use(VueRouter); import Page2 from '../pages/page2.vue' const routes =[ { path: '/page2', component: Page2 } ]; const router = new VueRouter({ routes, base: process.env.BASE_URL, mode: 'history' }); export default router;
以上の様なルーティングになっているとします。
$router.push
等で/api/v1/users/3"
に遷移しurl欄のurlも変化すると思います。
ただ実際これは非同期処理でDOMを書き換えているだけなので、
例えば直接パスを踏んだり、ブラウザの更新ボタン押したをするとサーバーサイドのルーティングを見に行ってしまうと思います。
例えばrailsのroutes.rbで
Rails.application.routes.draw do namespace :api do namespace :v1 do root to: 'home#index' resources :users, only: [:index,:show, :update] end end get '/page2', to: 'api/v1/users#show' end
この様に定義していたらこちらの/api/v1/users/3
を見に行ってしまうという寸法です。
ユーザがブラウザの更新ボタンを押すということは至ってよくあることだと思うのですが、一般的にこれはどう対策すれば良いのでしょうか?(例えばrailsですと/users/show.html.erbを作成して、更新してもユーザからは同じページを表示してる様に見せるなど)
それとも更新を押してもusers.vueを呼び出す様ないい方法があるのでしょうか?
SPA周りがあまり詳しくなく疑問に思っています。よろしくお願いします。
###追記
js構成 javascript -packs |_pages2.js |_application.js -pages |_pages2.vue -router |_router.js
//application.html.erb <!DOCTYPE html> <html> <head> <title>PerformaApps</title> <meta name="viewport" content="width=device-width,initial-scale=1"> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all' %> <%= javascript_pack_tag 'application' %> </head> <body> <%= yield %> </body> </html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 17:51 編集
2021/04/11 19:09
2021/04/11 19:20
2021/04/11 20:19
2021/04/11 20:29