5
我正在爲ReactJS編寫Mixin。我希望它做一些驗證,但只有在development mode中使用ReactJS時。如何判斷ReactJS是否處於JavaScript開發模式?
如何從JavaScript確定ReactJS是處於開發還是生產模式?
我正在爲ReactJS編寫Mixin。我希望它做一些驗證,但只有在development mode中使用ReactJS時。如何判斷ReactJS是否處於JavaScript開發模式?
如何從JavaScript確定ReactJS是處於開發還是生產模式?
ReactJS源使用一個名爲__DEV__
的變量來跟蹤這個變量,但它沒有被導出,所以它對你的Mixin不可用。但是,其後果是,例如,當你破壞一個不變量時,開發模式ReactJS會給你一個很好的描述錯誤的描述。在生產模式下,它會給出一個通用錯誤,告訴您使用dev版本。
我們可以用它來構建其確定反應的功能在開發模式:
function isDevReact() {
try {
React.createClass({});
} catch(e) {
if (e.message.indexOf('render') >= 0) {
return true; // A nice, specific error message
} else {
return false; // A generic error message
}
}
return false; // should never happen, but play it safe.
};
這工作,因爲不實施render
方法例外的是不同的兩種模式:
Development: "Invariant Violation: createClass(...): Class specification must implement a `render` method. Inline JSX script:16"
Production: "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings. Inline JSX script:16"
「渲染」這個詞是特定於我們違反的不變量,所以它只在dev版本的異常中出現。
您可以使用webpack設置'__DEV__'變量。 – 2014-09-19 17:35:43
如果您正在編寫Mixin,您可能不希望強制用戶自己重建ReactJS。 – danvk 2014-09-19 17:38:39