vue規模化
路由
官方路由
對於大多數單頁面應用,都推薦使用官方支援的 vue-router 庫
從零開始簡單的路由
如果只需要非常簡單的路由而不需要引入整個路由庫,可以動態渲染一個頁面級的元件像這樣:
const NotFound = { template: `<p>Page not found</p>` }
const Home = { template: `<p>home page</p>` }
const About = { template: `<p>about page</p>` }
const routes = {
`/`: Home,
`/about`: About
}
new Vue({
el: `#app`,
data: {
currentRoute: window.location.pathname
},
computed: {
ViewComponent () {
return routes[this.currentRoute] || NotFound
}
},
render (h) { return h(this.ViewComponent) }
})
結合HTML5 History API可以建立一個非常基本但功能齊全的客戶端路由器
整合第三方路由
如果有非常喜歡的第三方路由,如 Page.js 或者 Director,整合很簡單
狀態管理
類Flux狀態管理的官方實現
由於多個狀態分散的跨越在許多元件和互動間各個角落,大型應用複雜度也經常逐漸增長。為了解決這個問題,Vue提供vuex:我們有受到Elm啟發的狀態管理庫。vuex甚至整合到vue-devtools,無需配置即可訪問時光旅行
React的開發者可參考以下資訊
來自React 的開發者,可能會對Vuex和Redux間的差異表示關注,Redux是React生態環境中最流行的Flux實現。Redux事實上無法感知檢視層,所以它能夠輕鬆的通過一些簡單繫結和Vue一起使用。Vuex區別在於它是一個專門為Vue應用所設計。這使得它能夠更好地和Vue進行整合,同時提供簡潔的API和改善過的開發體驗
簡單狀態管理起步使用
經常被忽略的是,Vue應用中原始資料物件的實際來源–當訪問資料物件時,一個Vue例項只是簡單的代理訪問。所以,如果有一處需要被多個例項間共享的狀態,可以簡單地通過維護一份資料來實現共享:
const sourceOfTruth = {}
const vmA = new Vue({
data: sourceOfTruth
})
const vmB = new Vue({
data: sourceOfTruth
})
現在當sourceOfTruth發生變化,vmA和vmB都將自動的更新引用它們的檢視。子元件們的每個例項也會通過this.$root.$data去訪問。現在我們有了唯一的實際來源,但是,任何時間,我們應用中的任何部分,在任何資料改變後,都不會留下變更過的記錄。為了解決這個問題,採用一個簡單的store模式:
var store = {
debug: true,
state: {
message: `Hello!`
},
setMessageAction (newValue) {
if (this.debug) console.log(`setMessageAction triggered with`, newValue)
this.state.message = newValue
},
clearMessageAction () {
if (this.debug) console.log(`clearMessageAction triggered`)
this.state.message = ``
}
}
需要注意,所有store中state的改變,都放置在store自身的action中去管理。這種集中式狀態管理能夠被更容易地理解哪種型別的mutation將會發生,以及它們是如何被觸發。當錯誤出現時,我們現在也會有一個log記錄bug之前發生了什麼。此外,每個例項/元件仍然可以擁有和管理自己的私有狀態:
var vmA = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
var vmB = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
重要的是,不應該在action中替換原始的狀態物件–元件和store需要引用同一個共享物件,mutation才能夠被觀察
接著我們繼續延伸約定,元件不允許直接修改屬於store例項的state,而應執行action來分發(dispatch)事件通知store去改變,最終達成了Flux架構。這樣約定的好處是能夠記錄所有store中發生的state改變,同時實現能做到記錄變更(mutation)、儲存狀態快照、歷史回滾/時光旅行的先進的除錯工具
服務端渲染
SSR完全指南
在2.3釋出後我們釋出了一份完整的構建Vue服務端渲染應用的指南。這份指南非常深入,適合已經熟悉Vue, webpack和Node.js開發的開發者閱讀
Nuxt.js
從頭搭建一個服務端渲染的應用是相當複雜的。幸運的是,我們有一個優秀的社群專案Nuxt.js讓這一切變得非常簡單。Nuxt是一個基於Vue生態的更高層的框架,為開發服務端渲染的Vue應用提供了極其便利的開發體驗。更酷的是,甚至可以用它來做為靜態站生成器
相關文章
- 如何貫徹規模化敏捷?敏捷
- 攀登規模化的高峰 - 螞蟻集團大規模 Sigma 叢集 ApiServer 優化實踐APIServer優化
- 人工智慧報告:規模化人工智慧
- 銀行規模化敏捷的窘境敏捷
- 北京辦公室出租,規模化平臺
- MongoDB規模化的設計模式MongoDB設計模式
- 運籌優化(十三)--大規模優化方法優化
- 如何領導規模化敏捷變革?敏捷
- 敏捷規模化框架的思考-再談Spotify敏捷框架
- 規模化執行敏捷:三大挑戰敏捷
- 規模化敏捷LeSS(二):LeSS*隊實踐指南敏捷
- 規模化敏捷LeSS(二):LeSS團隊實踐指南敏捷
- Serverless 如何在阿里巴巴實現規模化落地?Server阿里
- 高德最佳實踐:Serverless 規模化落地有哪些價值?Server
- hbase大規模資料寫入的優化歷程優化
- CoCoA:大規模機器學習的分散式優化通用框架機器學習分散式優化框架
- 定製龍頭索菲亞養成記:專業化、規模化、個性化
- 【Vue專案總結】webpack常規打包優化方案VueWeb優化
- 規模化敏捷 LeSS(三):LeSS Huge 是怎樣煉成的?敏捷
- SAFe敏捷框架下的工具,實現規模化敏捷開發敏捷框架
- 效能工具如何在企業規模化落地?|線上沙龍回顧
- 通過規模化Scrum創造最新技術的印表機Scrum
- CoCoA:大規模機器學習的分散式最佳化通用框架機器學習分散式框架
- 資訊化建設中的 複雜度 規模 度量問題複雜度
- 規模化敏捷沒準備好,就別想數字化轉型成功了敏捷
- myvue 模擬vue核心原理Vue
- 專案規模的界定!
- 軟體規模與自重
- 5步實現規模化的Kubernetes CI/CD 流水線
- Netflix實戰指南:規模化時序資料儲存
- etcd 在超大規模資料場景下的效能優化優化
- 規模化執行容器時的最佳資料儲存路徑
- 德勤釋出《AI案例精選》助力AI規模化應用AI
- 大規模服務網格效能優化 | Aeraki xDS 按需載入優化
- 自動應用廣告藉機器學習之力讓規模化營銷事半功倍機器學習
- PIX SOLUTION | 如何助力全球低速自動駕駛市場規模化落地自動駕駛
- Apache RocketMQ 在阿里雲大規模商業化實踐之路ApacheMQ阿里
- Criteo在大規模資料工程最佳化上經驗 - Nam