我正在研究 Google 的样式表重命名功能,但我不确定如何重写我的 jquery 选择器。我没有发现文档很清楚。
如果我有一些看起来像这样的代码:
<div class="MyClass"></div>
<div id="MyID"></div>
$('.MyClass').someFunc();
$('#MyID').someFunc();
必须如何编写 HTML 和 javascript 才能使 CSS 重命名起作用?
感谢您的建议。
我正在研究 Google 的样式表重命名功能,但我不确定如何重写我的 jquery 选择器。我没有发现文档很清楚。
如果我有一些看起来像这样的代码:
<div class="MyClass"></div>
<div id="MyID"></div>
$('.MyClass').someFunc();
$('#MyID').someFunc();
必须如何编写 HTML 和 javascript 才能使 CSS 重命名起作用?
感谢您的建议。
要让 Closure-stylesheets 与 jQuery 等外部库结合使用,您还需要使用 Closure-library 来添加对goog.getCssName
. 但是,由于 Closure-Library 是为了最大限度地利用 Closure-compiler 的死代码消除而编写的,因此最终输出中只会包含非常少量的库代码(本例中约为 1KB)。
您将需要以下工具:
@def BG_COLOR rgb(235, 239, 249);
@def DIALOG_BORDER_COLOR rgb(107, 144, 218);
@def DIALOG_BG_COLOR BG_COLOR;
.MyClass {
background-color: BG_COLOR;
height:100px;
}
#MyId {
background-color: DIALOG_BG_COLOR;
border: 1px solid DIALOG_BORDER_COLOR;
height:100px;
}
{namespace ClosureSample}
/**
* SampleHtml
*/
{template .SampleHtml autoescape="false"}
<div class="{css MyClass}"></div>
{/template}
goog.require('ClosureSample');
document.write(ClosureSample.SampleHtml());
$(function() {
$('.' + goog.getCssName('MyClass')).css('background-color', 'pink');
});
<!DOCTYPE html>
<html>
<head>
<title>Closure stylesheets with External Library</title>
<link rel="Stylesheet" media="all" href="sample.css" />
<script type="text/javascript" src="sample_renaming_map.js"></script>
<script type="text/javascript" src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
<script type="text/javascript">
goog.require('goog.soy');
goog.require('goog.string.StringBuffer');
</script>
<script type="text/javascript" src="soyutils_usegoog.js"></script>
<script type="text/javascript" src="sample-templates.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript" src="sample.js"></script>
<div id="MyId"></div>
</body>
</html>
使用从模板和样式表项目下载的工具,您需要编译sample.gss
和sample.soy
文件。这是用于此示例的命令:
java -jar closure-stylesheets.jar \
--pretty-print \
--output-file sample.css \
--output-renaming-map-format CLOSURE_UNCOMPILED \
--rename CLOSURE \
--output-renaming-map sample_renaming_map.js \
sample.gss
java -jar SoyToJsSrcCompiler.jar \
--shouldProvideRequireSoyNamespaces \
--shouldGenerateJsdoc \
--outputPathFormat {INPUT_FILE_NAME_NO_EXT}.js \
--cssHandlingScheme goog \
sample.soy
使用这些文件,您可以在开发期间测试重命名。请参阅示例。
首先使用“CLOSURE_COMPILED”选项重新编译样式表以生成重命名映射:
java -jar closure-stylesheets.jar \
--output-file sample.css \
--output-renaming-map-format CLOSURE_COMPILED \
--rename CLOSURE \
--output-renaming-map sample_renaming_map.js \
sample.gss
然后,您需要计算 Closure-library 依赖文件并将所有源 javascript 文件编译到一个源中。
注意:由于 jQuery 与 Closure-compiler 的 ADVANCED_OPTIMIZATIONS 不兼容,因此它不会作为输入包含在内。相反,请参考在Closure-compiler contrib/externs文件夹中找到的适当的jQuery extern 文件。
Closure-library 项目中的 calcdeps.py 脚本还可用于在它确定的输入文件上调用 Closure-compiler。
python calcdeps.py \
-i sample.js \
-p PATH_TO_CLOSURE_LIBRARY_FOLDER \
-p sample-templates.js \
-o compiled \
-c compiler.jar \
-f --js=sample_renaming_map.js
-f --compilation_level=ADVANCED_OPTIMIZATIONS \
-f --warning_level=VERBOSE \
-f --externs=jquery-1.7-externs.js \
-f --js_output_file=sample_compiled.js
查看最终结果:编译后的版本。
如您所见,使用 Google Closure Stylesheets 不仅需要整个 Closure-tools 套件的各个部分,而且还非常复杂。
document.write
调用来输出带有正确重命名的类的 HTML,但是对于生产代码有更优雅和可维护的技术。