- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想将闭包编译器集成到一个大型 java 应用程序中。
我有一个问题。闭包编译器替换了 <
与 \x3c
和 >
与 \x3e
我要编译的脚本是
$('#something').append($('<div></div>').text('hi'));
闭包编译器返回
$("#something").append($("\x3cdiv\x3e\x3c/div\x3e").text("hi"));
然而,当我在官方演示网站上测试闭包编译器时:https://closure-compiler.appspot.com/home < 和 > 字符未更改。
是否有禁用它的选项?
这是我的java代码:
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import com.google.javascript.jscomp.CheckLevel;
import com.google.javascript.jscomp.CompilationLevel;
import com.google.javascript.jscomp.Compiler;
import com.google.javascript.jscomp.CompilerOptions;
import com.google.javascript.jscomp.PropertyRenamingPolicy;
import com.google.javascript.jscomp.SourceFile;
import com.google.javascript.jscomp.VariableRenamingPolicy;
import com.google.javascript.jscomp.WarningLevel;
public class ClosureCompiler {
public static void main(String args[]) {
String code = "$('#something').append($('<div></div>').text('hi'));";
String outputFilename = "a.txt";
Compiler.setLoggingLevel(Level.OFF);
Compiler compiler = new Compiler();
CompilerOptions compilerOptions = new CompilerOptions();
compilerOptions.checkGlobalThisLevel = CheckLevel.OFF;
compilerOptions.closurePass = false;
compilerOptions.coalesceVariableNames = true;
compilerOptions.collapseVariableDeclarations = true;
compilerOptions.convertToDottedProperties = true;
compilerOptions.deadAssignmentElimination = true;
compilerOptions.flowSensitiveInlineVariables = true;
compilerOptions.foldConstants = true;
compilerOptions.labelRenaming = true;
compilerOptions.removeDeadCode = true;
compilerOptions.optimizeArgumentsArray = true;
compilerOptions.setAssumeClosuresOnlyCaptureReferences(false);
compilerOptions.setInlineFunctions(CompilerOptions.Reach.LOCAL_ONLY);
compilerOptions.setInlineVariables(CompilerOptions.Reach.LOCAL_ONLY);
compilerOptions.setRenamingPolicy(VariableRenamingPolicy.LOCAL, PropertyRenamingPolicy.OFF);
compilerOptions.setRemoveUnusedVariables(CompilerOptions.Reach.LOCAL_ONLY);
System.out.println(compilerOptions.convertToDottedProperties);
CompilationLevel.SIMPLE_OPTIMIZATIONS.setOptionsForCompilationLevel(compilerOptions);
WarningLevel.DEFAULT.setOptionsForWarningLevel(compilerOptions);
List<SourceFile> primaryJavascriptFiles = new ArrayList<SourceFile>();
primaryJavascriptFiles.add(SourceFile.fromCode(outputFilename, code));
compiler.compile(new ArrayList<SourceFile>(), primaryJavascriptFiles, compilerOptions);
System.out.println(compiler.toSource());
}
}
谢谢
最佳答案
此选项由 CompilerOptions#setTrustedStrings
控制。这默认为“false”,但由命令行运行程序设置为“true”。当编译器“动态”使用不受控制的输入时,此选项很有用,恶意代理可能会注入(inject)脚本标签,从而使他们能够控制页面。那就是将用户数据注入(inject) javascript。如果不是这种情况,您可以设置受信任的字符串。
关于javascript - Closure Compiler 将 < 替换为\x3c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38225928/
我在运行 compile test:compile it:compile经常并且...希望将击键次数减少到类似 *:compile 的数量。 .不过,它似乎不起作用。 $ sbt *:compile
有人可以给我这个问题的提示(或整个解决方案!): 在 Clojurescript 项目中,如何自动将编译日期/时间硬编码在符号中,以便在使用应用程序时显示? 谢谢。 最佳答案 有多种解决方案: 使用l
我是 ember.js 框架的新手,使用 ruby on rails 和 ember.debug.js -v 1.10.1(最新版本)。我一直在网上看到 ember 更改了这个最新的补丁,但我不知
我不是 Fortran 程序员(只是短暂的经验),但我需要编译一个部分用 F77 编写的程序。在我之前有人用 Absoft 编译器编译过它,但现在我需要在另一台机器上用 g77 重复这个过程。对于 A
我运行命令 mvn clean package 我得到了上面的错误我的 pom 是: http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
我有以下问题。 我想在测试编译阶段排除一些.java文件(** / jsfunit / *。java),另一方面,我想在编译阶段包括它们(id我使用tomcat启动tomcat:运行目标) ) 我的p
符合 wikipedia A compiler is a computer program (or set of programs) that transforms source code writt
我想构建项目,但出现如下错误: 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile
当我通过右键单击项目名称进行 Maven 安装时,出现以下错误: [INFO] Scanning for projects... [WARNING] [WARNING] Some proble
我是 Maven 的新手,我想将我的应用程序导入到 Maven。和以前一样,我想将我的 ejb 项目中的类引用到我的 war 项目中。我在类中没有错误,但是如果我在我的父项目上安装 maven,那么我
当我将 ASP.NET Web 应用程序部署到生产环境时,我使用配置转换来删除 debug="true"来自 .但是,就在今天,我注意到 web.config 中的另一个部分如下所示:
This question already has answers here: Maven Compilation Error: (use -source 7 or higher to enable
我正在使用 Maven 3.0.5 和 Spring Tool Source 3.2 并安装了 Maven 插件。当我尝试执行“运行方式---> Maven 安装”时,出现以下错误: [INFO] S
我试图用 AngularJS 创建我自己的递归指令,它调用自己以漂亮的 JSON 格式转换 View 中的对象。好吧,首先我使用 ng-include 调用带有模板的脚本,在其中使用 ng-if 验证
可以通过 @suppress annotation使用Google的Closure Compiler在每个文件的基础上禁止显示警告。但是,似乎无法同时抑制多个警告-例如globalThis和check
假设一个拥有 10 到 20 年经验的熟练开发人员从未构建过编译器或模拟器,哪一个会更具挑战性? 你能比较一下会成为障碍的问题吗? 谢谢。 最佳答案 仿真和编译是完全不同的,但由于两者都被认为是“低级
最近发现Vim中有一个命令叫compiler。您可以使用任何常见的编译器(例如,:compiler gcc、:compiler php 等)来调用它,但它似乎没有任何立竿见影的效果。 我在联机帮助页上
我试图从 spring.io 指南中部署最简单的应用程序 Guide 但是我有一些麻烦.. 我做了什么: 创建的项目。 (来自 spring.io 教程) 下载 heroku CLI 在 Intell
每当进行 Maven Build..>clean install 时,我都会遇到此错误。我尝试过使用不同版本的插件并添加 testFailureIgnore 属性,但问题仍然存在。请找到下面的 POM
我有一个 web 应用程序,我尝试使用 maven 进行编译,不幸的是,在执行 mvn clean package 时它不起作用。 stackoverflow 上有很多问题看起来都一样,但没有解决了我
我是一名优秀的程序员,十分优秀!