Next.js 3.0

我們非常興奮地宣布Next.js 3.0的穩(wěn)定版本。自從我們測(cè)試版發(fā)布以來,我們一直在使用它來為zeit.co提供支持,并收到了很多來自我們社區(qū)的反饋和貢獻(xiàn)。

讓我們來看看已經(jīng)改進(jìn)了什么,完全是新的,或者從npm獲取最新版本!

新的Next.js?Next.js是React應(yīng)用程序的零配置單命令工具鏈,具有內(nèi)置的服務(wù)器渲染,代碼分割等功能。看看學(xué)習(xí)Next.js開始吧!

靜態(tài)導(dǎo)出支持

這是GitHub社區(qū)最需要的功能。我們已經(jīng)交付了!

只需將項(xiàng)目導(dǎo)出到一個(gè)帶有.html和.css文件的目錄,就是配置您的項(xiàng)目并運(yùn)行:

$ next export

多產(chǎn)的Next.js社區(qū)已經(jīng)為您提供了一些靜態(tài)的博客生成器來下載:

動(dòng)態(tài)導(dǎo)入支持

Next.js現(xiàn)在完全支持TC39動(dòng)態(tài)導(dǎo)入。

通過動(dòng)態(tài)導(dǎo)入,我們的代碼庫(kù)被分割成一組可以動(dòng)態(tài)加載的塊。開發(fā)人員可以完全控制隨時(shí)間加載代碼,具體取決于用戶交互或數(shù)據(jù)本身。

這很容易使用。只要導(dǎo)入你的模塊作為promise ,如下所示:

const moment = import('moment')
setTimeout(function() {
  moment.then(moment => {
  // Do something with moment
  })
}, 15000)

當(dāng)我們開始使用它時(shí),模塊將被下載。在上面的例子中,moment當(dāng)setTimeout 回調(diào)運(yùn)行時(shí)(頁(yè)面加載后約15秒),模塊將被下載。這加速了我們的主要JavaScript包,只有在我們需要的時(shí)候才加載代碼。

動(dòng)態(tài)React組件

此外,Next.js還附帶了一個(gè)強(qiáng)大的選擇實(shí)用工具,可以幫助您輕松創(chuàng)建動(dòng)態(tài)加載的React組件。 next/dynamic

動(dòng)態(tài)組件可以按需加載React代碼,但最有趣的特性是,如果它們包含在初始渲染中,則服務(wù)器渲染仍然有效!

我們來看一些例子!

import dynamic from 'next/dynamic'
const DynamicComponent = dynamic(import('../components/hello'))

export default () => (
  <div>
    <Header />
    <DynamicComponent />
    <p>HOME PAGE is here!</p>
  </div>
)

加載一個(gè)組件,動(dòng)態(tài)。

import dynamic from 'next/dynamic'

const HelloBundle = dynamic({
  modules: (props) => {
    const components = {
      Hello1: import('../components/hello1'),
      Hello2: import('../components/hello2')
    }
    // you can add / remove components based on props
    return components
  },
  render: (props, { Hello1, Hello2 }) => (
    <div>
      <h1>{props.title}</h1>
      <Hello1 />
      <Hello2 />
    </div>
  )
})

export default () => (
  <HelloBundle title="Dynamic Bundle" />
)

根據(jù)動(dòng)態(tài)屬性加載不同的組件!

直到今天,代碼拆分都是基于路由,或者是用戶加載的應(yīng)用程序部分。展望未來,您將能夠根據(jù)用戶所呈現(xiàn)的數(shù)據(jù)加載代碼。

我們很高興人們用這個(gè)新的范例創(chuàng)建的應(yīng)用程序。

更美麗的錯(cuò)誤

感謝Krisztian Puska,我們已經(jīng)更新了我們的錯(cuò)誤顏色主題,使其在眼睛上更容易,更易于訪問。

顯示一個(gè)語法錯(cuò)誤正在被新的顏色重新加載

改進(jìn)的熱模塊更換

我們已經(jīng)提出了各種各樣的情況,這會(huì)使得HMR(熱模塊替換)在之前無效,特別是在錯(cuò)誤恢復(fù)周圍。

向前發(fā)展,當(dāng)出現(xiàn)任何類型的錯(cuò)誤時(shí),您將能夠更改您的代碼,保存并查看錯(cuò)誤更改,替換為其他錯(cuò)誤或完全消失!

HMR:Node.JS 8.0支持

我們已經(jīng)解決了在新的Node.js 8.x發(fā)行版中使用Next.js時(shí)顯示的開發(fā)工具中的錯(cuò)誤。 ERR_INCOMPLETE_CHUNK_ENCODING


你不會(huì)再看到這一個(gè)!
HMR:導(dǎo)航到錯(cuò)誤

如果您導(dǎo)航到出現(xiàn)任何錯(cuò)誤的頁(yè)面,則會(huì)立即進(jìn)行適當(dāng)?shù)奶??理,呈現(xiàn)錯(cuò)誤消息并使您能夠?qū)崟r(shí)進(jìn)行更正。

們導(dǎo)航到有錯(cuò)誤的索引頁(yè)面,修復(fù)它們并觀察頁(yè)面恢復(fù)。
HMR:404錯(cuò)誤成功

我們已經(jīng)解決了導(dǎo)航到缺失頁(yè)面(正確呈現(xiàn)為404)的錯(cuò)誤,但填充它時(shí)出錯(cuò)。


在我們創(chuàng)建頁(yè)面之后,我們會(huì)引入一個(gè)錯(cuò)誤,然后及時(shí)修復(fù)它。
HMR:更好的壞的回報(bào)

如果您碰巧返回了錯(cuò)誤的類型,我們現(xiàn)在可以順利處理這種情況。


正確的類型返回后,頁(yè)面成功恢復(fù)。
HMR:未定義可以是一個(gè)功能

現(xiàn)在正確地捕捉到評(píng)估模塊時(shí)的任何類型的運(yùn)行時(shí)錯(cuò)誤。實(shí)時(shí)調(diào)試即將到來。 undefined is not a function


我們首先發(fā)生語法錯(cuò)誤,恢復(fù)到運(yùn)行時(shí)錯(cuò)誤,恢復(fù)到頁(yè)面。

更快:無服務(wù)器就緒

啟動(dòng)時(shí)間為基線Next.js應(yīng)用程序現(xiàn)在快了5倍,從1000毫秒降低到200 毫秒。請(qǐng)繼續(xù)關(guān)注與Now無關(guān)的無服務(wù)器Next.js的一些令人興奮的公告!

更小:優(yōu)化的核心包

我們已經(jīng)進(jìn)一步優(yōu)化了核心Next.js包,現(xiàn)在已經(jīng)有10%的精簡(jiǎn)了!只有最重要的生產(chǎn)代碼才包含在您的最終捆綁包中。

4.0和超越

正如我們?cè)谄渌饕姹局笏龅哪菢樱覀儗⒑芸旃_分享我們的Next.js 4.0路線圖。

重點(diǎn)將放在更精簡(jiǎn)的核心上,更快的啟動(dòng)時(shí)間和渲染速度,與React 16的整合以及在開發(fā)過程中更好地使用緩存,以避免重新編譯。

本文翻譯自:https://zeit.co/blog/next3

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,489評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,510評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,866評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,036評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,585評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,331評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,536評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,754評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,273評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,505評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容