这则教程是使用Ant的JavaScript和XSLT的汇总,阅读对象适合于中高级的WEB界面开发者。简述之,见笑了。
这则教程来自于Ant使用的邮件列表和手册,社区和论坛提供了更多的和更新的资讯,如果有一些涉及到不公开和版权的问题,请联系作者修改内容。
本文档中所有的邮件地址都做了反网络爬虫处理,替换at为@就是真正的邮件地址。
警告:不对本文的正确性、及时性以及由本文造成的损失负责。本文版权属于开源社区,可以自由拷贝、修改、转帖,请对自己复制和转发等行为负全责。
最新文档参见:http://www.sitepen.com/ant/javascript.html.
啥是Ant?
Apache Ant是一个构建工具,有N多用户使用。总的来说是非常适用于经常需要客户端界面开发的人,特别是处理巨多页面的开发者,比如某君经常需要处理SSI、php、asp或者jsp页面。当然了,也很适合构建一个XSLT的站点(比如XALAN)。如果你对Ant不熟的话,先读手册,看看咋安装、咋使用。
为啥要说Ant里面的JavaScript?
Ant并不具备向递归这样的标准程序指令,不过包含了你可以使用你熟悉语种的预构建任务。JavaScript很容易使用,广为人知,也就很容易添加到Ant扩展里面去。
添加JavaScript到Ant里面去
从mozilla上下载Ant可选jar包:bsf.jar、rhino.jar(重命名成js.jar和rhino.jar),添加到classPath里面去,注意老版本Ant可能不支持,所以版本号要搞对,不要混搭。
添加Ant的XSLT
要添加一个XSLT解析引擎,比如Xalan-J-2,你要下载并配置一下:要添加xalan的jar包到ant的classPath下面。
Hello World例子
看看这个Hello World例子,必须的:
<project name="helloWorld" default="main" basedir=".">
<target name="setup">
<script language="javascript"> <![CDATA[
echo = helloWorld.createTask("echo");
main.addTask(echo);
echo.setMessage("Hello World!");
]]>
</script>
</target>
<target name="main" depends="setup"/>
</project>
generates:
setup:
main:
Hello World!
BUILD SUCCESSFUL
要把JavaScript引入到Ant里面去,就要像使用XML标签一样使用一个script标签。要定义脚本语言,使用老式的语言定义方法也可以,比如设置一个src属性在script标签里面。
生成对象
要让Ant做更有去的事情,就要访问properties、targets、和references,怎么搞,看手册。
project.getProperty(string propertyName);
project.getUserProperty(string propertyName);
project.getTarget(string targetId);
project.getReference(string refereceId);
project可以通过getProject()取得,返回这个可以打日志和其他使用扩展的script task。
如果你搞了重名或者重ID的东西,那么只有最后一个才生效。
XSLT Task
要使用标准的XSLT task,需要一个输入和一个输出文件,把参数传给样式表,见下:
<style in="src/webProject.xml" out="temp/index.html"
extension="html" style="webSite.xsl" processor="trax">
<param name="pageId" expression="com.sitepen.pages.home"/>
</style>
要处理整个文件夹的文档,就要这么搞:
<style basedir="." destdir="temp"
extension="html" style="style/webSite.xsl"/>
也可以传N多参数:
<project name="siteBuilder" default="deploy" basedir=".">
<target name="init">
<property name="runDir" value="." />
<property name="varsDir" value="vars" />
<property name="sourceDir" value="src" />
<property name="outputDir" value="www" />
<property name="tempDir" value="temp" />
<property name="tokenValues" value="tokenValues.properties" />
<property file="${varsDir}/${tokenValues}" />
</target>
<target name="clean" depends="init">
<delete includeEmptyDirs="true" >
<fileset dir="${outputDir}" />
</delete>
</target>
<target name="prepare" depends="clean">
<mkdir dir="${outputDir}" />
</target>
<target name="compile" depends="prepare">
<copy todir="${tempDir}">
<fileset dir="${sourceDir}">
<exclude name="**/*.html"/>
</fileset>
</copy>
<script language="javascript">
<![CDATA[
importClass(java.io.File)
xslt = siteBuilder.createTask("style");
runDirectory = siteBuilder.getProperty("runDir");
tempDirectory = siteBuilder.getProperty("tempDir");
inFile = new File(runDirectory + "/webProject.xml");
outFile = new File(tempDirectory+"/index.html");
xslt.setStyle("webSite.xsl");
xslt.setIn(inFile);
xslt.setOut(outFile);
xslt.setProcessor("trax");
idParameter = xslt.createParam();
idParameter.setName("pageId");
idParameter.setExpression("com.sitepen.pages.home");
xslt.execute();
]]>
</script>
</target>
<target name="deploy" depends="compile,init">
<copy todir="${outputDir}">
<fileset dir="${tempDir}">
<exclude name="**/*.xml"/>
</fileset>
</copy>
<delete includeEmptyDirs="true" >
<fileset dir="${tempDir}" />
</delete>
</target>
</project>
用JavaScript去遍历一个properties文件
*** 我还没试过,因为看起来property文件必须要有一定的特征(NND,这什么玩意,看不懂) ***
用Task来循环
Ant本身是不支持循环机制的,所以很多人就用JavaScript来做到循环。比如可以创建一堆文件夹:
<![CDATA[
importClass(java.io.File); //Java class needed for file creation
var directoryNames = new Array();
directoryNames[0] = "directoryName0";
directoryNames[1] = "directoryName1";
directoryNames[2] = "directoryName2";
// … and so on
// in this example, the directory path is stored as part of the directory name.
for (i=0;i<directoryNames.length;i++)
{
// projectName is the name of your project
makeDirectory = projectName.createTask("mkdir");
directory = new File(directoryNames[i]);
makeDirectory.setDir(directory);
makeDirectory.execute();
}
]]>
原文在:http://www.sitepen.com/blog/2001/09/25/javascript-and-ant/
分享到:
相关推荐
本书是web开发人员的入门与参考指南,通过本书你可以利用JavaScript语言构建下一代丰富的Internet程序. 目录: Chapter 1: Introduction to JavaScript Chapter 2: JavaScript in the Browser Chapter 3: JavaScript ...
JavaScript,作为全球最广泛使用的脚本语言之一,是构建网页动态功能和交互性的基石。《编程实践:JavaScript进阶100例》是一份专为初级JavaScript学习者设计的资源,旨在通过丰富的实例帮助初学者深入理解这门语言...
Instead of learning Swift for ios and Java for Android, just learn JavaScript and make apps for ALL platforms using Apache Cordova. This book also covers everything you need to know in order to use ...
Common Uses of JavaScript: Image and Windows JavaScript and User Integration: Navigation and Forms Back-End Interaction with Ajax and Node.js Data Validation Techniques Modern JavaScript Case Study: A...
翻译招聘 :loudspeaker: 我们需要您的帮助: https : //github.com/ant-design/ant-design-pro/issues/120 特征 :gem_stone: 整洁的设计:遵循蚂蚁设计规范 :triangular_ruler: 通用模板:企业应用程序的典型...
《DOM Scripting: Web Design with JavaScript and the Document Object Model》是由Jeremy Keith撰写的一本关于JavaScript和DOM编程的经典著作。这本书深入浅出地介绍了如何利用JavaScript动态操控网页内容,提升...
本资源包含的"单页Web应用:JavaScript前端到后端 源码"是对此技术的全面实践,适合JavaScript开发者和前端工程师学习和研究。 一、JavaScript在SPA中的核心作用 JavaScript是构建SPA的基础,它负责处理页面的动态...
Since 1996, JavaScript: The Definitive Guide has been the bible for JavaScript programmers—a programmer's guide and comprehensive reference to the core language and to the client-side JavaScript APIs...
单页Web应用:JavaScript前端到后端的源码下载,提供了全部的源代码供javascript及前端爱好者们研究! 新增了第二章javascript知识温故代码,主要有类与原型,作用域、原型链、运行环境、函数和闭包的定义和实例使用...
ppo是用于JavaScript的超小且有用的utils库:honeybee::ant:概述每个前端开发人员都编写了自己的utils库,我们经常编写容易被遗忘和高度使用的方法。 ppo是一个超小型且有用JavaScript实用程序库。 它和lodash强调...
Chapter 7: JavaScript and User Interaction - Navigation and Forms Chapter 8: Backend interaction with Ajax Chapter 9: Data Validation Techniques Chapter 10: A Dynamic Gallery Chapter 11: Using ...
经典的JavaScript教程 《O'Reilly精品图书系列:JavaScript权威指南(第6版)》讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。《O'Reilly精品图书系列:JavaScript权威指南(第6版)》涵盖了...
在设计和构建大规模的JavaScript单页Web应用时,有几个关键知识点需要掌握: 1. **前端框架**:前端框架如React、Vue或Angular是SPA的基础,它们提供组件化开发,状态管理,路由等特性,简化了复杂应用的构建。例如...
“The Future of Javascript 2018 and Beyond,” offers our future-looking analysis and predictions about the latest in JavaScript. We also look back at all the JavaScript craziness from 2017 and neatly ...
- **AJAX**:即Asynchronous JavaScript and XML,是一种在不重新加载整个网页的情况下更新部分网页的技术。 ##### 2. **Lexical Structure**(词法结构) - **2.1 Character Set**(字符集):JavaScript支持...
《Pro JavaScript Techniques》是John Resig,也就是jQuery之父的作品,这本书深入探讨了JavaScript编程的各种高级技巧和实用方法。本书的出版商是Apress,它并非普通的扫描版,而是高质量的原版电子书,旨在为读者...
综上所述,《Learn JavaScript and Ajax with w3Schools》这本书旨在提供一个系统的学习指南,帮助读者从基础到高级逐步掌握JavaScript及其在网络应用开发中的实际应用,特别是在Ajax技术方面的使用。通过本书的学习...
8. **Ajax**:Asynchronous JavaScript and XML(异步JavaScript和XML)是用于创建动态网页的技术,允许在不刷新整个页面的情况下与服务器交换数据。 9. **定时器和延迟执行**:JavaScript的setTimeout和...