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).