Vuex 4.0 正式發布!新年,官方生態齊聚一堂。

Vuex 4 官方版本正式發布。

Vuex 4 的重點是兼容性。Vuex 4 支持 Vue 3,但是仍然提供了與 Vuex 3 完全相同的 API,因此用戶可以在 Vue 3 中直接復用他們現有的 Vuex 代碼。

下文會把破壞性的改動列出來,請注意查看。

在源碼的 example 文件夾[1]可以看到 Optional 和 Composition API 下的基本用法。

它仍然和 Vue 3 一樣在 NPM 包的 next 標簽下發布,我們計劃在 Vue3 準備好的時候移除 next 標簽。

為了 Vuex 4 的穩定發布,大家齊心協力做出了很多貢獻。非常感謝你們的幫助。若不是有如此出色的 Vue 社區,根本不可能實現這一切!

文檔

請訪問 next.vuex.vuejs.org[2] 查看文檔。

破壞性變動

安裝流程更改

為了和 Vue3 的初始化流程一致,Vuex 的安裝流程有所改動。

我們建議用戶用新的 createStore 函數來建立一個 store 實例。

import?{?createStore?}?from?"vuex";export?const?store?=?createStore({state()?{return?{count:?1,};},
});

同時這在技術上并不是一個破壞性的改動,你依然可以用 new Store(...) 語法,不過我們推薦你用新語法,這樣可以和 Vue3 以及 Vue Router 4 保持一致。

在 Vue 實例上安裝 Vuex,傳遞 store 即可。

import?{?createApp?}?from?"vue";
import?{?store?}?from?"./store";
import?App?from?"./App.vue";const?app?=?createApp(App);app.use(store);app.mount("#app");

構建產物和 Vue3 一致

以下的構建產物可以和 Vue3 的產物保持一致:

  • vuex.global(.prod).js

    • 直接在瀏覽器中使用 <script src="...">,暴露全局 Vuex 變量。

    • 全局構建會被打包成 IIFE,并不是 UMD,僅用于直接使用 <script src="..."> 引入。

    • 包含了硬編碼的 prod/dev 分支判斷,prod.js 是壓縮后的,在生產環境記得使用這個文件。

  • vuex.esm-broswer(.prod).js

    • 為了使用 native ES module imports(需要瀏覽器支持 es module 用法,<script type="module">

  • vuex.esm-bundler.js

    • 為了通過 webpack, rollup, percel 等構建工具使用模塊。

    • 保留 prod/dev 分支判斷和 process.env.NODE_ENV 判斷(這個變量需要被構建工具替換)

    • 并不會提供 minified 版本(構建工具可以引入后一起處理)

  • vuex.cjs.js

    • 為了使用 Node.js 服務端渲染時通過 require() 導入。

類型 ComponentCustomProperties

Vuex 4 移除了為了推導 this.$store 而編寫的全局類型,解決了 issue #994[3],在使用 TypeScript 時,你必須自己手動添加模塊類型聲明。

在項目中使用如下的代碼,this.$store 就可以正確推導:

//?vuex-shim.d.ts
import?{?ComponentCustomProperties?}?from?"vue";
import?{?Store?}?from?"vuex";declare?module?"@vue/runtime-core"?{//?Declare?your?own?store?states.interface?State?{count:?number;}interface?ComponentCustomProperties?{$store:?Store<State>;}
}

核心模塊中導出 createLogger 函數

在 Vuex 3 中, createLogger 函數從 vuex/dist/logger 中導出,現在它被包含在核心包中了,你可以直接這樣導入:

import?{?createLogger?}?from?"vuex";

自 4.0.0-rc.2 以來的 Bug 修復

  • 未導出 storeKey(4ab2947[4])

  • 修復 webpack 中 tree shaking 未生效 (#1906[5]) (#1907[6]) (aeddf7a[7])

原文發布地址

https://github.com/vuejs/vuex/releases/tag/v4.0.0

參考資料

[1]

源碼的 example 文件夾: https://github.com/vuejs/vuex/tree/v4.0.0/examples

[2]

next.vuex.vuejs.org: https://next.vuex.vuejs.org/

[3]

issue #994: https://github.com/vuejs/vuex/issues/994

[4]

4ab2947: https://github.com/vuejs/vuex/commit/4ab294793a2c20ea6040f01f316618682df61fff

[5]

#1906: https://github.com/vuejs/vuex/issues/1906

[6]

#1907: https://github.com/vuejs/vuex/issues/1907

[7]

aeddf7a: https://github.com/vuejs/vuex/commit/aeddf7a7c618eda7f316f8a6ace8d21eb96c29ff

推薦閱讀

若川知乎高贊:有哪些必看的 JS庫?
我在阿里招前端,我該怎么幫你?(現在還可以加模擬面試群)
如何拿下阿里巴巴 P6 的前端 Offer
如何準備阿里P6/P7前端面試--項目經歷準備篇
大廠面試官常問的亮點,該如何做出?
如何從初級到專家(P4-P7)打破成長瓶頸和有效突破
若川知乎問答:2年前端經驗,做的項目沒什么技術含量,怎么辦?

末尾

你好,我是若川,江西人,歷時一年只寫了一個學習源碼整體架構系列~(點擊藍字了解我)

  1. 關注若川視野,回復"pdf" 領取優質前端書籍pdf,回復"1",可加群長期交流學習

  2. 我的博客地址:https://lxchuan12.gitee.io?歡迎收藏

  3. 覺得文章不錯,可以?分享、點贊、在看?呀^_^另外歡迎留言交流~

小提醒:若川視野公眾號面試、源碼等文章合集在菜單欄中間【源碼精選】按鈕,歡迎點擊閱讀,也可以星標我的公眾號,便于查找

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276201.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276201.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

原生js實現給指定元素的后面追加內容

參考鏈接&#xff1a;http://www.jb51.net/article/35412.htm 原生js實現給指定元素的后面追加內容 var header1 document.getElementById("header"); var p document.createElement("p"); // 創建一個元素節點 insertAfter(p,header1); // 因為js沒有…

文檔中根元素后面的標記格式必須正確。

文檔中根元素后面的標記格式必須正確。 php或其它語言動態輸出的xml&#xff0c;最開始<標記 前面有空格&#xff0c;最后面>標記 后面有 空格 導致xml解析出錯 解決辦法: var data:String evt.target.data;//兼容FireFox, php輸出的xml data data.substr(data…

lstm數學推導_如何在訓練LSTM的同時訓練詞向量?

你本來也不用自己手動進行詞向量更新啊&#xff0c;你搞這么一出最后收斂到0那不是必然的么&#xff1f; 霍華德 老師的答案已經給你推導出來了。實際上你問的這個問題很簡單——只要把Embedding層本身也當成模型參數的一部分就可以了&#xff0c;一開始不使用外部詞向量&#…

Javascript在頁面加載時的執行順序(轉載)

原文&#xff1a;http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/ 一、在HTML中嵌入Javasript的方法 直接在Javascript代碼放在標記對<script>和</script>之間由<script />標記的src屬性制定外部的js文件放在事件處理程序中&a…

TClientDataSet[27]: 字段值的約束(或叫輸入限制)

Required、Precision、MaxValue、MinValue:begin{ Required: 必填字段 }with TIntegerField.Create(Self) do beginFieldName : ID;Required : True;DataSet : ClientDataSet1;end;{ Precision: 浮點數精度}with TFloatField.Create(Self) do beginFieldName : Float;Precision…

年度總結文章的抽獎結果公布

大家好&#xff0c;我是若川。2月4日&#xff0c;發表了我的2020年度總結文章《若川的2020年度總結&#xff0c;水波不興》&#xff0c;本以為閱讀量應該突破一千會比較快&#xff0c;實際上比較艱難&#xff0c;而且還掉粉10來人。2020年運營公眾號以來&#xff0c;不知不覺發…

php 正則表達式 匹配中日韓字符(GBK)

轉載鏈接&#xff1a;http://www.cnblogs.com/ITEagle/archive/2013/01/14/2859775.html 首先是這些非英文字符的編碼范圍&#xff1a; 這里是幾個主要非英文語系字符范圍 2E80&#xff5e;33FFh&#xff1a;中日韓符號區。收容康熙字典部首、中日韓輔助部首、注音符號、日本假…

linux多線程求和_linux 多線程信號處理總結

linux 多線程信號總結(一)1. 在多線程環境下&#xff0c;產生的信號是傳遞給整個進程的&#xff0c;一般而言&#xff0c;所有線程都有機會收到這個信號&#xff0c;進程在收到信號的的線程上下文執行信號處理函數&#xff0c;具體是哪個線程執行的難以獲知。也就是說&#xff…

Elon Musk

人物事件 成長學習 1971年6月28日&#xff0c;埃隆馬斯克在南非的比勒陀利亞出生&#xff0c;他的 埃隆馬斯克 父親是一名南非機電工程師&#xff0c;母親是加拿大人&#xff0c;從事營養師兼模特。[8] 1981年&#xff0c;10歲的馬斯克就擁有了自己的第一臺電腦&#xff0c;并…

真誠推薦這7個大佬的公眾號,碎片化學習

逆水行舟&#xff0c;不進則退。我們的工作已經占用了大塊的時間了&#xff0c;剩下的只有各種碎片&#xff0c;最適合碎片時間學習的&#xff0c;莫過于優質的技術干貨公眾號啦~以下這些是小編精選&#xff0c;里面有很多資訊和資源&#xff0c;內含干貨&#xff0c;希望能給大…

[轉]Windows 7 產品密鑰是否安全

提到Windows 7&#xff08;或Windows Server 2008&#xff09;有些人認為自己的產品密鑰&#xff08;Product Key&#xff09;很安全&#xff0c;甚至在公司內部有些網管也認為公司部署的Windows 7 系統的密鑰不會泄露。但其實并非如此&#xff0c;眾所周知我們的密鑰都是寫在注…

HttpWatch的Result中出現Aborted的原因分析[配圖]

轉載鏈接&#xff1a;http://www.cnblogs.com/yutiansanshou/archive/2013/02/01/2889486.html 我們在使用HttpWatch進行Web調試的過程中有時候會看到非HTTP Status Code&#xff08;狀態碼&#xff09;的值&#xff0c; 例如&#xff1a;(Aborted)。 (Aborted)是HttpWatch中定…

android顯示布局邊界的邊距_Android設計規范 Material Design-Layout(2 度量與邊框)

度量與邊框基準網絡所有組件都與間隔為8dp的基準網格對齊。排版/文字(Type)與間隔為4dp的基準網格對齊。在工具條中的圖標同樣與間隔為4dp的基準網格對齊。這些規則適用于移動設備、平板設備以及桌面應用程序。有關詳細信息請參見組件一節。有關詳細信息請參見字體排版一節。邊…

《大規模分布式系統架構與設計實戰》

《大規模分布式系統架構與設計實戰》 基本信息 作者&#xff1a; 彭淵 叢書名&#xff1a; 大數據技術叢書 出版社&#xff1a;機械工業出版社 ISBN&#xff1a;9787111455035 上架時間&#xff1a;2014-2-21 出版日期&#xff1a;2014 年2月 開本&#xff1a;16開 頁碼&…

WINDOWS下的squid

今天寫這篇教程目的在于分享自己在WINDOWS主機下配置squid的方法。哪些地方寫的不完善或是不完整或是需要修改的地方&#xff0c;大家可以提出。我會第一時間糾正。下面看正文部分。先提條件&#xff0c;您預安裝配置squid的這臺計算機必須是聯入網絡的&#xff0c;系統版本是w…

Provide/inject 真的可以取代 Vuex 嗎?

Hello&#xff0c;各位小伙伴&#xff0c;接下來的一段時間里&#xff0c;我會把我的課程《Vue.js 3.0 核心源碼解析》中問題的答案陸續在我的公眾號發布&#xff0c;由于課程的問題大多數都是開放性的問題&#xff0c;所以我的答案也不一定是標準的&#xff0c;僅供你參考喔。…

php 計算代碼執行時間

轉載鏈接&#xff1a;http://blog.csdn.net/php_boy/article/details/6450678 class runtime {var $StartTime 0;var $StopTime 0;function get_microtime(){list($usec, $sec) explode( , microtime());return ((float)$usec (float)$sec);}function start(){$this->S…

參數方程求二階偏導_偏微分方程

常微分方程&#xff08;ODE&#xff09; 的時候我們更多是關于時間的導數。偏微分方程&#xff08;partial differential equation) 則不僅僅是與時間相關&#xff0c;加上了與空間位置相關的一些信息。解當 ODE 滿足 利普希茨連續&#xff08;Lipschitz continuity&#xff09…

Spring Batch 批量處理策略

為了幫助設計和實現批量處理系統&#xff0c;基本的批量應用是通過塊和模式來構建的&#xff0c;同時也應該能夠為程序開發人員和設計人員提供結構的樣例和基礎的批量處理程序。當你開始設計一個批量作業任務的時候&#xff0c;商業邏輯應該被拆分一系列的步驟&#xff0c;而這…

CString原理介紹

看了很多人寫的程序,包括我自己寫的一些代碼&#xff0c;發現很大的一部分bug是關于MFC類中的CString的錯誤用法的.出現這種錯誤的原因主要是對CString的實現機制不是太了解。 CString是對于原來標準c中字符串類型的一種的包裝。因為&#xff0c;通過很長時間的編程&#xff0c…