【问题标题】:Prevent default addition of deps.js防止默认添加 deps.js
【发布时间】:2017-04-20 16:02:25
【问题描述】:

我正在尝试为我的网络应用程序的 javascript 使用 google 闭包库。我在 static 目录中有我的 JS 脚本以及闭包库:

static/
  app.js
  closure-library

JS 代码使用闭包构建器组合成一个脚本:

static/closure-library/closure/bin/build/closurebuilder.py \
> --root=./static/closure-library/ \
> --namespace="pr" \
> --output_mode=script \
> --output_file=./static/app-calc.js static/app.js 

后端在 Go 中。上面生成的脚本包含在 HTML 中:

<script src="/static/app-calc.js"></script>

但是,一旦页面加载完毕,deps.js 就会在上述脚本标签之后添加到 DOM 中:

<script type="text/javascript" src="deps.js"></script>

由于此文件是在没有任何前面路径的情况下添加的,因此浏览器将使用当前应用程序 URL 加载此脚本。

有没有办法改变这种行为或阻止添加deps.js? 据我所知,由于整个库已合并到一个文件中,因此不需要此文件。关闭 docs 关于 depswriter 提及路径与 base.js 相同,但由于 base.js 甚至不包括在内,我看不出这对应用程序有什么影响。

【问题讨论】:

    标签: javascript google-closure-library


    【解决方案1】:

    Closurebuilder 已被弃用,您应该直接使用闭包编译器。请参阅How to use Google Closure compiler,它涵盖了您的许多问题。关于 Managing Dependencies 的 wiki 页面有当前的详细信息。请注意,仍然有很多关于闭包编译器的旧文档尚未更新,例如https://developers.google.com/closure/library/docs/closurebuilder。其中一些页面仍然相关,但其他页面已过时。 github 上的 wiki 都是最新的。

    deps.js 文件现在仅在直接从源代码运行(无需编译)时用于调试。见https://github.com/google/closure-compiler/wiki/Debugging-Uncompiled-Source-Code

    编译器将能够只获取您正在使用的闭包库片段并将其与您的代码结合起来。

    【讨论】:

    • 我尝试使用带有--dependency_mode 标志的编译器。 deps.js 仍然出现。
    • 你能显示你正在使用的完整编译命令吗?你是什​​么意思“deps.js 仍然出现”?据我所知,生成deps.js 的唯一方法是使用depswriter.pyclosurebuilder.py 之类的python 脚本——你还在使用那些吗?您还可以显示更多的目录结构:源文件在哪里,编译的输出放在哪里?
    【解决方案2】:

    将全局变量或全局对象属性“CLOSURE_NO_DEPS”设置为 true。这将阻止 base.js 尝试加载 deps.js 文件。

    详情见代码: https://github.com/google/closure-library/blob/master/closure/goog/base.js#L19

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多