1、Smarty模板引擎簡介javascript
什麼是smarty?
Smarty是採用php寫的一個模版引擎,設計的目的是要將php代碼與html代碼分離,使php程序員只專一於php代碼的編寫,網頁美工只專一於網頁的美化
沒有模版引擎時出現的問題?
html中php代碼比重愈來愈大
頁面的數量愈來愈多
程序設計與美工設計分工不明確
傳統的php文件:
1. php代碼跟html混編在一塊兒,不利於程序員和美工的分工,程序員和美工不能同時修改一個文件
2.數據的傳遞同一頁面傳遞,php數據在頁面中的顯示須要使用php標記
好比:<?php echo $username?>
index.phpphp
採用模版引擎後:
1. php代碼與html代碼分離開了,php代碼放在一個單獨的php文件中,html代碼放在一個單獨的html文件中
2. 數據的傳遞首現php中的數據先給了模版引擎,而後模版引擎再把接收到的數據給模版文件顯示。
3. 模版文件中再也不有php代碼或者說php標記的出現,模版中顯示的數據都是經過模版引擎的標記顯示出來的
index.php smarty模版引擎 index.html
目前php的模版引擎不少,爲何要使用smarty模版引擎?
1. 通常的模版引擎,如,phplib 都是在創建模版對象時取得要解析的模版,而後把變量套入後,再經過parse()這個方法來解析模版,最後再將網頁輸出,總結成一句話,那句是每次執行的時候都要從新解析一遍
2. 對於smarty模版引擎來講,沒必要在程序裏再作parse()這樣的操做了,smarty會自動幫咱們作,並且已經編譯過的網頁,若是在沒有改動的狀況下,smarty會跳太重新編譯的動做而直接去執行編譯過的網頁,以節省編譯時間。
Smarty的其它優勢:
1. 速度快:相對於其它的模版引擎而言的
2. 編譯型:採用smarty編寫的程序在運行時會編譯成一個非模版技術的php文件。這個文件採用了php與html混合的方式,在下一次訪問模版時將web請求直接轉換到這個文件中,而無需從新編譯(在模版文件沒有改動的狀況下)
3. 緩存技術:它能夠將用戶最終看到的html網頁緩存成一個靜態的html網頁。當用戶開啓緩存時,能夠設置緩存時間,在緩存文件沒到期以前,將用戶的請求直接轉換到這個靜態的緩存文件,至關於調用了一個靜態的html文件。
4. 模版中可使用流程控制語句。
不適合使用smarty的地方
1. 須要實時更新的內容,例如:股票顯示,它須要常常對數據進行更新
2. 小項目。
Smarty模版引擎運做流程。
①在php程序運行時,初始化smarty模版引擎
②smarty模版引擎讀取模版文件(.html或tpl文件)
③在讀取模版文件的時候,smarty模版引擎會自動判斷該模版文件是否須要從新編譯。
④若是不須要從新編譯,則直接進行模版變量替換。
⑤若是是第一次執行此程序文件或者說模版被改動了,那麼就須要從新編譯後再進行模版變量替換。
⑥最終執行的是編譯後的php文件。
⑦輸出結果到瀏覽器。html
2、Smarty模板引擎小實例java
到官方網站去下載smarty模版引擎壓縮包
官網:http://www.smarty.net
解壓此壓縮包,發現其下有一個libs文件夾,將libs文件夾重命名爲smarty,並移動到網站根目錄下的libs文件夾
打開smarty引擎libs文件夾,裏面有以下文件:
sysplugins 系統插件目錄
plugins 外部插件
debug.tpl 輸出debug調試信息輸出的模板
Smarty.class.php smarty模版引擎核心類文件,要使用smarty模版引擎,首先要引入該文件
SmartyBC.class.php
搭建Smarty模板示例:
1. 將libs庫目錄複製過來。
2. 建立一個模板目錄templates模板文件存放目錄
建立一個configs配置文件目錄
3. 編寫index.php文件(入口文件)作Smarty導入和建立
//1.導入Smarty類
require("libs/Smarty.class.php");程序員
//2.建立對象
$smarty = new Smarty();web
//3.初始化信息
$smarty->left_delimiter="{"; //從新定義Smarty模板的左定界符
$smarty->right_delimiter="}"; //從新定義Smarty模板的右定界符
//靜態緩存
$smarty->caching=true; //是否開啓靜態緩存 true(開啓)
$smarty->cache_lifetime=5; //設置緩存時間 (5表示緩存5秒鐘)瀏覽器
//4.放置變量:
$smarty->assign("name","zhangsan");//向Smarty模板中放置變量name值爲張三
$smarty->assign("date",date("Y-m-d H:i:s"));//爲模板放一個時間
//5.加載模板:
$smarty->display("index.html");緩存
4.使用瀏覽器訪問index.php,將會建立目錄templates_c和cache目錄函數
5. 最後的結構:
根目錄
|--libs //Smarty庫
| |--Smarty.class.php
|--templates //模板目錄
| |--index.html
|--templates_c //模板編譯目錄
|--cache //模板靜態緩存目錄(注意需開啓緩存)
|--configs //配置文件目錄
|--index.php //php文件(入口)網站
簡單的分析一下Smarty.class.php核心類文件
它是一個類文件:類是由屬性(變量)和方法構成
類的名稱:Smarty
主要屬性或變量:
$template_dir: 模版目錄,主要用來存放模版文件,如:.html文件、.tpl文件
$compile_dir: 編譯目錄,主要用來存放編譯後的php文件,即混編方式的文件
$config_dir: 配置目錄,主要用來存放公共的配置文件
$cache_dir: 緩存目錄,主要用來存放緩存文件
$left_delimiter: 左邊界符
$right_delimiter: 右邊界符
$caching 是否開啓緩存
$cache_lifetime 定製緩存時間
主要方法:
assign():主要用來將php中的標量類型的數據賦值給模版變量。
display():主要用來顯示指定的模版文件
在使用smarty以前,首現須要對核心類文件(Smarty.class.php)進行配置
//1.首現要引入核心類文件
include_once 「libs/smarty/Smarty.class.php」;
//2.使用new關鍵字建立一個核心類實例對象
$smarty=new Smarty();
//3.配置
$smarty->template_dir=」./templates」; //設置模版目錄
$smarty->compile_dir=」./templates_c」; //設置編譯目錄
$smarty->config_dir=」./configs」; //設置公共配置文件目錄
$smarty->caching=false; //設置緩存,在項目調試期間通常不開啓緩存
$smarty->cache_dir=」./cache」; //設置緩存目錄
/* 1.設置左右邊界符,默認的左右邊界符是一對大括號,實際應用中通常不使用默認的邊界符,由於容易與javascript中函數的定義相沖突
2.之後模版中模版變量都要放在此左右邊界符中
*/
$smarty->left_delimiter=」{」;
$smarty->right_delimiter=」}」;
//配置完成以後進行以下操做
//4.將php中標量類型的值賦值給模版變量
$smarty->assign(「username」,$username);
//5.顯示對應的模版文件,會根據$smarty->template_dir=」./templates」去當前目錄下的templates文件夾下去尋找index.html文件
$smarty->display(「index.html」);
如上配置,咱們須要確保當前文件夾下有以下目錄,若是沒有的話就手工創建
templates //存放模版文件
templates_c //存放編譯目錄
configs //存放公共配置文件
cache //存放緩存文件
1. 此時整個項目的文件部署:
根目錄
|--libs
| |--Smarty.class.php
|--templates
| |--a.html
|--templates_c
|--cache
|--configs
|--init.inc.php
|--a.php
|
2. 相對路徑:在程序文件中引入外部文件或設置目錄時都是以本文件爲基礎的 好比:要在index.php文件中引入Smarty.class.php文件,由於Smarty.class.php文件位於libs/smarty文件夾下,而index.php文件又跟libs文件夾同級,因此應該這樣引入: include_once 「libs/smarty/Smarty.class.php」;