[英]Object.freeze during development
請在這里查看代碼
if (process.env.NODE_ENV !== 'production') {
if ('function' === typeof Object.freeze) {
Object.keys(self._routes).forEach(function freezeRoute(name) {
var route = self._routes[name];
Object.freeze(route.config);
Object.freeze(route.keys);
Object.freeze(route);
});
Object.freeze(self._routes);
}
}
為什么在非生產模式下凍結。 是否可以在開發過程中驗證它是否未被修改,但是可以避免生產期間的任何運行時成本?
是的,這正是在添加了此功能的提交中提到的原因:
我們使用
Object.freeze
凍結路由器並為非生產環境路由對象,以確保這些對象的不變性。對於生產環境,建議在構建過程中使用諸如envify和uglify之類的工具來去除[非]生產專用代碼,以提高性能。
我們使用
if (process.env.NODE_ENV !== 'production')
來包裝Object.freeze()
,以便您可以使用各種工具來為不同的環境構建代碼:
他們這樣做的原因是因為Object.freeze
當時的速度很慢 -在這一點上, Object.freeze
的性能影響已經大大減輕了 ( 至少在V8中 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.