根据@param的JSDoc wiki,您可以指示@param是可选的
/**
@param {String} [name]
*/
function getPerson(name) {
}
Run Code Online (Sandbox Code Playgroud)
并且您可以指示内联使用的参数
function getPerson(/**String*/ name) {
}
Run Code Online (Sandbox Code Playgroud)
我可以将它们组合起来,如下所示,它可以正常工作.
/**
@param [name]
*/
function getPerson(/**String*/name) {
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有办法在可能的情况下全部内联.
我在我的项目中使用Grunt(基于任务的JavaScript项目命令行构建工具).我已经创建了一个自定义标记,我想知道是否可以在其中运行命令.
为了澄清,我正在尝试使用Closure模板,"任务"应该调用jar文件将Soy文件预编译为javascript文件.
我从命令行运行这个jar,但是我想把它设置为一个任务.
javascript continuous-integration templates google-closure-compiler gruntjs
我有一个接受一个字符串参数的函数.此参数只能包含一些已定义的可能值.记录相同内容的最佳方法是什么?应该将shapeType定义为enum或TypeDef还是其他什么?
Shape.prototype.create = function (shapeType) {
// shapeType can be "rect", "circle" or "ellipse"...
this.type = shapeType;
};
Shape.prototype.getType = function (shapeType) {
// shapeType can be "rect", "circle" or "ellipse"...
return this.type;
};
Run Code Online (Sandbox Code Playgroud)
问题的第二部分shapeType是在文件中不知道可能的值,它定义shapeType为您建议的任何内容.有几个开发人员提供了多个文件,可能会添加可能的值shapeType.
PS:我正在使用 jsdoc3
code-documentation google-closure google-closure-compiler jsdoc
我正在使用"Closure Compiler",在编译脚本时我会花费以下内容:
编译之前:
// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print,print_input_delimiter
// ==/ClosureCompiler==
var myObj1 = (function() {
var undefined; //<----- declare undefined
this.test = function(value, arg1) {
var exp = 0;
arg1 = arg1 == undefined ? true : arg1; //<----- use declare undefined
exp = (arg1) ? value * 5 : value * 10;
return exp;
};
return this;
}).call({});
var myObj2 = (function() {
this.test = function(value, arg1) {
var exp = …Run Code Online (Sandbox Code Playgroud) YUI Compressor是最小化的最佳工具,但Closure似乎可能更好.
javascript yui-compressor google-closure google-closure-compiler
可能重复:
JavaScript闭包如何工作?
我正在玩Google Closure Compiler,输入随机代码来查看它会做什么.
它重写了我的一个函数,看起来像这样:
(function(msg) { console.log(msg); })("Hello World!");???????
Run Code Online (Sandbox Code Playgroud)
看来它"Hello World"是传递msg给它之前的匿名函数的参数.我看了一会儿,并且认为我在jQuery插件中看到类似的东西:
(function( $ ) {
...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
在与冲突的范围内,现在对我来说更有意义$.但是将参数传递给这样的匿名函数的主要原因或目的是什么?为什么不简单地将参数定义为函数中的变量?编写这样的函数是否有任何性能或灵活性优势?
我很想知道,因为Clojure Compiler和UglifyJS不仅可以优化代码大小而且还可以优化性能(虽然我认为大小是主要优先级),如果我的node.js应用程序被缩小,我的运行速度会更快吗?我知道它可能取决于应用程序,但我一般都会问这个问题.
我有一些用CoffeeScript编写的代码,我想用Google Closure Compiler优化生成的JavaScript,所以这些文件需要用JSDoc记录.
我的问题是,如何记录*.coffee文件以生成包含用于闭包编译器的工作JSDoc的javascript?
还有一个问题:有没有办法在*.coffee中保留单行注释?
我正在研究缩小JavaScript代码的不同方法,包括常规的JSMin,Packer和YUI解决方案.我对新的Google Closure Compiler非常感兴趣,因为它看起来非常强大.
我注意到Dean Edwards打包器有一个功能,可以排除以三个分号开头的代码行.这对于排除调试代码很方便.例如:
;;; console.log("Starting process");
Run Code Online (Sandbox Code Playgroud)
我花了一些时间来清理我的代码库,并希望添加这样的提示以轻松排除调试代码.为此做准备,我想弄清楚这是否是最佳解决方案,或者是否有其他技术.
因为我还没有选择如何缩小,我想以一种与我最终使用的最小化器兼容的方式清理代码.所以我的问题是:
使用分号是一种标准技术,还是有其他方法可以做到这一点?
Packer是唯一提供此功能的解决方案吗?
是否可以采用其他解决方案以这种方式工作,或者他们是否有其他方法来实现这一目标?
我最终可能会开始使用Closure Compiler.现在有什么我应该做的准备吗?
我有很多时间投入到jquery和用它构建的大型应用程序中.最近我一直在审查Google Closure Library,但此时发现它并不像jquery那样优雅.我相信它可能有一些潜力,并会更多地研究它,但是现在我打算继续使用jQuery作为我的基础框架.
但是,我对Google Closure Compiler印象非常深刻.我希望在我的应用程序的构建过程中开始使用它.遗憾的是,将其用于不遵循标准Google Closure标准的项目并不容易.
在开发基于jquery的项目和使用Google Closure Compiler方面是否有任何最佳实践或良好资源?例如:
使用它编译jquery和jquery-ui是否有意义,还是应该继续在google CDN上指向这些资源?我确定我的jquery和jquery-ui会更小,因为我没有使用库的所有功能,但是指向CDN会增加文件已经存在于访问者缓存中的机会.
我的应用程序被拆分成许多文件,每个函数都有一个文件.我想按照特定的顺序将它们组合在一起,并将它们缩小为我网站上每个部分的文件.我想自动化这个过程.
目前我的项目有一个java后端,并使用Maven构建.将Google Closure Compiler添加到此构建过程中是否有意义?
基本上,我正在寻找任何特定于使用Google Closure Compiler和jQuery的优秀资源.
javascript ×8
jsdoc ×3
jquery ×2
minify ×2
coffeescript ×1
compression ×1
gruntjs ×1
node.js ×1
templates ×1
uglifyjs ×1