以下面的示例代碼爲例。什麼是'需求'功能是ReactJS?
require('react-bootstrap-datetimepicker');
...
render: function() {
return <DateTimeField />;
}
的datatimepicker是第三方庫,可以在自己的代碼中使用,但如果我添加一段代碼在JS,螢火蟲會告訴我,需要無法找到。如果我應該翻譯這段代碼或做些什麼?非常感謝
以下面的示例代碼爲例。什麼是'需求'功能是ReactJS?
require('react-bootstrap-datetimepicker');
...
render: function() {
return <DateTimeField />;
}
的datatimepicker是第三方庫,可以在自己的代碼中使用,但如果我添加一段代碼在JS,螢火蟲會告訴我,需要無法找到。如果我應該翻譯這段代碼或做些什麼?非常感謝
的require
功能的目的是單獨的代碼片段(「模塊」)添加到當前的範圍內,一個特徵在ES2015 specification之前,這不是JavaScript/ECMAScript語言的一部分。
因此,此功能不具體到ReactJS,而不是語言的一部分或者,這就是爲什麼Firefox時,你試圖在香草瀏覽器環境中使用它拋出一個錯誤。
使用require
同步加載模塊通常是稱爲CommonJS的方法的一部分(有關模塊格式的更多信息,請參閱this answer)。儘管像Node.js這樣的環境提供了類似於此規範的module API,但瀏覽器不這樣做;所以你必須自己帶上這個功能。
這樣做有很多選擇,您可以選擇最適合您的工作流程和個人品味的選項。但總體而言,模式歸結爲兩種:
<script>
標籤,使裝載機如SystemJS,並立即用它來加載自己的代碼。<script>
標籤加載的結果。捆綁器帶來了自己的模塊加載器。通常,第二個選項更多地針對生產環境,而第一個選項在開發環境中更實用。
你可以做
npm install -g requirejs
然後
var requirejs = require('requirejs');
JS生態系統有幾個競爭的模塊系統,其中一些模塊可以即時工作,一些需要預處理。例如,這個特定的示例將與Browserify工作流一起工作,其中Browserify將「編譯」所有JS文件到一個。 – Amadan