报错前process.env.NODE_ENV的判断

来源:2-4 render

小郎Lie

2018-11-24

Vue的很多报错都进行了process.env.NODE_ENV !== 'production’的判断,只有在生产环境才会往控制台打日志

if (!(vnode instanceof VNode)) {
      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {
        warn('...') // 省略代码
      }
      vnode = createEmptyVNode()
    }

为什么要每次调用warn前判断而不是统一在warn方法里面判断呢?是为了性能让生产环境少一些逻辑吗?
可是有时候生产环境控制台有日志能更方便排查问题。如果能给用户开一个配置控制生产环境控制台是否打日志岂不是更好。。

写回答

1回答

ustbhuangyi

2018-11-25

process.env.NODE_ENV !== 'production' 在生产环境会编译成 false,然后 if(false) 在压缩代码的时候这部分代码就没了,为了减少运行时的 js boudle。
一般来说,警告类型的错误都应该在开发阶段发现问题,而不应该放到生产环境中解决。

2
1
小郎Lie
非常感谢!
2019-05-07
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程