1. 程式人生 > 其它 >mysql實現黑馬整合ssm案例Oracle資料庫的建表工作

mysql實現黑馬整合ssm案例Oracle資料庫的建表工作

vue-router:實現頁面跳轉

二、vue-router是什麼

這裡的路由並不是指我們平時所說的硬體路由器這裡的路由就是SPA(單頁應用)的路徑管理器。再通俗的說,vue-router就是WebApp的連結路徑管理系統。
vue-router是Vue.js官方的路由外掛,它和vue.js是深度整合的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和元件的,路由用於設定訪問路徑,並將路徑和元件對映起來。傳統的頁面應用,是用一些超連結來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是元件的切換。路由模組的本質 就是建立起url和頁面之間的對映關係


至於我們為啥不能用a標籤,這是因為用Vue做的都是單頁應用,就相當於只有一個主的index.html頁面,所以你寫的<a></a>標籤是不起作用的,你必須使用vue-router來進行管理。

三、vue-router實現原理

SPA(single page application):單一頁面應用程式,只有一個完整的頁面;它在載入頁面時,不會載入整個頁面,而是隻更新某個指定的容器中內容。單頁面應用(SPA)的核心之一是: 更新檢視而不重新請求頁面;vue-router在實現單頁面前端路由時,提供了兩種方式:Hash模式和History模式;根據mode引數來決定採用哪一種方式。

1、Hash模式:

vue-router 預設 hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,於是當 URL 改變時,頁面不會重新載入。hash(#)是URL 的錨點,代表的是網頁中的一個位置,單單改變#後的部分,瀏覽器只會滾動到相應位置,不會重新載入網頁,也就是說 #是用來指導瀏覽器動作的,對伺服器端完全無用,HTTP請求中也不會不包括#;同時每一次改變#後的部分,都會在瀏覽器的訪問歷史中增加一個記錄,使用”後退”按鈕,就可以回到上一個位置;所以說Hash模式通過錨點值的改變,根據不同的值,渲染指定DOM位置的不同資料

  1. //main.js檔案中 const router = new VueRouter({ mode: 'history', routes: [...] })

二、vue-router是什麼

這裡的路由並不是指我們平時所說的硬體路由器這裡的路由就是SPA(單頁應用)的路徑管理器。再通俗的說,vue-router就是WebApp的連結路徑管理系統。
vue-router是Vue.js官方的路由外掛,它和vue.js是深度整合的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和元件的,路由用於設定訪問路徑,並將路徑和元件對映起來。傳統的頁面應用,是用一些超連結來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是元件的切換。路由模組的本質 就是建立起url和頁面之間的對映關係
至於我們為啥不能用a標籤,這是因為用Vue做的都是單頁應用,就相當於只有一個主的index.html頁面,所以你寫的<a></a>標籤是不起作用的,你必須使用vue-router來進行管理。

三、vue-router實現原理

SPA(single page application):單一頁面應用程式,只有一個完整的頁面;它在載入頁面時,不會載入整個頁面,而是隻更新某個指定的容器中內容。單頁面應用(SPA)的核心之一是: 更新檢視而不重新請求頁面;vue-router在實現單頁面前端路由時,提供了兩種方式:Hash模式和History模式;根據mode引數來決定採用哪一種方式。

1、Hash模式:

vue-router 預設 hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,於是當 URL 改變時,頁面不會重新載入。hash(#)是URL 的錨點,代表的是網頁中的一個位置,單單改變#後的部分,瀏覽器只會滾動到相應位置,不會重新載入網頁,也就是說 #是用來指導瀏覽器動作的,對伺服器端完全無用,HTTP請求中也不會不包括#;同時每一次改變#後的部分,都會在瀏覽器的訪問歷史中增加一個記錄,使用”後退”按鈕,就可以回到上一個位置;所以說Hash模式通過錨點值的改變,根據不同的值,渲染指定DOM位置的不同資料

2、History模式:

由於hash模式會在url中自帶#,如果不想要很醜的 hash,我們可以用路由的 history 模式,只需要在配置路由規則時,加入"mode: 'history'",這種模式充分利用 history.pushState API 來完成 URL 跳轉而無須重新載入頁面。

  1. //main.js檔案中
  2. const router = new VueRouter({
  3. mode: 'history',
  4. routes: [...]
  5. })

當你使用 history 模式時,URL 就像正常的 url,例如http://yoursite.com/user/id,比較好看!
不過這種模式要玩好,還需要後臺配置支援。因為我們的應用是個單頁客戶端應用,如果後臺沒有正確的配置,當用戶在瀏覽器直接訪問http://oursite.com/user/id就會返回 404,這就不好看了。
所以呢,你要在服務端增加一個覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態資源,則應該返回同一個 index.html 頁面,這個頁面就是你 app 依賴的頁面。

  1. export const routes = [
  2. {path: "/", name: "homeLink", component:Home}
  3. {path: "/register", name: "registerLink", component: Register},
  4. {path: "/login", name: "loginLink", component: Login},
  5. {path: "*", redirect: "/"}]

此處就設定如果URL輸入錯誤或者是URL 匹配不到任何靜態資源,就自動跳到到Home頁面

3、使用路由模組來實現頁面跳轉的方式

方式1:直接修改位址列

方式2:this.$router.push(‘路由地址’)

方式3:<router-link to="路由地址"></router-link>

四、vue-router使用方式

1:下載npm i vue-router -S

2:在main.js中引入import VueRouter from 'vue-router';

3:安裝外掛Vue.use(VueRouter);

4:建立路由物件並配置路由規則

let router = new VueRouter({routes:[{path:'/home',component:Home}]});

5:將其路由物件傳遞給Vue的例項,options中加入router:router

6:在app.vue中留坑<router-view></router-view>

具體實現請看如下程式碼:

  1. //main.js檔案中引入
  2. import Vue from 'vue';
  3. import VueRouter from 'vue-router';
  4. //主體
  5. import App from './components/app.vue';
  6. import Home from './components/home.vue'
  7. //安裝外掛
  8. Vue.use(VueRouter); //掛載屬性
  9. //建立路由物件並配置路由規則
  10. let router = new VueRouter({
  11. routes: [
  12. //一個個物件
  13. { path: '/home', component: Home }
  14. ]
  15. });
  16. //new Vue 啟動
  17. new Vue({
  18. el: '#app',
  19. //讓vue知道我們的路由規則
  20. router: router, //可以簡寫router
  21. render: c => c(App),
  22. })

最後記得在在app.vue中“留坑”

  1. //app.vue中
  2. <template>
  3. <div>
  4. <!-- 留坑,非常重要 -->
  5. <router-view></router-view>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. data(){
  11. return {}
  12. }
  13. }
  14. </script>

五、vue-router核心要點

1.vue-router如何引數傳遞

①用name傳遞引數

在路由檔案src/router/index.js裡配置name屬性

  1. routes: [
  2. {
  3. path: '/',
  4. name: 'Hello',
  5. component: Hello
  6. }
  7. ]

模板裡(src/App.vue)用$router.name來接收
比如:<p>{{ $router.name}}</p>

②通過<router-link>標籤中的to傳參

這種傳參方法的基本語法:

<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>

比如先在src/App.vue檔案中

<router-link :to="{name:'hi1',params:{username:'jspang',id:'555'}}">Hi頁面1</router-link>

然後把src/router/index.js檔案裡給hi1配置的路由起個name,就叫hi1.

{path:'/hi1',name:'hi1',component:Hi1}

最後在模板裡(src/components/Hi1.vue)用$route.params.username進行接收.

{{$route.params.username}}-{{$route.params.id}}

③vue-router 利用url傳遞引數----在配置檔案裡以冒號的形式設定引數。

我們在/src/router/index.js檔案裡配置路由

  1. {
  2. path:'/params/:newsId/:newsTitle',
  3. component:Params
  4. }

我們需要傳遞引數是新聞ID(newsId)和新聞標題(newsTitle).所以我們在路由配置檔案裡制定了這兩個值。
在src/components目錄下建立我們params.vue元件,也可以說是頁面。我們在頁面裡輸出了url傳遞的的新聞ID和新聞標題。

  1. <template>
  2. <div>
  3. <h2>{{ msg }}</h2>
  4. <p>新聞ID:{{ $route.params.newsId}}</p>
  5. <p>新聞標題:{{ $route.params.newsTitle}}</p>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. name: 'params',
  11. data () {
  12. return {
  13. msg: 'params page'
  14. }
  15. }
  16. }
  17. </script>

在App.vue檔案里加入我們的<router-view>標籤。這時候我們可以直接利用url傳值了

<router-link to="/params/198/jspang website is very good">params</router-link>|

2.單頁面多路由區域操作

在一個頁面裡我們有2個以上<router-view>區域,我們通過配置路由的js檔案,來操作這些區域的內容

①App.vue檔案,在<router-view>下面新寫了兩行<router-view>標籤,並加入了些CSS樣式

  1. <template>
  2. <div id="app">
  3. <img src="./assets/logo.png">
  4. <router-link :to="{name:'HelloWorld'}"><h1>H1</h1></router-link>
  5. <router-link :to="{name:'H1'}"><h1>H2</h1></router-link>
  6. <router-view></router-view>
  7. <router-view name="left" style="float:left;width:50%;background-color:#ccc;height:300px;"/>
  8. <router-view name="right" style="float:right;width:50%;background-color:yellowgreen;height:300px;"/>
  9. </div>
  10. </template>

②需要在路由裡配置這三個區域,配置主要是在components欄位裡進行

  1. export default new Router({
  2. routes: [
  3. {
  4. path: '/',
  5. name: 'HelloWorld',
  6. components: {default: HelloWorld,
  7. left:H1,//顯示H1元件內容'I am H1 page,Welcome to H1'
  8. right:H2//顯示H2元件內容'I am H2 page,Welcome to H2'
  9. }
  10. },
  11. {
  12. path: '/h1',
  13. name: 'H1',
  14. components: {default: HelloWorld,
  15. left:H2,//顯示H2元件內容
  16. right:H1//顯示H1元件內容
  17. }
  18. }
  19. ]
  20. })

上邊的程式碼我們編寫了兩個路徑,一個是預設的‘/’,另一個是‘/Hi’.在兩個路徑下的components裡面,我們對三個區域都定義了顯示內容。最後頁面展示如下圖:

image

3.vue-router配置子路由(二級路由)

實際生活中的應用介面,通常由多層巢狀的元件組合而成。同樣地,URL中各段動態路徑也按某種結構對應巢狀的各層元件,例如:

image


如何實現下圖效果(H1頁面和H2頁面巢狀在主頁中)

image


①首先用<router-link>標籤增加了兩個新的導航連結

  1. <router-link :to="{name:'HelloWorld'}">主頁</router-link>
  2. <router-link :to="{name:'H1'}">H1頁面</router-link>
  3. <router-link :to="{name:'H2'}">H2頁面</router-link>

②在HelloWorld.vue加入<router-view>標籤,給子模板提供插入位置

  1. <template>
  2. <div class="hello">
  3. <h1>{{ msg }}</h1>
  4. <router-view></router-view>
  5. </div>
  6. </template>

③在components目錄下新建兩個元件模板 H1.vue 和 H2.vue
兩者內容類似,以下是H1.vue頁面內容:

  1. <template>
  2. <div class="hello">
  3. <h1>{{ msg }}</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. msg: 'I am H1 page,Welcome to H1'
  11. }
  12. }
  13. }
  14. </script>

④修改router/index.js程式碼,子路由的寫法是在原有的路由配置下加入children欄位。

  1. routes: [
  2. {
  3. path: '/',
  4. name: 'HelloWorld',
  5. component: HelloWorld,
  6. children: [{path: '/h1', name: 'H1', component: H1},
  7. {path: '/h2', name: 'H2', component: H2}
  8. ]
  9. }
  10. ]

4.vue-router跳轉方法

  1. <button @click="goToMenu" class="btn btn-success">Let's order!</button>
  2. .....
  3. <script>
  4. export default{
  5. methods:{
  6. goToMenu(){
  7. this.$router.go(-1)//跳轉到上一次瀏覽的頁面
  8. this.$router.replace('/menu')//指定跳轉的地址
  9. this.$router.replace({name:'menuLink'})// 指定跳轉路由的名字下
  10. this.$router.push('/menu')通過push進行跳轉
  11. this.$router.push({name:'menuLink'})通過push進行跳轉路由的名字下
  12. }
  13. }
  14. }
  15. </script>

5.404頁面的設定

使用者會經常輸錯頁面,當用戶輸錯頁面時,我們希望給他一個友好的提示頁面,這個頁面就是我們常說的404頁面。vue-router也為我們提供了這樣的機制。
①設定我們的路由配置檔案(/src/router/index.js)

  1. {
  2. path:'*',
  3. component:Error
  4. }

這裡的path:'*'就是輸入地址不匹配時,自動顯示出Error.vue的檔案內容

②在/src/components/資料夾下新建一個Error.vue的檔案。簡單輸入一些有關錯誤頁面的內容。

  1. <template>
  2. <div>
  3. <h2>{{ msg }}</h2>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. data () {
  9. return {
  10. msg: 'Error:404'
  11. }
  12. }
  13. }
  14. </script>

此時我們隨意輸入一個錯誤的地址時,便會自動跳轉到404頁面

作者:浪裡行舟
連結:https://www.jianshu.com/p/4c5c99abb864
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處