先說說大夥關心的工作上的事,在上家公司任了乙個多月的技術經理後,和公司中止了合作關係。
主要原因在於一開始的待遇沒談的太清楚:
1:沒有合同,沒有公積金,連社保也沒交。
2:工資的30%變成了績效(對我還實行特例,按季度或按專案發,而且績效只有按期完成(發)與沒完成(不發))
3:稅後的問題,要自己去弄發票來填。
只能說緣來的太快,份走的也太快。
對於工作上的事,乙個多月的時間,從需求文件到概要文件到詳細文件,到產品原型到系統架構,基本上已經走完了。
專案成員也招聘完成,開發的按我的計畫穩定的進行著,所有的技術難點,我都提前解決了。
雖然人走,但後續剩下點的任務也安排好了,剩下的開發有種沒了我依然一切如舊的悲涼感覺。
交待完前事,下面進入技術正題。
如圖有兩種檢視引擎:
載入模板(aspx、cshtml)-》呼叫引擎解析成(語法樹)-》生成cs**-》動態編繹-》返回最終模板。
相對來說,這種模板引擎,效能相對來說會下降一些,但是搭載vs ied的智慧型提示,和大夥多年的開發習慣,已經佔據了主流。
這裡也有篇razor的原理基礎文章,可供參考:
原始碼目錄截圖:
xhtmlaction模板引擎的基本原理:
和asp.net自帶的模板引擎比較,這裡沒有語法樹、生成**和動態編繹過程,因此可以得到高效能的體驗。
另外相對來說,對xml及xpath語法的操作進行了封裝,簡化了很多後台開發**。
當然相對缺點就是不能在模板裡混合寫後台**了,換個說法是沒有強大的ide智慧型提示(若換個角度看,也成優點,模板和後台**真正分離了)。
xhtmlaction實現也相當的輕量級,一共就6個檔案,老少皆宜,有興趣研究的可以看 cyq.data v4.55的原始碼:
曾經也寫過兩篇相關的文章:
1:多語言的(mutillanguage),可以讓你很輕鬆的編寫多語言**:
實戰篇-簡單多語言的實現
2:xhmlaction的使用(以前類名叫xmlhelper,用法是一樣的):cyq.data.xml xmlhelper 助你更方便快捷的操作xml/html
除了介紹的(xmlhelper)用法,最近v5版本增加了「cms標籤替換」功能,下面介紹。
先寫個函式,建立文字資料庫和新增資料:
//建立檔案資料庫,並新增50條資料。
void txtdbcreate()
, new sqldbtype );
using (maction action =
new maction(
"demo
"))
}}
該**執行後,生成兩個檔案:demo.ts(表結構)demo.txt(json格式的表資料)
文字裡的json資料:
文字資料庫相當於建立好了,配置裡新增一行資料庫鏈結請求:
<
connectionstrings
>
<
add
name
="conn"
connectionstring
="txt path="
/>
connectionstrings
>
弄好資料庫,可以寫**了,單條資料的標籤替換:
protected
void page_load(
object sender, eventargs e)
"divfor", settype.innerxml);
}response.write(xml.outxml);
//輸出模板
}}
**解答:
**的關鍵就在於方法:loaddata(mdatarow,autosetvaluepre)
只要把資料行賦給模板,加乙個任意字首,之後就可以在html中任意使用: 或或來代表資料的值。
'#','-'是預設的字首分隔符號,任意使用其一都可。
這個是因為大多數的模板引擎都採用這種,故採用這種通用方式。
上面的**中,有兩行是注釋的,是多行資料的(表迴圈),方法是:loaddata(mdatatable);
如果把上面的**注釋放開,html如下:
doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" ""
>
<
html
xmlns
="">
<
head
>
<
title
>
title
>
head
>
<
body
>
<
div
title
="單條資料"
>
單條資料: -
div>
<
hr />
<
div
id="divfor"
title
="多條資料"
對於乙個html,可能涉及到相同的欄位名(同表的不同行資料,不同表的資料)需要標籤替換,因此loaddata(資料行,字首)方法需要字首來區分。
同時字首也可以傳空"",不使用字首(但要注釋避免和其它的衝突)。
對於行的資料,是在獲取xml.outxml屬性的時候才處理,因為對於標籤,可以存在任意地方,因此不能以節點來處理,只能在最終輸的時候,拿到html,再用正則替換。
對於**的輸出,需要獲取某個節點,以對節點下的內容,進行轉殖複製迴圈輸出,由於已經存在節點,所以在xml.setforeach的時候就處理了。
如果涉及到字段格式化,仍按setforeach的事件處理即可。
本文及示例介紹的是標籤替換的功能,節點替換的操作方式,仍和以前的操作方式一致。
對於web開發框架,主打關鍵就三塊:url重寫(路由)、模板引擎(檢視引擎)、資料層框架(orm)。
如果你能掌控或自由實現這三模組,你的開發方式選擇就自由化很多,如果不能,你只能局域於微軟給你的webform和mvc。
對於框架,有時候研究的再深,也不如自己寫乙個淺的。
CMS模板引擎 XHtmlAction
先說說大夥關心的工作上的事,在上家公司任了乙個多月的技術經理後,和公司中止了合作關係。主要原因在於一開始的待遇沒談的太清楚 1 沒有合同,沒有公積金,連社保也沒交。2 工資的30 變成了績效 對我還實行特例,按季度或按專案發,而且績效只有按期完成 發 與沒完成 不發 3 稅後的問題,要自己去弄發票來...
NVelocity模板引擎
因此決定自學一下nvelocity的使用 拋開monorail 安裝後,在其下的bin目錄中可找到nvelocity.dll net專案中將用到 並將其複製出來放到我的測試web bin目錄下。到castleproject上看了一下using it大致有四步 先要引入以下命名空間 using com...
twig模板引擎
twig是乙個靈活 高效並且安全的php模板引擎。如果你使用過smarty django或者jinja這類基於文字的模板引擎的話,那麼你會覺得twig是很自然而然的事情。twig嚴格遵守了php的信念,同時增加了在模板環境中很有用的函式,這些做法使得twig不論是對設計師還是開發人員,都是非常友好的...