gpt4 book ai didi

javascript - Browserify 产生一个*巨大*的输出文件

转载 作者:行者123 更新时间:2023-11-29 21:33:14 27 4
gpt4 key购买 nike

借助node-google模块 我编写了一个简单的 Node 模块来为我的网络应用程序启用“文本网络搜索”功能,并在我的一个 View 中显示结果。
由于在来自同一 IP 的少量查询后 Google 返回 503 错误,我决定在客户端使用该模块,因此限制是针对每个客户端,而不是每个服务器。
我确实使用了 browserify将 Node 模块转换为要在客户端页面中获取的脚本。
该脚本只需要“google.js”,它只有 20 行 javascript 长:

'use strict';
var google = require('google');

var Google = Object.create({});
var Google.search = function(text, callback) {
...
});
// end of the script

我使用的命令很简单:

  $ browserify google-search-module.js -o app/scripts/google-search.js

问题是 browserify 产生的输出比我预期的大:一个 1.2 kB 的模块变成了一个 2.4 MB 的脚本!可能它也包括所有“google”依赖项,但是..,

问题是:这正常吗?我的搜索页面是否应该加载一个 2.4 MB 的文件只是为了在 Google 上搜索一些文本?

我很确定我遗漏了什么,但不明白是什么...... :-(

最佳答案

这是预期的行为。 Browserify递归加载所有使用 require() 导入的模块,并输出单个文件。有很多方法可以解决这个问题,但它们不太可能适用于您的特定情况。

通常情况下,使用 Browserify,您可能会在开发中使用一个巨大的包,但随后构建一个小得多的生产版本。如果您使用的是 jQuery ,例如,您可以将包本地安装到 node_modules 文件夹中。然后,对于生产,您可以设置 --exclude标记让 Browserify 忽略 node_modules 文件夹中的任何内容,而不是依赖 CDN将 jQuery 交付给客户端。

我说这不太可能适用于您的情况,因为 node-google实际上是一个 Node 模块。不能保证它会在浏览器中工作(可能会也可能不会)。在开始计划下一条攻击线之前,您真的应该确定它是否有效。

如果有效,您有两种可能的补救措施:

  1. 缩小您的包并确保它以 gzip 压缩提供。如果您能接受的话,生成的文件大小可能会小于 100kB。

  2. 寻找一些其他模块来进行 Google 搜索,或实现您自己的模块。这可能是最好的解决方案,除非您出于某种原因必须使用 node-google。

当然,如果无论如何都不能在浏览器中运行,则只有第二种解决方案可用。

关于javascript - Browserify 产生一个*巨大*的输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com