Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在外部javascript中使用服务器端变量_Javascript_Struts - Fatal编程技术网

如何在外部javascript中使用服务器端变量

如何在外部javascript中使用服务器端变量,javascript,struts,Javascript,Struts,大家好,我最近加入了struts的工作。jsp页面中有很多javascript代码,但当在小型设备上查看此网站时,最终会导致性能问题。因此,我们计划将所有这些javascript移到一个脚本文件中。但我面临的问题是,el表达式形式的服务器端变量在外部javascript文件中是不可访问的。如果您有任何解决方案,请提供给我。 提前感谢您如注释中所述,您可以仅将逻辑片段提取到外部文件中,同时保留一个用于传递变量的小型内联脚本 作为一个非常简单的示例,您可以从以下内容中提取: <script&g

大家好,我最近加入了struts的工作。jsp页面中有很多javascript代码,但当在小型设备上查看此网站时,最终会导致性能问题。因此,我们计划将所有这些javascript移到一个脚本文件中。但我面临的问题是,el表达式形式的服务器端变量在外部javascript文件中是不可访问的。如果您有任何解决方案,请提供给我。

提前感谢您

如注释中所述,您可以仅将逻辑片段提取到外部文件中,同时保留一个用于传递变量的小型内联脚本

作为一个非常简单的示例,您可以从以下内容中提取:

<script>
    alert(${helloWorld});
</script>
并将变量保留在内联脚本中:

<script>
    var helloWorld = ${helloWorld};
    sayHello(helloWorld);
</script>

var helloWorld=${helloWorld};
你好(helloWorld);

这也鼓励了关注点的分离,这是一个很好的设计建议。我没有深入研究任何其他模式,比如这里的模块模式。

您的外部javascript文件应该是静态的。这将允许客户端缓存它,并最终使您的站点更快

如果需要函数
x
来使用自定义数据
y
z
,可以使用
x(y,z)调用它。如果您有更大的数据结构,您可以在脚本标记之间的全局范围内转储它们(见下文),或者,我认为更好的解决方案是通过ajax加载更大的数据结构

<script>
  var data = { "a" : "b", "c" : "d", "e" : [ 1, 2, 3 ] };
</script>

变量数据={“a”:“b”,“c”:“d”,“e”:[1,2,3]};

AFAIK唯一的解决方案是在jsp文件中创建这些变量,并让脚本文件使用这些变量。独立脚本文件不应包含任何状态值,它应该被传递给itI,因为它有数千个这样的表达式,所以我应该定义数千个全局变量吗?也不确定表达式语言是否只有字符串或int类型的结果。我甚至可能也有对象。@user:如果你有数千个服务器变量,你可以使用一个结构(一个数组或一个对象,如Sumurai8的回答)来传递数据。如果在JS代码中多次使用多个服务器变量,则需要用参数(如上例中的
helloWorld
)替换它们,这将是一种更好的JS代码结构。
<script>
  var data = { "a" : "b", "c" : "d", "e" : [ 1, 2, 3 ] };
</script>