使用 Vuex 和 vue-router


Vue.js 也有較多周邊技術產品,如 Vuex 和 vue-router 等,這些庫也可以在 Weex 中很好的工作。

我們基於 Weex 和 Vue 開發了一個的完整項目 weex-hackernews ,在項目中使用了 Vuex 和 vue-router ,能夠實現同一份代碼,在 iOS、Android、Web 下都能完整地工作。

使用 Vuex

Vuex

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理工具庫,可以利用 Vue.js 的細粒度數據響應機制來進行高效的狀態更新。它采用集中式存儲管理應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。

由於在 Vuex 本身就是平台無關的,有較強的移植能力,完全可以在 Weex 中正常地使用 Vuex ,閱讀其官方文檔可以了解詳細的使用方法。

Vuex 也集成到了其官方調試工具 devtools extension中,提供了諸如 time-travel 調試、狀態快照導入導出等高級調試功能。這些工具在 Web 平台中可以一如既往地工作。

使用 vue-router

vue-router 是專為 Vue.js 開發的便於實現單頁應用的工具庫,能夠以聲明式的方法編寫頁面的導航和跳轉信息。

由於 Weex 的運行環境不只是瀏覽器,通常是以移動端原生環境為主,然而在 Android 和 iOS 中都沒有瀏覽器的 History API,也不存在 DOM,因此如果想在 Weex 環境中使用 vue-router ,有些功能受到了限制,使用時應該注意。

路由模式

vue-router 提供了三種運行模式:

  • hash: 使用 URL hash 值來作路由。默認模式。
  • history: 依賴 HTML5 History API 和服務器配置。查看 HTML5 History 模式
  • abstract: 支持所有 JavaScript 運行環境,如 Node.js 服務器端。

配置方法是在定義路由時,傳遞 mode 屬性:

new Router({
mode: 'abstract',
// ...
})

從三種模式的介紹中也可以看出來,Weex 環境中只支持使用 abstract 模式。不過,vue-router 自身會對環境做校驗,如果發現沒有瀏覽器的 API,vue-router 會自動強制進入 abstract 模式,所以在使用時只要不寫 mode 配置即可。默認 vue-router 會在瀏覽器環境中使用 hash 模式,在移動端原生環境中使用 abstract 模式。

編程式導航

vue-router 中使用 <router-link> 創建導航鏈接,不過在其中使用了基於 DOM 事件的一些特性,在 Weex 原生環境中並不能很好的工作。在 Weex 中,你必須使用編程式導航來編寫頁面跳轉邏輯。

編程式導航其實就是通過主動調用 router 實例上的 push 方法實現跳轉。

使用 <router-link> 的代碼示例:

<!-- 只能在 Web 中使用,Native 環境不支持! -->
<template>
<div>
<router-link to="profile">
<text>Profile</text>
</router-link>
</div>
</template>

在 Weex 中,需要寫成這個樣子:

<template>
<div>
<text @click="jump">Profile</text>
</div>
</template>
 
<script>
import router from './path/to/router'
export default {
methods: {
jump () {
router.push( 'profile')
}
}
}
</script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM