如何包含包含coldfusion代码的外部javascript文件?

fro*_*die 7 javascript coldfusion script-tag

我有一些使用相同的javascript代码的coldfusion文件.我想将javascript分成一个.js文件并将其包含在每个文件中,这样我就不必多次重复所有内容.所以,我将javascript代码分成了一个名为"myPage.js"的文件,而在"myPage.cfm"中我添加了一个脚本标记 -

<script language="javascript" src="myPage.js"></script>
Run Code Online (Sandbox Code Playgroud)

问题是在javascript之间传播了一些使用<cfoutput>s等注入值的冷却代码,并且不再正确翻译,可能是因为它试图将其作为纯javascript读取.有没有办法我可以有一个外部的js文件,但表明我希望它使用coldfusion来解释它?

我找到的一个解决方法是将javascript放入coldfusion文件而不是javascript文件,称为"myPageJavascript.cfm",包围<script type="text/javascript">标签中的所有javascript代码,然后使用cfinclude将javascript包含在所有页面.这样可以正常工作,但在我看来并不像包含js文件一样直观......对于这样的情况,标准做法是什么?有没有办法将其作为外部js文件实现,还是应该坚持我的coldfusion模板文件?

ora*_*ips 8

其他的答案是更优雅和高效,但讨巧是改变文件扩展名.js.cfm为这样的:

<script language="javascript" src="myPage.cfm?id=#createUuid()#"></script>
Run Code Online (Sandbox Code Playgroud)

createUuid()是为了防止缓存,假设文件输出不同,很可能是基于session范围的变量.客户端将其加载为JavaScript,而服务器将其作为ColdFusion进行处理.你也可以用样式表做同样的事情.

现在,如果您的JavaScript依赖于来自调用页面的值,您可以在URL上传递它们:

<script language="javascript" src="myPage.cfm?name1=value1&name2=value2"></script>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当传递相同的URL参数时,您实际上可以利用缓存.

总的来说,这种方法比重构代码以保持.js文件"纯粹" 要少得多,同时输出<script/>预先依赖于块的变量.

  • 另外,我建议在.cfm中包含这个标题:`<cfheader name ="Content-Type"value ="application/x-javascript; charset = utf-8">` (2认同)

Ano*_*ooj 6

我建议你在js include之前创建一个脚本块,其中包含要在js文件中使用的所有变量.在您的情况下,将放在js文件中的cfoutput变量移动到主文件中

    <script type='text/javascript'>
    var sourceName = <cfoutput>#Application.name#</cfoutput>
    </script>

    <script src="js/myPage.js" type="text/javascript"/>
Run Code Online (Sandbox Code Playgroud)

在myPage.js文件中,您可以使用变量sourceName,它具有来自coldfusion变量的实际值.从而帮助您分离coldfusion代码和js代码.

如果要移出很多变量,请考虑创建对象类型变量并在其中添加所有这些变量.

注意:使用脚本标记添加js将有助于缓存并提高页面性能.所以不要将js文件加载为cfm文件

  • +1表示最正确的方法.这就是说,我相信客户端也会缓存从`<script />`标签的`src`属性引用的.cfm或任何扩展名文件. (2认同)