2015-09-17 78 views
2

以下面的示例代碼爲例。什麼是'需求'功能是ReactJS?

require('react-bootstrap-datetimepicker'); 

... 

render: function() { 
    return <DateTimeField />; 
} 

的datatimepicker是第三方庫,可以在自己的代碼中使用,但如果我添加一段代碼在JS,螢火蟲會告訴我,需要無法找到。如果我應該翻譯這段代碼或做些什麼?非常感謝

+1

JS生態系統有幾個競爭的模塊系統,其中一些模塊可以即時工作,一些需要預處理。例如,這個特定的示例將與Browserify工作流一起工作,其中Browserify將「編譯」所有JS文件到一個。 – Amadan

回答

2

require功能的目的是單獨的代碼片段(「模塊」)添加到當前的範圍內,一個特徵在ES2015 specification之前,這不是JavaScript/ECMAScript語言的一部分。

因此,此功能具體到ReactJS,而不是語言的一部分或者,這就是爲什麼Firefox時,你試圖在香草瀏覽器環境中使用它拋出一個錯誤。

使用require同步加載模塊通常是稱爲CommonJS的方法的一部分(有關模塊格式的更多信息,請參閱this answer)。儘管像Node.js這樣的環境提供了類似於此規範的module API,但瀏覽器不這樣做;所以你必須自己帶上這個功能。

這樣做有很多選擇,您可以選擇最適合您的工作流程和個人品味的選項。但總體而言,模式歸結爲兩種:

  • 在瀏覽器中明確使用一個模塊加載:使用<script>標籤,使裝載機如SystemJS,並立即用它來加載自己的代碼。
  • 捆綁你的代碼到一個腳本:採用捆綁等BrowserifyWebpack,或JSPM,並使用單一<script>標籤加載的結果。捆綁器帶來了自己的模塊加載器。

通常,第二個選項更多地針對生產環境,而第一個選項在開發環境中更實用。

0

你可以做

npm install -g requirejs 

然後

var requirejs = require('requirejs');