close
文章出處

對前后端進行分離

如果要用的話,要從網上把smarty文件下載下來,才能用

smarty的核心是一個類

建一個php文件,寫一個類文件

<?php
class smarty
{
    public $left = "{";    //左分隔符
    public $right = "}";   //右分隔符
    
    public $arr = array(); //存儲變量
    
    //向模板里面注冊變量
    function assign($key,$value)
    {
        $this->arr[$key] = $value;
    }
    
    //顯示模板
    function display($name)
    {
        //找到模板路徑
        $url = "/".$name;
        //模板讀取
        $str = file_get_contents($url);
        
        //將str里面的某些內容(變量)做了替換
        //將模板里面的<{$aa}> 替換成 <?php echo $arr[aa]
        
        //將替換好的字符串保存到編譯好的文件
         file_put_contents($filename,$str);
         
         //將編譯好的文件拿到當前頁面顯示
         include($filename);
        
    }
}

來看一下這個方法是什么個原理,看一下效果

在這個目錄下建個php文件

<?php
include("../init.inc.php");

$smarty->assign("ceshi","你好"); //注冊變量的方法

$smarty->display("test.html");

然后再在這個目錄下寫個html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
</head>

<body>
<{$ceshi}>
</body>
</html>

然后運行php文件,看看能出來什么效果

 

 

它輸出了html文件里面的內容

這樣就能知道php文件里面的display是干嘛了,是把html文件里面的模板放到php這個頁面來顯示

然后再把里面的變量解析

這樣就能實現了前后端分離了,訪問的頁面不一定是要顯示的頁面

如果html里面用到了圖片或樣式表,相對于我們訪問的文件來找,并不一定是html

 來看一下一個真正的smarty類

這是從網上下載的一個smarty文件

有幾個文件是自己后來加的,剛下的時候文件沒有那么多

其中這個文件是比較重要的,是smarty的一個入口文件

再就是這個文件

點開它,有smarty的核心類

里面的內容邏輯和剛才寫的那個簡單文件差不多,它里面有很多成員變量

libs是smarty的一個核心目錄

里面的plugins是存放插件的一個文件

sysplugins是存放系統插件

cache是用來放緩存文件

configs用來放配置文件

templates放模板文件

templates_c 用來放編譯好的文件

來看一下入口文件的內容,也就是init.inc.php里面的內容

<?php

define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定項目根目錄

//echo str_replace("\\","/",dirname(__FILE__)).'/'; //獲取當前文件所在的位置

require ROOT.'libs/Smarty.class.php'; //加載Smarty類文件
$smarty = new Smarty(); //實例化Smarty對象


define("CSS_PATH","/project/css/");
define("JS_PATH","/project/js/");

//$smarty -> auto_literal = false; //就可以讓定界符號使用空格
$smarty->setTemplateDir(ROOT.'templates/'); //設置所有模板文件存放位置
//$smarty->addTemplateDir(ROOT.'templates2/'); //添加一個模板文件夾
$smarty->setCompileDir(ROOT.'templates_c/'); //設置編譯過的模板存放的目錄
$smarty->addPluginsDir(ROOT.'plugins/'); //設置為模板擴充插件存放目錄
$smarty->setCacheDir(ROOT.'cache/'); //設置緩存文件存放目錄
$smarty->setConfigDir(ROOT.'configs/'); //設置模板配置文件存放目錄

$smarty->caching = false; //設置Smarty緩存開關功能
$smarty->cache_lifetime = 60*60*24; //設置緩存模板有效時間一天

$smarty->left_delimiter = '<{'; //設置模板語言中的左結束符
$smarty->right_delimiter = '}>'; //設置模板語言中的右結束符





?>

在網址輸入入口文件的地址,輸出的是入口文件的目錄

在入口文件里其實默認的分隔符是花括號,但為了避免出問題就加上了尖括號

 


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()