Object.freeze во время разработки

Пожалуйста, смотрите код здесь

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);
    }
}

зачем зависать в непроизводственном режиме. Нужно ли проверять, что он не изменяется во время разработки, но избегать каких-либо затрат времени выполнения во время производства?

1 ответ

Решение

Да, это именно та причина, которая упоминается в коммите, где эта функциональность была добавлена:

Мы используем Object.freeze заморозить маршрутизатор и маршрутизировать объекты для непроизводственных сред, чтобы обеспечить неизменность этих объектов.

Для производственных сред рекомендуется использовать такие инструменты, как envify и uglify, как часть вашего процесса сборки, чтобы убрать [не] производственный код для повышения производительности.

Мы используем if (process.env.NODE_ENV !== 'production') обернуть Object.freeze(), так что вы можете использовать различные инструменты для создания кода для разных сред:

Они сделали это потому, что Object.freeze был медленным в то время - в этот момент производительность снизилась Object.freeze был значительно смягчен ( по крайней мере, в V8).

Другие вопросы по тегам