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