smarty模板技術

来源:http://www.cnblogs.com/jesse131/archive/2016/01/26/5161602.html
-Advertisement-
Play Games

一、什麼是smarty?smarty是一個使用php寫出來的模板php模板引擎,它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用php程式員同美工分離,使用的程式員改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目中顯的尤為重要。二、sma...


一、什麼是smarty?
smarty是一個使用php寫出來的模板php模板引擎,它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用php程式員同美工分離,使用的程式員改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目中顯的尤為重要。

二、smarty優點:
1. 速度:採用smarty編寫的程式可以獲得最大速度的提高,這一點是相對於其它的模板引擎技術而言的。

2. 編譯型:採用smarty編寫的程式在運行時要編譯成一個非模板技術的php文件,這個文件採用了phphtml混合的方式,在下一次訪問模板時將web請求直接轉換到這個文件中,而不再進行模板重新編譯(在源程式沒有改動的情況下)

3. 緩存技術:smarty選用的一種緩存技術,它可以將用戶最終看到的html文件緩存成一個靜態的html頁,當設定smartycache屬性為true時,在smarty設定的cachetime期內將用戶的web請求直接轉換到這個靜態的html文件中來,這相當於調用一個靜態的html文件。

4. 插件技術:smarty可以自定義插件。插件實際就是一些自定義的函數。

5. 模板中可以使用if/elseif/else/endif。在模板文件使用判斷語句可以非常方便的對模板進行格式重排。

三、不適合使用smarty的地方:

1. 需要實時更新的內容。例如像股票顯示,它需要經常對數據進行更新,這類型的程式使用smarty會使模板處理速度變慢。

2. 小項目。小項目因為項目簡單而美工與程式員兼於一人的項目,使用smarty會喪失php開發迅速的優點。

四、smarty安裝及配置:

下載smarty的安裝包解壓後,把libs文件夾放在網站根目錄下,然後創建幾個文件夾
templates       存放模板文件

templates_c    存放編譯後的文件

configs           存放配置文件

cache             存放緩存文件
再創建初始化文件smarty.init.php

<?php
    include "./libs/Smarty.class.php";//包含Smarty類庫所在的文件
    $smarty=new Smarty();//創建一個Smarty類的對象$smarty
    $smarty->template_dir="./templates/";//設置所有模板文件存放目錄
    $smarty->compile_dir="./templates_c/";//設置所有編譯過的模板文件存放目錄
    $smarty->config_dir="./configs/";//設置模板中特殊配置文件存放的目錄
    $smarty->cache_dir="./cache/";//設置存放Smarty緩存文件的目錄
    $smarty->caching=1;//設置開啟Smarty緩存模板功能
    $smarty->cache_lifetime=60*60*24;//設置模板緩存有效時間為1天
    $smarty->left_delimiter='<{';//設置模板語言中的左結束符
    $smarty->right_delimiter='}>';//設置模板語言中的右結束符
?>

五、smarty引擎運行機制:

1、新建模板文件index.tpl及項目中所需的配置文件my.conf,配置文件也可後期補充

<{config_load file="../configs/my.conf"}><!-- 載入配置文件 -->
<html>
    <head>
        <meta charset="utf-8">
        <title><{$title}></title>
    </head>
    <body bgcolor="<{#bgColor#}>">
        <{$content}>
    </body>
</html>

2、新建程式入口文件index.php,引入控制器文件,傳值並分配變數,並顯示模板index.tpl

<?php
    //引入smarty.init.php
    include 'smarty.init.php';
    $smarty->assign("title","我的第一個文件標題");
    $smarty->assign("content","我的第一個文件內容");
    $smarty->display("index.tpl");
?>

3、運行index.php,通過smarty控制器文件會生成一個php格式的編譯文件,當緩存機制未開啟時,瀏覽器會讀取這個編譯文件並最終顯示出來。當開啟緩存機制時,smarty控制器會生成一個靜態HTML頁面,即緩存文件com_index.tpl,這樣瀏覽器讀取性能更高。具體緩存過程詳見smarty詳細使用教程第9點

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 獲取【下載地址】 QQ: 313596790 【免費支持更新】A 代碼生成器(開發利器); 增刪改查的處理類,service層,mybatis的xml,SQL( mysql 和oracle)腳本, jsp頁面 都生成 就不用寫搬磚的代碼了,生成的放到項目里,可以直接運行B 阿裡巴巴資料庫連接池dr....
  • 第一步 排除文件打開方式錯誤:r只讀,r+讀寫,不創建 ###f.readline()是讀取第一行,f.readlines()是讀取全部並返回一個列表w新建只寫,w+新建讀寫,會將文件內容清零(以w方式打開,不能讀出。w+可讀寫)**w+與r+區別:r+:可讀可寫,若文件不存在,報錯;w+: 可.....
  • 頭文件及庫搜索路徑頭文件的搜索路徑:頭文件的搜索規則是:找到就使用,停止繼續往下尋找1: #include “mytest.h”搜索的順序為: (1)先搜索當前目錄 (2)然後搜索編譯時 -I 指定的目錄 (3)在搜索gcc的環境變數CPLUS_INCLUDE_PATH (4)最後搜索gc...
  • #功能:1.可註冊賬號2.登錄買家賬號3.可查詢編輯購物車裡商品4.可以餘額充值5.可提示餘額不足6.購物車結算#使用:1.第一次使用先註冊賬號填寫賬號金額2.賬號金額信息保存在buyer_account.txt (預設為空)3.只針對帳號文件里的用戶進行判斷並鎖定,針對用戶和密碼各有三次錯誤重試機...
  • 2016.1.26試題描述聰聰是一個善良可愛、睿智聰慧的好孩子。聰聰是100%的學霸,這一天她在考數學。聰聰很快做到了最後一道題:“高一八班有n個人,從1到n編號,一次互判作業時,老師隨機將作業發到這n個人手中。已知有k個人拿到的不是自己的作業,那麼請問有多少種情況符合條件呢?”這麼簡單的問題聰聰當...
  • 初次接觸微信公眾號,使用的是csdn上一位博主寫的《微信公眾平臺應用開發方法技巧與案例》,之前關註了他的博客,很詳細的記錄了公眾平臺的開發過程。以下是自己的公眾號開發學習過程。首先是要為自己申請一個微信公眾號賬號。1.註冊微信公眾號,登錄https://mp.weixin.qq.com/,點擊註冊。...
  • 1 public static void main(String[] args) throws SQLException { 2 2 3 3 4 4 String driver="oracle.jdbc.driver.Oracl...
  • ls_date=string(TODAY(),"YYYY-MM-DD") //當天時間轉換為字元串ld_date=date(ls_date)//將今天的時間轉換成date類型ld_date_new=RELATIVEDATE(TIME1,5)//今天的時間向後推5天ll_num=DaysAfter (...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...