PHP require_once() .js 文件

Posted

技术标签:

【中文标题】PHP require_once() .js 文件【英文标题】:PHP require_once() .js file 【发布时间】:2014-08-14 11:43:31 【问题描述】:

好的,所以我正在使用 require_once 来加载 .js 文件的内容。但是,在 require 完成后,似乎在文件末尾添加了 1

php

echo require_once("test.js");

JS:

var newFunc = function() 
    console.log('yay!');
;

加载 PHP 文件时渲染的 html

var newFunc = function() 
    console.log('yay!');
;1

【问题讨论】:

您的做法似乎完全违背了最佳实践。您应该使用脚本标签添加脚本。 提出异议,但这是针对通过 Ajax 加载的文档。我有一个函数可以在请求加载后将 JS 代码附加到脚本标记。 require_once 与include 非常相似,主要针对包含php-scripts。不要用它来包含js。 在我看来,您正在让您的网站对 JS 注入漏洞敞开大门。也许您可以看到其他实现目标的方法? 将不同的脚本放在不同的文件中,然后只获取您需要的脚本的 URL。这样,您就可以在 HTML 中创建一个脚本元素,并将 src 属性设置为您刚刚获得的 URL。这样做的目的是保证只能加载用预定义脚本文件编写的代码,因此更安全。要真正安全如系统,请务必激活Same Origin Policy 【参考方案1】:

require_once() 如果包含成功则返回 1。所以你在回应返回值,这不是你想象的那样。

请改用file_get_contents(),虽然这是一种奇怪的用法,但无论你想用这个做什么,你都可能走错了方向……

【讨论】:

我试过了,但它没有加载文件,即使它在同一个目录中。 file_get_contents() 返回什么?使用 print_r(file_get_contents($your_path));看看它返回了什么。 警告:file_get_contents(test.js):打开流失败:没有这样的文件或目录... 您的路径一定不正确。您的路径是否以字符串的形式正确引用,并且与正在运行的 PHP 脚本位于同一目录中? 是的,它与我用于 require_once 的路径完全相同【参考方案2】:

您应该从 "echo require_once("test.js");" 中删除 echo

您可以通过以下方法包含js文件

<script src="test.js" language="javascript"> </script>

【讨论】:

那行不通,因为我需要将 javascript 加载到 HTML 中。 在php文件中,关闭php标签,使用上面的标签。 使用require_once来包含js文件确实是个坏习惯。一个应该通过 . 包含外部js @SilverBullet 为什么你认为这是一个“坏习惯”?【参考方案3】:

如果您想“即时”导入脚本并希望它只加载一次,我们可以将require_once 与脚本“组合”,如下所示:

<script>
  <?php require_once('your-script.js'); ?>
</script>
<div>Foo</div>

现在,让我们拥有一个具有该结构的组件。如果您的某些模板多次包含该组件,则您的脚本将仅嵌入一次,即在第一个中。

【讨论】:

以上是关于PHP require_once() .js 文件的主要内容,如果未能解决你的问题,请参考以下文章

php里的require_once是啥意思

PHP 文件确实存在但不能 require_once()

php中的require_once

PHP:require_once 用于多个文件但出现乱序

PHP 找不到 require_once 的文件,但它在那里?

PHP 是不是需要、require_once 或包含在页面加载时自动读取文件?