2016-03-12 106 views
1

是不是ES6取代node require()?我有以下代碼:node require()與es6 import:爲什麼這個例子沒有工作

var sprintf = require("sprintf-js").sprintf;

這像宣傳的那樣。我只能使用sprintf()。我想完成同樣使用ES6 import語句:

import sprintf from 'sprintf-js';

這是行不通的。爲什麼不?我該如何解決它?獎勵點數,如果你能解釋sprintf-js內的出口是如何工作的。

+0

你可能需要從「的sprintf JS」做'進口{}的sprintf;' –

回答

7

您可以通過多種方式訪問​​模塊導出。 See the MDN article.

import defaultMember from "module-name"; 
import * as name from "module-name"; 
import { member } from "module-name"; 
import { member as alias } from "module-name"; 
import { member1 , member2 } from "module-name"; 
import { member1 , member2 as alias2 , [...] } from "module-name"; 
import defaultMember, { member [ , [...] ] } from "module-name"; 
import defaultMember, * as name from "module-name"; 
import "module-name"; 

在這種情況下,你的語法會工作,如果你已經分配的sprintf出口爲default;如果您已將sprintf分配給default對象。

假設它不是,正確的語法將在大括號內引用導出的方法。

import { sprintf } from 'sprintf-js'; 
+1

*「將包括一個解構的對象引用的方法」 *請注意,在'import'語句中使用的語法無關做解構。它只是看起來相似。只是爲了防止混淆。 –

+0

啊。有趣的一點。我可能對導入的curlybrace語法有錯誤的印象。我認爲等價的導入就像'resource''中的import {prop:prop},但它顯然不起作用。 – Bosworth99

+0

關於導入的好討論大括號語法:http://stackoverflow.com/questions/31096597/using-brackets-with-javascript-import-syntax – Bosworth99

相關問題