.NET、C#和ASP.NET三者之間的差別
作者:http://www.5itjob.com 釋出時間:2014/8/1 12:19:58
1、.NET是一個平台,一個抽象的平台的概念。 .NET平台其本身實作的方式其實還是庫,抽象層面上來看是一個平台。本人了解的.NET核心就是.NET Framwork。 .NET Framework包括兩個關鍵組成元素:
a.Common Language Runtime,公共語言運作時(CLR)-提供内在管理,代碼安全性檢測等功能 b..NET Framework Class Library,.NET架構類庫(FLC)-提供大量應用類庫,提高開發效率 學習.NET Framework 是所有.NET 開發人員都必須的,否則開發.NET程式永遠都是停留在‘外功’的招式,NET Framework 是.NET開發高手的‘内功’修行之一。
2、C#是一個程式設計語言,僅僅是一個語言。 程式設計語言僅僅是為了友善開發人員和計算機溝通的工具,雖然C#文法相對C和C++要多一些,但是相對來看C#文法都比較固定,這樣使用起來卻都很容易。我認可一位朋友說的,C#的文法更嚴謹!
這裡回過來看看.NET和C#的關系,不得不提的是.NET程式的執行過程。
C#符合.NET CLR中的公共語言運作規範。CLS:common language specification,當然所有的.NET Language都是符合這個規範的例如:VB.NET、XAML和C++/CLI....等等。
C#需要符合.NET CLS,是因為.NET CLR和JAVA 虛拟機類似,有一個中間語言共機器來執行。所有不同語言的.NET代碼在執行前會被編譯成同樣的中間語言(MSIL),是以所有.NET支援語言都必須符合符合CLS規範。
、P.S:如果做.NET 3.0 XAML開發的朋友,可以嘗試下ildasm.exe看看XAML的應用程式,會發現原來XAML其實很簡單。
、3、ASP.NET是一個網站開發的技術,僅僅是.NET架構中的一個應用模型。
用微軟公司ASP.NET快速入門中的一句話來解釋,ASP.NET 是用于生成基于Web的應用程式的内容豐富的程式設計架構。
使用 IntraWeb (9) - JavaScript
IW 依賴 js 建構(我數了數, 在目前版本它的資源檔案預設攜帶了 26 個 js);
但 IW 盡可能地讓使用者少用或不用 js, 但如果你對 js 也不陌生, IW 提供了多種途徑與友善. 我給它分兩大類:
1、直接寫入 js 代碼(站點級、頁面級, 還可以精确地指定插入位置);
2、連結 *.js 檔案(外鍊、内鍊, 還可以是資源檔案).
首先應該說明: IW 已經霸占了 window.onload, 使用者在 js 中不能再使用 onload. 如果你有一個 js 檔案或模闆沒有如期運作, 或許是這個原因; 不過好像僅此一個, 剩下的都是友善了.
還有: 在 IW 中可以直接使用 jQuery, 目前版本攜帶的是: jQuery 1.8.2
1.1 - 使用窗體的 AddToInitProc 插入初始化的 js 代碼
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
AddToInitProc('alert("歡迎")'); //其中的 js 代碼最終會被 window.onload 調用
end;
1.2 - 在控件的 ScriptEvents 屬性中添加 js 代碼
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
IWButton1.ScriptEvents.Values['onclick'] := 'alert(this.name)'; //這裡的代碼都應該很簡單, 主要是函數調用
end;
{這在設計時更友善:}
1.3 - 可以把 js 函數寫在窗體的 JavaScripts 屬性中
//如果不是使用 js 檔案, 就應該把 js 函數都寫在 JavaScripts 屬性中
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
JavaScript.Text := 'function MyFun1() {alert("TIWForm1.JavaScripts");}';
IWButton1.ScriptEvents.Values['onclick'] := 'MyFun1()';
end;
{建議在設計時使用 JavaScripts 屬性}
1.4 - 隻執行一次的 js 代碼:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
JavaScriptOnce := 'alert("JavaScriptOnce")';
end;
1.5 - 如果要進行精确的定位插入, 需要用到窗體的 PageContext 屬性
//PageContext 對象提供了更多插入方法, 下面幾個隻是我找到執行順序的(下面次序就是我測試出的執行順序)
PageContext.JavaScript;
PageContext.AddToJavaScriptOnce();
PageContext.AddToOnReady();
PageContext.AddToInitProc();
PageContext.AddToIWCLInitProc();
PageContext.AddToInitProcPageUnlockCode();
PageContext.AddToInitProcFocusCode();
PageContext.AddToInitProcNewWindowCode();
PageContext.AddToInitProcDoLastCode();
2.1 - 直接 Html 的 <Head></Head> 插傳入連結接或代碼
{在 TIWServerController 的 onCreate 事件中插入全站級的 js 連結}
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
HTMLHeaders.Add('<script type="text/javascript" src="/My1.js"></script>'); //内鍊, 檔案位于 wwwroot
HTMLHeaders.Add('<script type="text/javascript" src="Http://.../My2.js"></script>'); //外鍊, 全路徑
end;
//注: wwwroot 是 IW 的預設根目錄, js、css 和圖檔等等都應該放在其中; 可通過 IWServerController.ContentPath 讀取其實際路徑
{在窗體的 OnCreate 事件中插入頁面級的 js 連結}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
PreHeader.Add('<script type="text/javascript" src="/My3.js"></script>'); //這個在前; 但在 IWServerController.HTMLHeaders 之後
ExtraHeader.Add('<script type="text/javascript" src="/My4.js"></script>'); //這個在後
end;
//注: 上面兩個操作都可以在設計時.
//其實如果在 Head 中連結 js 或 css 應該使用 ContentFiles, 上面的嵌入方法跟适于...譬如:
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
HTMLHeaders.Add('<meta name="Keywords" content="萬一,Delphi,IntraWeb"/>'); //指定搜尋關鍵字
end;
2.2 - 使用 ContentFiles 方法連結 js 或 css
{站點級 - ServerController.pas}
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
ContentFiles.Add('My1.js'); //内鍊, 檔案位于 wwwroot; 當然也可以外鍊
end;
{頁面級 - Unit1.pas}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
ContentFiles.Add('My2.js'); //内鍊, 檔案位于 wwwroot; 當然也可以外鍊
ContentFiles.Add('MyJs/My3.js'); //内鍊 wwwroot/MyJs/My3.js
end;
//ContentFiles 會自動轉換為 Html 需要的格式, 是以很友善
2.3 - 使用 PageContext 的方法
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
PageContext.PreScriptFiles.Add('My4.js');
PageContext.AddScriptFile('My5.js');
end;
2.4 - 把 js 嵌入到資源檔案, 并調用 先從 Project > Resources and Images... 把一個 js 添加到資源檔案:
這個主要是 IW 内部使用的, 其規則很玄妙. 作為 JS 資源必須是 IW_JS_ 開頭, 好像對使用的字元也有限制.
另外這個資源編輯器, 從出生到現在都有點小問題, 重新打開随便點點就好了.
{下面是調用代碼:}
uses IWServerInternalFiles; //為使用 gInternalFiles
{從資源中提取 js; 如果不僅僅是該頁使用, 應該是從 ServerController 單元}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
gInternalFiles.Add('IW_JS_MyJS', '/js/MyJS.js'); //第一個參數資源檔案名;
//第二個參數是目的(内部臨時檔案名), 必須是 /js/xxx.js (好像 xxx 也要求和資源檔案的定義同名)
{啟用從資源提取的 js}
PageContext.ScriptFiles.Add('/js/MyJS.js');
end;
3.1 - IW 給控件在 Html 中的重命名規則
//規則是 "控件名"(轉大寫) + "IWCL"
//假如點選 IWButton1 給 IWMemo1 輸入内容:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWMemo1.Text := 'Delphi Hi';
end;
//但這要通過 js 實作應該是:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
IWButton1.ScriptEvents.Values['onclick'] := 'IWMEMO1IWCL.value = "Js Hi"';
end;
3.2 - 解決沖突
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
IWButton1.ScriptEvents.Values['onclick'] := 'alert(1)'; //如果是這樣, 哪下面的 IWButton1.OnClick 就不會執行了
// IWButton1.ScriptEvents.Values['onclick'] := 'alert(1); return true;'; //傳回(真)一下就好了
end;
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
WebApplication.ShowMessage('2');
end;
3.3 - 使用 ScriptEvents 的 Add() 與 HookEvent() 方法添加 js 代碼
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
JavaScript.Text := 'function JsFun1(obj) { alert(obj.id); }';
IWButton1.ScriptEvents.HookEvent('onclick', 'JsFun1(this)');
IWLabel1.ScriptEvents.HookEvent('onclick', 'JsFun1(this)');
IWButton2.ScriptEvents.HookEvent('onclick', 'alert(this.id);');
IWButton3.ScriptEvents.Add('onclick').EventCode.Text := 'alert(this.id);';
end;
IW 還有相關調試的内容, 好的 js 編輯與調試工具太多了, 沒必要使用 IW 寫 js 或調試.
分類: 003a.IntraWeb 好文要頂 關注我 收藏該文
萬一
關注 - 34
粉絲 - 836 榮譽: 推薦部落格 +加關注 0 0 « 上一篇: 使用 IntraWeb (8) - 系統模闆
» 下一篇: 使用 IntraWeb (10) - CSS
posted on 2014-06-09 11:38 萬一 閱讀( 3076) 評論( 4) 編輯 收藏
FeedBack: #1樓 2014-06-09 16:20 littley 萬老師有沒有講授datasnap的計劃?
本人非常期待這個專題的問世! 支援(0) 反對(0) #2樓 [ 樓主] 2014-06-09 16:38 萬一 @ littley
起碼近兩個月沒考慮, 主要是我自己用不着. 支援(0) 反對(0) #3樓 2014-06-22 05:09 findumars datasnap才是真正的好東西,比IW要好用、實用,并發數更高。希望萬一兄有空還是涉及研究一下,謝謝!! 支援(0) 反對(0) #4樓 3228439 2015/7/15 15:56:43 2015-07-15 15:56 72164 老師,怎麼在js語句中判斷Delphi文本框是否為空,怎麼表示