Javascript 用PHP构建网页

Javascript 用PHP构建网页,javascript,php,html,Javascript,Php,Html,我一直在通过包含pageStart.html和pageEnd.html文件来构建我的页面,然后在这两个文件之间继续我的业务 pageStart.html <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet/less" type="text/css" href="css/style.less"/>

我一直在通过包含
pageStart.html
pageEnd.html
文件来构建我的页面,然后在这两个文件之间继续我的业务

pageStart.html

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
    </body>
</html>

pageEnd.html

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
    </body>
</html>

这意味着我不必记住全部内容,只要把它们包括进去就行了


我现在的问题是,我希望某些页面加载某些JS脚本,但我已经关闭了
标题,因此无法(正确地)声明新脚本。做这件事的更好方法是什么?这是个好主意吗?我是否应该手动将文件内容放入PHP文件中,然后添加任何额外需要的脚本?

首先,一个好的web标准是在页脚中包含
js
文件。这是因为页面的
html/css
将更快地完成并显示页面,因此用户可以获得有关页面呈现的一些反馈

如果您知道
js
只会在页面上使用,那么在页面末尾添加一个新的
标记并没有什么错。包含在2页或更多页上可能会保证脚本包含在页脚中


您还可以延迟加载html标题中的
js

,在希望脚本显示的位置添加占位符:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        {zScriptPlaceHolder}
    </head>
    <body>

这样,您的脚本就会出现在标题中,有时我会使用这样的结构:

class Layout
{   
    public function Header($js = "")
    {
    ?><!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

        if (strlen($js) > 0)
        {
        ?>
        <script><?php echo $js; ?></script>
        <?php
        }
        ?>
    </head>
    <body>
    }

    function __destruct()
    {
        ?>
        </body>
</html><?php
    }
}

$layout = new Layout();
include "classes/layout.php";

$js = "alert('My inline JavaScript code');";

$layout->Header($js);
结束标记将自动添加到脚本末尾。但是您可以对它执行类似于
页眉()
的操作,比如
Footer()
。你们都可以创建一个像
addScript(“js/some jquery plugin.js”)
这样的方法,将该值添加到数组中,并在
Header()方法中打印出来


此结构提供了许多可能性。

如果您想将脚本保存在
pageStart.html
中,请将其更改为
pageStart.php
,然后执行以下操作:

pageStart.php

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <?php
        if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
            foreach($add_js as $k=>$v){
                echo '<script src="'.$v.'"></script>';
            }
        }
        ?>
    </head>
    <body>
$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageStart.php');

// go about your body business here
    <?php
    if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
        foreach($add_js as $k=>$v){
           echo '<script src="'.$v.'"></script>';
        }
    }
    ?>
    </body>
</html>
include('pageStart.php');

// go about your body business here

$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageEnd.php');
如果你想把它放在你的
pageEnd.php

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
        <script src="js/less.js" type="text/javascript"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <?php
        if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
            foreach($add_js as $k=>$v){
                echo '<script src="'.$v.'"></script>';
            }
        }
        ?>
    </head>
    <body>
$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageStart.php');

// go about your body business here
    <?php
    if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
        foreach($add_js as $k=>$v){
           echo '<script src="'.$v.'"></script>';
        }
    }
    ?>
    </body>
</html>
include('pageStart.php');

// go about your body business here

$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageEnd.php');

就我个人而言,我使用一个html文件来包括,因此,根据您的示例:

<!DOCTYPE HTML>
    <html>
        <head>
            <meta charset="UTF-8">
            <link rel="stylesheet/less" type="text/css" href="css/style.less"/>
            <script src="js/less.js" type="text/javascript"></script>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>(%otherscripts%)
        </head>
        <body>(%documentbody%)
        </body>
    </html>
有谁有更好的办法快速替换内容吗

最好的,
zimpee

从pagestart中删除结束标头标记,并将其添加到您正在处理的页面中。当您需要脚本时,请将其包含在结束头标记之前。最好在head标签之间包含脚本。

css属于
head
(官方…),但脚本几乎可以放在任何地方。是否有任何特定原因需要它们出现在
标题中
?您也可以在标题标记后包含JS脚本。@jeroen我认为将它们包含在标题中是一种很好的做法。“一些/某些”JS脚本可以包含在
之外,但不是全部@Dutchie432---至少,从我过去的经验来看。谷歌搜索模型视图控制器我将把这个标记为答案,虽然其他答案回答了我的确切问题,但这个答案纠正了我的无知,从而以更好的方式解决了我的问题。我喜欢这个解决方案,我试图实现类似的东西,但很快就被弄糊涂了。@Lerp对不起,但我不明白你的意思。你说的模糊是什么意思?模糊和不可读。我的尝试与上述类似,而不是你的解决方案:)@Lerp我明白了。嗯,当我在做我的一个项目时,我第一次用它,我喜欢它。不管怎样,祝你好运。