2017-09-27 82 views
2

我只使用nodejs作爲服務器端微服務,我想使用ES6,我已經讀過Babel用於將代碼轉換爲ES5以提供對瀏覽器的支持。所以我需要知道,如果我不是爲客戶端編寫此代碼,我是否仍需要將其編譯爲在V8引擎上運行它?或者它只是一個額外的層,這將不需要在服務器端?我應該使用ES6傳輸我的節點js代碼嗎?

+0

沒有使用ES7可能是要走的路。如果兩個人都能說英語,你爲什麼會和鄰居說西班牙語? –

+0

如果您使用的是ES模塊(即ES6),則仍然需要進行轉儲。另外,你調用'ES6'的東西可能包含由Babel自然轉換但不受Node/V8支持的功能。 – estus

回答

2

如果您的服務器在新版本的Node.js上工作,並且它支持ES6功能,則不需要傳輸代碼。如果代碼託管在一個地方,您的代碼只能在同一個地方工作。

使用轉譯器時,當您的代碼使用新版本編寫時,可能會有使用舊版本Javascript的瀏覽器的用戶。所以瀏覽器需要從宿主位置獲取JS代碼並在本地運行,這可能會導致錯誤。在這種情況下,你需要使用編譯器。

+0

因此,如果我純粹爲服務器端代碼使用nodejs,我不需要傳輸它,我只需要它,如果它在客戶端服務的權利?像一個Angular js代碼來提供一個UI。 – TGW

+0

是的,你抓住它。簡單的JS代碼和客戶端框架必須經過轉換(如果它們不是默認的),因爲它們適用於每個用戶。每個用戶在他/她的瀏覽器中運行它 –

+0

爲什麼你在談論獲取JS代碼的瀏覽器?這個問題表明他們不是。 – Quentin

0

如果您僅將代碼作爲微服務使用,則不需要進行轉發。所有最新版本的Node.js默認支持es6。您可以參考這裏的目的ES6特徵的詳細信息目前由節點

Node.js es6 documentation

4

你需要使用一個transpiler如果你運行時不支持您所使用的語言功能的支持。

最新版本的Node.js有almost complete support for ES6

如果您使用的功能不受您使用的任何版本的Node.js支持,您將需要使用轉譯器。

+0

總結:除尾部調用之外的所有內容。 –

+0

是的,但我可以看到沒有太多不受支持的功能,並且我相信在服務器端微服務中使用ES5來實現這些功能將更具可行性,而不是具有轉譯器。你有什麼建議? – TGW

+0

@TGW - 「but」?這就是我所說的!我不會告訴你,使用這些功能會給您帶來多大的收益,而不會使用轉換器可以節省多少功夫。這只是你可以做出的判斷。 – Quentin

-1

我建議直接在最新的nodejs中使用es es/es7。 現在最新的nodejs幾乎支持除導入/導出以外的大多數功能。

如果是這樣,你可以使用箭頭功能,異步等待等,這可以使你的代碼更清晰。

相關問題