最近我发现了一个很酷的东西,叫做Google Closure Compiler。是否有类似的替代品,可以提供静态类型语言编译所带来的好处?
更新
这不是关于真正的编译器,而是关于JavaScript-JavaScript翻译器,它们提供类型验证等功能、优化和可能的压缩。
最近我发现了一个很酷的东西,叫做Google Closure Compiler。是否有类似的替代品,可以提供静态类型语言编译所带来的好处?
更新
这不是关于真正的编译器,而是关于JavaScript-JavaScript翻译器,它们提供类型验证等功能、优化和可能的压缩。
根据你的评论:
我对类型检查、接口检查、私有字段检查等感兴趣,所有这些都可以让你编写安全的代码,而不仅仅是最小化。
JavaScript 是一种动态类型语言,没有内置支持类、接口或访问修饰符。Closure Compiler 通过使用嵌入在 JSDoc 注释中的信息支持各种特殊功能,例如接口和访问修饰符。几个 IDE 也使用 JSDoc 标签信息提供静态分析,例如,请参见 WebStorm & PhpStorm 博客:5.0 新功能:Google Closure Compiler JSDoc 注释。
在 JavaScript 压缩器领域,有诸多选择,例如YUI Compressor、UglifyJS、dojo shrinksafe、Microsoft Ajax Minifier 和 JSMIN。然而,这些工具都不提供与 Closure Compiler 相同水平的基于 JSDoc 的分析支持。
相关的 stack overflow 问题:
AliasExternals.java 别名外部
AliasStrings.java 别名字符串
AmbiguateProperties.java 模糊属性
AnalyzeNameReferences.java 分析名称引用
AnalyzePrototypeProperties.java 分析原型属性
AstValidator.java Ast验证器
CallGraph.java 调用图
ChainCalls.java 链式调用
CheckConformance.java 检查符合性
CheckDebuggerStatement.java 检查调试器语句
CheckEventfulObjectDisposal.java 检查有事件的对象处理
CheckGlobalNames.java 检查全局名称
CheckMissingGetCssName.java 检查缺少getCssName
CheckRegExp.java 检查正则表达式
CheckSideEffects.java 检查副作用
ClosureCodeRemoval.java 闭包代码移除
ClosureOptimizePrimitives.java 闭包优化基元
CollapseAnonymousFunctions.java 折叠匿名函数
CollapseProperties.java 折叠属性
CollapseVariableDeclarations.java 折叠变量声明
ConstCheck.java 常量检查
ConstParamCheck.java 常量参数检查
ConvertDeclaredTypesToJSDoc.java 将声明类型转换为JSDoc
ConvertToDottedProperties.java 转换为点属性
ConvertToTypedES6.java 转换为类型化的ES6
CoverageInstrumentationPass.java 覆盖率仪器传递
CreateSyntheticBlocks.java 创建合成块
CrossModuleCodeMotion.java 跨模块代码运动
CrossModuleMethodMotion.java 跨模块方法运动
DeclaredGlobalExternsOnWindow.java 在窗口上声明全局外部
DefaultPassConfig.java 默认传递配置
Denormalize.java 反归一化
DisambiguateProperties.java 消除属性歧义
ErrorPass.java 错误传递
Es6ToEs3ClassSideInheritance.java ES6到ES3类侧继承
ExpandJqueryAliases.java 扩展JQuery别名
ExportTestFunctions.java 导出测试函数
ExternExportsPass.java 外部导出传递
ExtractPrototypeMemberDeclarations.java 提取原型成员声明
FlowSensitiveInlineVariables.java 流敏感内联变量
FunctionNames.java 函数名称
FunctionRewriter.java 函数重写器
GatherExternProperties.java 收集外部属性
GatherRawExports.java 收集原始导出
GenerateExports.java 生成导出
GlobalNamespace.java 全局命名空间
GlobalTypeInfo.java 全局类型信息
GroupVariableDeclarations.java 组变量声明
ImplicitNullabilityCheck.java 隐式可为空性检查
InferConsts.java 推断常量
InjectEs6RuntimeLibrary.java 注入ES6运行时库
InlineFunctions.java 内联函数
InlineObjectLiterals.java 内联对象文字
InlineProperties.java 内联属性
InlineVariables.java 内联变量
InstrumentFunctions.java 仪器函数
JsMessageVisitor.java Js消息访问者
MarkNoSideEffectCalls.java 标记无副作用调用
MethodCompilerPass.java 方法编译器传递
MinimizeExitPoints.java 最小化退出点
NameAnalyzer.java 名称分析器
NameAnonymousFunctions.java 命名匿名函数
NameAnonymousFunctionsMapped.java 命名匿名函数映射
NameReferenceGraphConstruction.java 名称引用图构建
NewTypeInference.java 新类型推断
Normalize.java 归一化
ObjectPropertyStringPostprocess.java 对象属性字符串后处理
ObjectPropertyStringPreprocess.java 对象属性字符串预处理
OptimizeArgumentsArray.java 优化参数数组
OptimizeCalls.java 优化调用
OptimizeParameters.java 优化参数
PeepholeOptimizationsPass.java 窥视孔优化传递
PhaseOptimizer.java 阶段优化器
PrepareAst.java 准备AST
ProcessCommonJSModules.java 处理CommonJS模块
ProcessDefines.java 处
是的,
有Java、JS、PHP、CSS和HTML的"压缩器"。 例如,当您使用Google GWT Java进行编程时,代码会生成为JS的最小化。
新消息:
您是否尝试过在专门的IDE中编写JavaScript代码? 如果您正在寻找类型检查,可以尝试以下之一:
它们现在具有更好的支持,不仅支持PHP,还支持JavaScript,具有代码自动完成、类型验证、动态语法高亮、多语言语法高亮和面向对象分析以及随打随完成功能。