用PHP构建页面

时间:2014-01-20 16:39:40

标签: javascript php html

我一直在构建我的网页,包括pageStart.htmlpageEnd.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>

pageEnd.html

    </body>
</html>

这意味着我不必记住整个内容,只是为了包含它们。

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

6 个答案:

答案 0 :(得分:2)

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

如果您知道<script>仅在该页面上使用,我认为在页面末尾添加新的js标记没有任何问题。将其包含在2页或更多页面上可能需要保证脚本包含在页脚中。

您也可以延迟加载jsRequireJS lazyloading

答案 1 :(得分:1)

标题中,添加一个占位符,您希望脚本显示在其中:

<!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>

然后,回显内容(如果这是你的工作方式)或将它们添加到存储页面的常规变量中,同时用chossen脚本替换占位符:

echo str_replace('{zScriptPlaceHolder}',$scripts,file_get_contents("pageStart.html"));
$html.= str_replace('{zScriptPlaceHolder}',$scripts,file_get_contents("pageStart.html"));

你的脚本会在你的标题中

答案 2 :(得分:1)

有时候我使用了这样的结构:

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);

结束标记</body></html>将在脚本末尾自动添加。但您可以执行与Header()类似的操作,例如Footer()。你们都可以创建像addScript("js/some-jquery-plugin.js")这样的方法,将该值添加到数组中,并以Header()方法打印。

这种结构打开了很多可能性。

答案 3 :(得分:1)

如果您想在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>

<强> someOtherPage.php

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

// go about your body business here

如果您想将它放在</body>

之前,可以应用相同的想法

<强> pageEnd.php

    <?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>

<强> someOtherPage.php

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');

答案 4 :(得分:0)

就个人而言,我使用一个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>

我实际上不包含该文件,但是在PHP中使用file_get_contents()读取它,然后使用简单的str_replace将我的内容放入其中。在那之后,我只需要回应它。这种方式也可以添加新脚本,例如:

$page = file_get_contents('page.html);
$page = str_replace('(%documentbody%)', $mycontent, $page);
$page = str_replace('(%otherscripts%)', $myscripts, $page);

任何人都有更好的想法快速更换内容?

最佳, zimpee

答案 5 :(得分:0)

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