日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

發布時間:2023/12/2 vue 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建vue项目(三)路由跳转、反向代理、本地存储、状态管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據更新渲染,axios請求數據,配置環境

一、路由跳轉

  • app.vue
  • <template><div id="app"><keep-alive><router-view/></keep-alive></div> </template><script> export default {name: 'app' } </script>
  • 頁面跳轉
    .router-link-active
  • 二級路由
    在路由下添加 children 數組,繼續寫路由,需要注意的是 children 中的 path 不要加 " / "。為了讓地址為 /workOrder 是有頁面效果,需要重定向到指定的頁面,用 redirect 重新定向。

    表格中的路由跳轉
  • 二、反向代理

  • 項目根目錄創建一個配置文件 vue.config.js ,我們將在此配置一些環境,具體可在 vue-cli 官網上進行查閱。

    代碼:
  • module.exports = {devServer : {proxy : {'/api' : {target : "http:AA.BB.CC.DD:端口",changeOrigin : true,pathRewrite:{'^/api':'//connect' //此處將^/api替換為/api,即使用/api就變成了http:AA.BB.CC.DD:端口//connect}}}} }

    使用:

    axios請求的路徑中的 /api ,即 proxy 下的 ‘/api’ 代表的是在 vue.config.js 中配置的 http://AA.BB.CC.DD:端口號//connect;

  • 安裝 axios ,并引入;axios說明文檔
    axios全局配置 - 簡書
    https://www.jianshu.com/p/0da733d7a8df
    (1) npm install axios
    (2)cnpm install axios --save-dev
    (3)main.js 引入
  • import axios from 'axios' Vue.prototype.$axios = axios;
  • 關于vue跨域問題,修改代理后仍出現404
    (1) “重新運行cnpm run dev”,
    (2) “測試接口是否能夠正常訪問”

  • vue在哪個生命周期進行數據請求
    (1)一般在 created(或beforeRouter) 里面就可以,如果涉及到需要頁面加載完成之后的話就用 mounted;
    (2)在created的時候,視圖中的html并沒有渲染出來,所以此時如果直接去操作html的dom節點,一定找不到相關的元素
    而在mounted中,由于此時html已經渲染出來了,所以可以直接操作dom節點,(此時document.getelementById 即可生效了)。
    beforeCreate 創建之前:已經完成了 初始化事件和生命周期
    created 創建完成:已經完成了 初始化注冊和響應
    beforeMount 掛載之前:已經完成了模板渲染
    mounted :掛載之后:已完成HTML虛擬化,創建了el節點 可以操作DOM了
    beforeDestroy :摧毀之前:整個vue都處在實時監控空渲染和更新
    destroyed: 已摧毀,已經摧毀了觀察者,子元素和事件監聽
    created:在模板渲染成html前調用,即通常初始化某些屬性值,然后再渲染成視圖。
    mounted:在模板渲染成html后調用,通常是初始化頁面完成后,再對html的dom節點進行一些需要的操作。
    掛載到節點上的初始化方法通常用mounted去操作,主動調起的用methods里面封裝方法。
    數據初始化一般放到created里面,這樣可以及早發請求獲取數據,如果有依賴dom必須存在的情況,就放到mounted(){this.$nextTick(() => { /* code */ })}里面
    Vue是異步執行dom更新的,一旦觀察到數據變化,Vue就會開啟一個隊列,然后把在同一個事件循環 (event loop) 當中觀察到數據變化的 watcher 推送進這個隊列。如果這個watcher被觸發多次,只會被推送到隊列一次。這種緩沖行為可以有效的去掉重復數據造成的不必要的計算和DOm操作。而在下一個事件循環時,Vue會清空隊列,并進行必要的DOM更新。

  • 調用的時機:

  • created:在模板渲染成html前調用.

    mounted:在模板渲染成html后調用

  • 各自處理的事物
  • created: 數據的初始化,異步請求也適宜在這里調用。

    mounted: 通常是初始化頁面完成后,再對html的dom節點進行一些需要的操作

    三、本地存儲

    對于不怎么發生變化的數據,可以使用本地存儲,減少請求次數。

    注意: 存儲時,若為數組,要對數據類型進行轉換。

    四、狀態管理

    對于復雜組件之間的通訊,可以使用狀態管理。為了方便以后的擴展,所采用的方式與路由類似。

  • stores 文件夾下創建與路由一樣名稱的文件夾,在這些文件夾下新建 index.js 文件,用來寫相關邏輯。
    index.js的代碼:

    還可以做一些簡單的邏輯處理
  • 2. 然后在 stores 文件下的子 index.js 中注冊

    import 名稱 from '文件路徑'; exportdefault new Vuex.Store({ //新增一個modulesmodules : {名稱} });

    3. 使用:
    (1) html中使用: {{$store.state.city.nm}}
    (2) 方法中:

    4. 注意:
    (1) window.localStorage.setItem() 不僅可以創建賦值,還可以設置重新賦值;

    方法名:( nm , id ){this.$store.commit("名稱/CITY_INFO",{ nm , id }) }

    查看:

    (2) 若存儲的數據只有一條時,注意后面不需要加 .字段名

    5. 監聽vuex的變化

    總結

    以上是生活随笔為你收集整理的创建vue项目(三)路由跳转、反向代理、本地存储、状态管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。