簡體   English   中英

開發過程中的對象凍結

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM