區別:Current指的是當前發布的最新node版本,里面包含了最新的功能特性,但會不穩定,會不定期的進行更新優化或者修復問題;而LTS指的是長期支持的node版本,即穩定版,里面包含的功能就是穩定的。
本教程操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
進入到nodejs官網下載https://nodejs.org ,有兩個版本LTS和Current。有什么區別呢?該選哪個呢。當然知道區別就知道要選什么版本了。
LTS和Current區別總結:其實從版本號就可以看出一個新一個老。Current就是當前最新的版本,最新的功能特性都在這里面了。就是拿來給你試用測試的,要是大家都用得還好,功能穩定了,就發布到LTS版本。所以LTS就是穩定版。
下面就扯扯nodejs的版本計劃
Node.js LTS 計劃
Node.js core 在 Node.js 與 io.js 合并后,為了保證發布穩定有序,讓開發者能夠合理安排升級,開始使用 LTS(Long Term Support)來規劃發布周期。第一個 LTS 版本是 v4,發布于 2015 年 10 月。在這個規劃下,Node.js 的版本相當于 master 分支在特定時間下經過穩定化處理的快照,時間到了就將 master 分支上穩定的部分整合起來,發布新的版本,因此 Node.js 的發布是 以時間的流逝為準,在保證兼容性靠攏的前提下跳版本 ,而不是以兼容性和新特性的多少為準,這也解釋了為什么 Node.js 的版本看上去跳得那么快(不是“啊,我們攢了這么多大招,可以發新版了!”而是“啊,四月到了該發版了,我們把攢過的大招過一遍,看有什么夠穩定能加進去的,雖然可能這些招不怎么大就是了……”)。值得一提的是,目前的常青瀏覽器/主流 JavaScript 引擎/ECMAScript 標準/C++ 標準也是采用類似的原則,以時間跨度為基準,從主干上截取穩定特性來進行發布的。
每一個 LTS 都會有一個代號,從元素周期表取元素名,按照字母表排序,挑選出合適的。v4 的代號是 Argon(氬),v6 的代號是 Boron(硼)。
Node.js 的版本命名規則遵循 語義化版本(Semantic Versioning),版本號分為三部分,第一個數字(semver-major)增加,表示有不兼容的改變;第二個數字(semver-minor)增加,表示有保持兼容的新特性;第三個數字(semver-patch)增加,表示有在保持兼容性與特性不變的前提下的改動,比如修復了 bug 或者改進了文檔。這個命名規則有利也有弊,此處不贅述,但它的一些矛盾之處使得 Node.js 的命名有一些例外,比如安全更新即使會導致不兼容,為了能夠更新到所有 major 版本,也依然是 semver-minor。
Node.js 應用開發者怎么選擇?
對于追求穩定性的 Node.js 應用開發者來說,只需要每年十月一個版本成為 active LTS 的時候線上跟進升級即可,也就是每 12 個月升一次 major 版本,每次升級的版本還有 18 個月 + 12 個月的壽命,中間跟進 minor 和 patch 的時候不用太擔心兼容問題。目前的推薦是最好在一個 active LTS 出來的 12 個月內完成線上的升級(因為 12 個月后會出下一個 active LTS)。進度落后的話,妥協到 18 個月,這個 LTS 的 active 時期結束前也可以。再趕不上,起碼要在 30 個月內這個版本結束壽命之前升級完,否則連安全更新也沒有了。
擔心直接升級遇到的兼容問題較多的話,則可以在每年四月偶數版本新出來的時候,提前在線下進行測試和升級準備,將問題反饋到社區(當然如果沒空也不需要管這一步),并不斷跟進,十月再升線上版本。這樣線上下都是 12 個月升一次 major,只不過時間點不同。雖然線下需要跟進的兼容性問題多了一些,但同時也可以通過反饋讓自己的兼容性需求被社區照顧到。
熱衷于嘗試新特性,或者不在生產環境使用的實驗性項目,則可以嘗試每年十月發布的奇數 major 版本。每個奇數版本只會維護 8 個月,而且不會有 LTS 那樣的兼容性保證,但Node.js 的開發者會利用這個版本為下一個 LTS 做準備,因此它會有