initializeApp(firebaseConfig)与firebase.initializeApp(firebaseConfig)的区别
两种initializeApp写法的差异
这两种写法属于Firebase JS SDK不同版本对应不同导入规范的实现,功能上完全一致,都是用于完成Firebase应用实例的初始化,具体差异如下:
firebase.initializeApp(firebaseConfig)是v8及更早版本的命名空间式写法
v8及之前的SDK采用全量命名空间设计,所有API都挂载在全局firebase对象下。使用前需要全量导入整个firebase包,或者引入对应功能的命名空间模块,调用时必须通过firebase对象访问内部方法,常见用法示例:
这种写法也常见于直接通过CDN引入v8版本SDK的前端项目,引入后直接使用全局暴露的// v8 CommonJS导入写法 const firebase = require('firebase/app') // 调用命名空间下的初始化方法 firebase.initializeApp(firebaseConfig)firebase对象即可。initializeApp(firebaseConfig)是v9及以后版本的模块化写法
从v9版本开始,Firebase官方推出了支持tree-shaking的ES模块化SDK,只需要导入项目实际用到的API即可,无需全量加载整个SDK包,能大幅减小前端项目打包后的体积,也是目前官方主推的用法。
你当前的代码就是采用的这种规范,直接从firebase/firebase-app模块导入单个initializeApp方法后直接调用即可,不需要经过firebase命名空间中转。
如果你不需要兼容老旧版本的Firebase SDK,当前使用的模块化写法是更优的选择,无需调整。
内容的提问来源于stack exchange,提问作者user16620897
相关产品推荐
相关产品推荐

