typescript - 如何在不导入 firebase 模块的情况下访问 Firebase 类型?
问题描述
在我的 web 应用程序中,我使用 CDN 中的 Firebase 来限制从我的帐户传输的数据量,如此处所示。通过使用来自 CDN 的外部脚本,我不必将 firebase 模块与我的代码捆绑在一起,因此我的捆绑包更小。
现在我的问题是,当我在 typescript 中为我的 webapp 编写代码时,我想使用 firebase 提供的类型。在不导入 firebase 模块的情况下如何实现这一点?
解决方案
我找到了一个解决方案:我可以导入 firebase 模块,在 typescript 编译期间使用它,最后通过webpack externals config将它从我的包中排除:
在我的html代码中:
<script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-firestore.js"></script>
<script src="bundle.js"></script>
在我的打字稿代码中:
import firebase from "firebase";
firebase.initializeApp(...
在 webpack.config.js 中:
externals: ["firebase"],
我已经验证我的捆绑包要小得多:从 139kB 到 53kB。
推荐阅读
- javascript - ER_TRUNCATED_WRONG_VALUE,在没有重新加载 MYSQL 的情况下发出 post 请求后 ID 未定义
- python - 循环通过 ROS 包文件消息的矢量化方式
- php - 带有 XML 文件的数据库
- javascript - componentWillUnmount 不运行,因为 webpack 太快或覆盖
- javascript - Typedoc 不会为导入的模块生成 doc
- c++ - 如果 C++ 中没有 printf() 会禁用同步效果时间吗?
- python - Python:如何在 7.7872 中抓取字符串 7.7872
- python - 在 leetcode 中,为什么会出现错误“NameError: global name 'climbStairs' is not defined”?但在没有“自我”和“对象”的情况下工作?
- docker - 将 rasbperry pi 设置为代理服务器(安全)
- python - Python 'guild' 无法转换为 MySQL 类型