【发布时间】:2011-02-02 23:34:30
【问题描述】:
Javascript 由 Java 应用程序执行。然而,像 Jquery 库这样的东西真的太长了,无法放入 String 变量中。我能够从文件中读取 jquery.js,但不确定如何将其打包到 .jar 文件中。
【问题讨论】:
-
为什么要把java脚本打包成jar文件?不应该是战争吗?
标签: java javascript jquery
Javascript 由 Java 应用程序执行。然而,像 Jquery 库这样的东西真的太长了,无法放入 String 变量中。我能够从文件中读取 jquery.js,但不确定如何将其打包到 .jar 文件中。
【问题讨论】:
标签: java javascript jquery
加载 .js 文件与从 jar 文件加载任何其他资源相同。一般来说,我是这样做的:
对于jar文件根目录下存储的文件:
SomeClass.getClass().getClassLoader.getResourceAsStream( "myFile.js" );
对于与 .class 文件一起存储在 jar 中的文件:
SomeClass.getClass().getResourceAsStream( "myFile.js" )
这两种技术都会给你一个InputStream。这可以变成String,代码多一点工作。见Read/convert an InputStream to a String。
当您的资源文件与您的 java 类文件在同一个 jar 中时,此技术适用。
【讨论】:
您可以在很多地方保存 JavaScript 源代码:
getResourceAsStream() 获取它们
我个人将这两种方法用于不同的目的。您可以以与保存 .properties 文件的方式完全相同的方式将 JavaScript 文件保存在构建树中。就我个人而言,我只是将它们与 .java 文件一起保存,然后有一个构建规则来确保它们最终会出现在 .war 中,但它们确实可以存在于构建引擎可以找到它们的任何地方。
数据库是保存脚本的好地方,因为它使您的 Web 应用程序更容易支持允许动态更新的“脚本门户”。这是一个非常强大的工具,特别是如果您制作 Web 应用程序以便 Javascript 模块控制一些更重要的业务逻辑,因为您可以或多或少地“实时”部署更新,而无需任何部署操作。
有一个很大帮助的事情是创建一些实用程序代码来“包装”您使用 Javascript 的任何访问路径(即 Sun “javax.script” 的东西,或者 Rhino 绑定;在这个在时间点上,我个人会选择直接的 Rhino,因为无论如何它实际上并没有太大的区别,而且 Sun 的东西被困在一个相当古老和有缺陷的 Rhino 版本上,在当前的气候下可能不会一会儿看更新)。使用实用程序包装器,要做的最重要的事情之一就是让您的 JavaScript 代码(无论它来自何处)能够从您的服务器基础架构导入 other JavaScript 文件。通过这种方式,您可以开发 JavaScript 工具库(当然,也可以改编开源库)并让您的业务逻辑脚本导入并使用它们。
【讨论】: