easyui是什么,就不介紹了,接觸到前端的就算沒用過,肯定也應該聽說過。其次,本文不是介紹它提供如calendar、tree等這些功能如何使用的,這些官網上介紹都很詳細,中文的網上也不少。本文是從easyui的文件目錄結構上來說起,談一下easyui的兩種引用加載方式。
引用加載方式
easyui的加載可以分為兩種方式,方式一:餓漢式加載;2:懶漢式加載。在具體討論這兩種加載方式之前,我們先看下easyui目錄結構。
目錄結構
demo文件夾:一些示例,(正式項目中刪除)
locale:一些不同語言的文件,其實是對easyui的擴展。(只須保留你想用的語言相對應的文件)
plugins:easyui提供的各個功能的文件。(使用方式二加載必須保留,方式一加載可以刪除)
src :各個插件的源文件,不是全部,其實有些功能不是開源的,是商業授權,因此沒有源文件。(可以刪除)
themes:主題,就是css文件和要用到的圖標文件,里邊提供5種風格。(可以只保留要使用的風格,並且具體到一個風格里,又分為兩部分:easyui.css和其它所有css。easyui.css是其它所有css的合並后結果,在不同的加載方式中只會用到一部分。)
easyloader.js:暫且稱之為加載器文件。在使用方式一加載也不會被使用。
jquery.easyui.min.js:easyui的主文件。它是plugins下所有文件合並后的結果,因些它在使用方式一加載必須保留,方式二加載不會使用到,可以刪除(主文件可以刪除,沒聽錯吧??哈哈,相信我,可以的。)。
jquery.min.js:jquery文件,easyui是基於jquery的,因此是必須的。
其它的是一些授權文件和更新日志之類的,就不說了。
這里有兩個重點:jquery.easyui.min.js是plugins下所有文件合並后的結果,具體到某個風格下如default下所有css:easyui.css是余下的其它所有css合並之后的結果。
這樣就導致了不同的兩種加載方式。
餓漢式加載
<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css"> <script type="text/javascript" src="easyui/jquery.min.js"></script> <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
這種也是最常用的方式。這種方式會加載easyui提供的所有功能,不管你頁面上會不會用的到,簡單暴力。
懶漢式加載
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css"> <script type="text/javascript" src="easyui/jquery.min.js"></script> <script type="text/javascript" src="easyui/jquery.easyloader.js"></script>
這種方式就相對比較懶,只會在使用特定功能的時候才會加載相對應的plugins下的js和風格里css文件,而其它不使用的功能對應的js和css永遠不會被下載。而easyloader.js就是負責用於加載各個插件的。
調用
同樣,都是兩種使用方式,我們這里只討論下在方式2調用過程。
當頁面中包含如:
<a href="#" class="easyui-linkbutton" onclick="load1()">Load Calendar</a>
html標記中class指定easyui-linkbutton之類easyui特定的標記時,easyui會檢測到並自動的去下載相對應的文件,並應用相應的樣式和功能。對於easyui-linkbutton標記就是去下載themes/default/linkbutton.css和plugins/jquery.linkbutton.js這兩個文件,然后改變a的顯示樣式。
當然我們可以手動通過js去調用相關功能:
using('calendar', function(){
$('#cc').calendar({
width:180,
height:180
});
});
這樣就會去加載calendar對就的css和js文件,並在id為cc的div上創建一個日歷控件。
問題
很快,我們就會發現一些問題。
風格
方式1的加載我們通過引用 themes/default/easyui.css來指定,引用不同風格下的easyui.css來使用不同的風格,但是方式2我們並沒用指定風格?如何指定風格?
不指定時,默認是引用default風格下的樣式,就會去下載該風格下的樣式。如果你使用方式2時且沒有指定風格,不存在default風格就會出現問題。
當然我們可以在頁面加載后通過
easyloader.theme = "gray";
來指定風格。
語言
同樣的對於語言文件,對於方式1我們可以直接在頁面引用jquery.easyui.min.js的后面引用。
<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
但是這對於方式2的加載,這是不起作用的。
因些語言文件其實是對各個插件默認配置的修改,當插件都還沒有加載時,語言文件對它的修改當然是不會起作用的。
因此我們可以通過下面
easyloader.locale = "zh_CN";
來指定使用何種語言。
完畢。
