Deskripsi kelas Templat ASP
penulis: shaoyun Form www.devjs.com
Waktu: 17:05 10-12-2008
++Pengenalan fungsi
--Mendukung tag loop satu lapis dan dapat digunakan beberapa kali dalam kelas halaman.
--Mendukung pengenalan file templat saat memuat, templat akan digabungkan.
--Anda dapat menentukan jalur file templat. Jalur tersebut adalah jalur relatif dan defaultnya adalah jalur file saat ini.
--Untuk hasil akhir baris kosong, hapus
definisi tag ++
{$tag$}
Tag file templat {$include:filename$}
<loop name="tagname">...</loop> tag loop, atribut nama adalah nama tag
Deskripsi tag subtag ++
dalam tag loop
:Gunakan ekspresi reguler untuk mencocokkan dan memfilter tag. Bisa ada beberapa spasi sebelum atribut nama di tag loop, dan bisa ada atribut lain sebelum dan sesudah, nama Atribut dapat dikutip atau tidak. Tanda kutip tunggal dan tanda kutip ganda dikenali. Pengaturan hanya cocok dengan
deskripsi fungsi ++
pertama.Fungsi LoadTPL membaca file template. Saat membaca, periksa tag file template yang disarangkan di file template. ganti konten tag file templat bersarang, gabungkan file templat, dan simpan dalam variabel
Tetapkan fungsi untuk menganalisis tag templat. Untuk tag biasa, tambahkan ke objek data objek data loop. Jika itu adalah objek tag loop, gantilah, lalu data yang terakumulasi dalam siklus ditambahkan ke objek data
Kelas templat fungsi siram siklus, ia melakukan penggantian internal blok siklus dan mengumpulkan serta menyimpan data siklus. Setelah setiap siklus selesai, fungsi Bulid harus dipanggil
untuk menambahkan data loop yang belum disimpan dan disimpan ke objek data, dan kemudian menampilkan semua data di dalamnya. objek data sesuai dengan definisi templat. Penggantian label biasa diselesaikan pada langkah ini. Secara
khusus, fungsi penetapan memiliki metode penugasan yang mudah untuk memanggil atribut default untuk menetapkan nilai contoh:
kode program
tp.assign("title","news")
dapat menggunakan
kode program
metode penugasan yang lebih ringkas ini
tp("title")="News"
tp adalah objek template yang dipakai.
Seluruh kode template adalah sebagai berikut (template.asp):
kode program
<%
Templat Kelas
Pribadi m_content,m_looptmp,tagData,loopdata,m_loop_content,m_Looptag,m_TplPath,m_SetTplPath
m_ClassName Pribadi,m_Version,m_Copyright
Sub Class_Initialize() Pribadi
m_content="" : m_looptmp="" : m_loop_content="" : m_looptag=""
m_ClassName="Kelas Templat ASP Shaoyun" : m_Version="1.0" : m_Copyright="DevJS.com"
m_TplPath="./" : m_SetTplPath=salah
Setel tagData = Server.CreateObject("Scripting.Dictionary")
Setel loopData = Server.CreateObject("Scripting.Dictionary")
Akhiri Sub
Pribadi Sub Class_Terminate()
m_content="" : m_looptmp="" : m_loop_content="" : m_looptag=""
m_TplPath="./" : m_SetTplPath=salah
Setel tagData = Tidak Ada : Setel loopData = Tidak Ada
Akhiri Sub
Properti Publik Dapatkan Nama Kelas
Nama Kelas = m_Nama Kelas
Properti Akhir
Properti Umum Dapatkan Versi
Versi = m_Versi
Properti Akhir
Properti Umum Dapatkan Hak Cipta
Hak Cipta = m_Hak Cipta
Properti Akhir
Rem adalah properti default kelas templat untuk menentukan apakah templat berisi tag ini.
Tag Dapatkan Properti Default Publik (nama tag)
Tag = InStr(m_content,"{$" & nama tag & "$")>0
Properti Akhir
Rem memanggil fungsi penugasan yang ditentukan. Properti ini digunakan untuk menyederhanakan operasi penugasan.
Properti Publik Biarkan Tag (nama tag, gantiString)
Penetapan Panggilan (nama tag, replaceString)
Properti Akhir
Properti Umum Dapatkan TplPath
TplPath = m_TplPath
End Property
Rem menetapkan jalur file templat
Properti Umum Biarkan TplPath(sTplPath)
Jika sTplPath<>"" Maka m_TplPath = sTplPath
Jika Benar(m_TplPath,1)<>"/" Maka m_TplPath = m_TplPath & "/"
Properti Akhir
LoadFromFile(sFilePath,sCharset)
LoadFromFile=salah
Redupkan oStream
Setel oStream=Server.CreateObject("ADODB.Stream")
oStream.Jenis=2
oStream.Mode=3
oStream.Buka
oStream.Charset=sCharset
oStream.Posisi=oStream.Ukuran
oStream.LoadFromFile sFilePath
LoadFromFile=oStream.BacaTeks
oStream.Tutup
Setel oStream=Tidak Ada
Fungsi Akhir
Fungsi Pribadi FileExist(filespec)
Pada Kesalahan Lanjutkan Berikutnya
FileExist=Salah
Redupkan oFSO : Setel oFSO = Server.CreateObject("Scripting.FileSystemObject")
FileExist=oFSO.FileExists(spesifikasi file)
Setel oFSO=Tidak Ada
Fungsi Akhir
Rem mendapatkan blok loop
Fungsi Pribadi GetTmpStr(tplstr,tagname,attname)
Redupkan regEx, Cocok, Cocok
Setel regEx = RegExp Baru
regEx.Pattern = "<" & nama tag & ".*?s+nama=[""|']?" & nama att & "[""|']?.*?>([s S.]*?)</" & nama tag & ">"
regEx.Global = Salah
regEx.IgnoreCase = Benar
Setel Kecocokan = regEx.Execute(tplstr)
Untuk Setiap Pertandingan dalam Pertandingan
GetTmpStr=Cocok.Nilai
Berikutnya
Setel regEx = Tidak Ada
Fungsi Akhir
Rem menghapus tag HTML
Fungsi Pribadi HapusTag(tagString,namatag)
Redupkan ekspresi reguler
Setel regex=RegExp Baru
regEx.Pattern = "<[/]?" & nama tag & ".*?>"
regEx.Global = Benar
regEx.IgnoreCase = Benar
HapusTag = regEx.Ganti(tagString,"")
Setel regex=tidak ada
Fungsi Akhir
Rem Hapus baris kosong
Fungsi Pribadi HapusSpace(tagString)
Redupkan ekspresi reguler
Setel regex=RegExp Baru
regEx.Pattern = "ns*r"
regEx.Global = Benar
regEx.IgnoreCase = Benar
HapusSpace = regEx.Replace(tagString,"")
Setel regex=tidak ada
Fungsi Akhir
Rem membaca file templat, memproses templat yang disarangkan secara bersamaan, dan menggabungkan templat
Fungsi Publik LoadTpl(tplfile)
tplfile=Server.MapPath(tplfile)
Jika Bukan FileExist(tplfile) Lalu
Response.Tulis "Gagal memuat file templat!"
Respon.Akhir
Fungsi Keluar
Akhiri Jika
m_content=MuatDariFile(tplfile,"GB2312")
Redupkan regEx, Cocok, Cocok, fname, sContent
Setel regEx = RegExp Baru
regEx.Pattern = "{$include:(.*?)$}"
regEx.Global = Benar
regEx.IgnoreCase = Benar
Setel Kecocokan = regEx.Execute(m_content)
Untuk Setiap Pertandingan dalam Pertandingan
fname=Pertandingan.SubPertandingan(0)
fname=Server.MapPath(m_TplPath & fname)
Jika FileExist(fname) Lalu
sContent=LoadFromFile(fname,"GB2312")
m_content=ganti(m_content,Match.value,sContent)
Akhiri Jika
Berikutnya
Setel regEx = Tidak Ada
Fungsi Akhir
Fungsi penggantian penugasan Rem
Penetapan Fungsi Publik (nama tag, replaceString)
Jika tagname="" Kemudian Keluar dari Fungsi
Rem jika itu adalah label lingkaran
Jika InStr(namatag,"/")>0 dan InStr(namatag,"/")<Len(namatag) Lalu
Rem mendapatkan nama label loop
m_curLooptag=Kiri(nama tag,InStrRev(nama tag,"/")-1)
Jika m_Looptag="" Lalu
Rem Jika label perulangan terdeteksi untuk pertama kalinya, tetapkan nilai awal variabel yang diperlukan untuk perulangan.
m_looptag=m_curLooptag : m_loop_content=""
m_looptmp=DapatkanTmpStr(m_content,"loop",m_Looptag)
Kalau tidak
Jika m_LoopTag<>m_curLooptag Lalu
Rem Jika label loop berubah, variabel loop awal
m_content=ganti(m_content,m_looptmp,m_loop_content)
m_looptag=m_curLooptag : m_loop_content=""
m_looptmp=DapatkanTmpStr(m_content,"loop",m_Looptag)
Akhiri Jika
Akhiri Jika
Jika Tidak(loopData.Ada(nama tag)) Kemudian loopData.Tambahkan nama tag, gantiString
Kalau tidak
Rem label umum
tagData.Tambahkan nama tag, gantiString
Akhiri Jika
Fungsi Akhir
Rem melakukan penggantian intra-blok
Siram Fungsi Publik()
Jika loopdata.count>0 maka
Redupkan saya
chgtmp=RemoveTag(m_looptmp,"lingkaran")
arrtag=loopData.kunci
arrval=loopData.item
Untuk i=0 Ke loopData.count-1
chgtmp=ganti(chgtmp,"{$" & arrtag(i) & "$}",arrval(i))
Berikutnya
Rem menyimpan data di blok ke variabel
m_loop_content=m_loop_content & chgtmp
loopdata.HapusSemua
Berakhir jika
Selesaikan
pembuatan Rem Fungsi, selesaikan penggantian akhir templat
Bulid Fungsi Publik()
m_content=ganti(m_content,m_looptmp,m_loop_content)
arrtag=tagData.kunci
arrval=tagData.item
Untuk i=0 Ke tagData.count-1
m_content=ganti(m_content,"{$" & arrtag(i) & "$}",arrval(i))
Berikutnya
m_Content=RemoveSpace(m_Content)
Respon.Tulis m_Content
Fungsi Akhir
Kelas Akhir
%>
Kode templat templat induk (default.tpl):
kode program
{$include:head.tpl$}
<h1 align=center>{$doc_title$}</h1>
<h3>{$news_title$}</h3>
<ul>
<nama lingkaran = "berita">
<Li style="color:#F00">Judul berita: {$news/title$}--Penulis: {$news/author$}</Li>
</lingkaran>
</ul>
<h3>{$berita_terakhir$}</h3>
<ul>
<!-- Bing dan count dalam loop di sini hanya untuk pengujian dan tidak diperlukan. Harap hapus saat benar-benar menggunakannya -->
<loop bind='id' nama=seni hitung='15'>
<Li>Judul artikel: {$arts/title$}--Penulis: {$arts/author$}</Li>
</lingkaran>
</ul>
{$include:foot.tpl$}
Subtemplat bersarang (head.tpl):
kode program
<judul>{$doc_title$}</title>
Templat anak bersarang (foot.tpl):
kode program
<p align=center>Hak Cipta Oleh DevJS.Com</p>
Kode panggilan (default.asp):
kode program
<!--#include file="function/template.asp"-->
<%
Contoh penggunaan kelas template rem
Set tp = Template baru
tp.tplpath="tpl"
tp.LoadTpl(tp.tplpath & "default.tpl")
tp.assign "doc_title","Contoh mekanisme templat"
tp.assign "news_title","berita dalam negeri"
untuk i=0 hingga 2
call tp.assign("arts/title","Krisis keuangan menyebabkan banyak pengangguran")
panggil tp.assign("seni/penulis","NetEase")
tp.flush
Berikutnya
tp.assign "berita_terakhir","Artikel Terbaru"
Rem menggunakan metode penugasan lain di sini
untuk i=0 hingga 2
tp("news/title")="Kabar baik dari pemerintah akan membantu meningkatkan pasar saham"
tp("berita/penulis")="SOHU"
tp.flush
Berikutnya
tp.bulid
Tetapkan tp = tidak ada
%>
Artikel ini berasal dari blog Shaoyun http://www.devjs.com/ , alamat asli: http://www.devjs.com/post/asp-template-class.html