Smarty模板引擎技術(一)

 

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

相關文章
相關標籤/搜索