1.1 網頁瀏覽器javascript
ExtJS 4 支持全部主流的瀏覽器,從IE 6 到最新的谷歌Chrome。在開發期間,咱們建議你使用下面這些瀏覽器,以得到更好的調試體驗。css
Ø Google Chrome 10+html
Ø Apple Safari 5+java
Ø Mozilla Firefox 4+ 帶Firebug Web 開發插件web
本教程假設你正在使用最新的谷歌 Chrome 瀏覽器。若是你尚未 Chrome,花點時間去下載它吧,而後去熟悉熟悉 Chrome 的開發者工具。apache
1.2 Web 服務器瀏覽器
儘管使用 ExtJS 4 並不必定須要一個本地的web 服務器,仍然強烈建議你在開發的時候能有一個,由於 XHR 在大多數瀏覽器上有針對本地 file:// 的cross origin 限制。若是你尚未本地的web 服務器,建議你下載並安裝 Apache HTTP Server。服務器
Ø 瞭解在 Windows 上面安裝 Apache架構
Ø 瞭解在 Linux 上面安裝 Apacheapp
Ø Mac OS X 已經內置了apache,你能夠在 System Preference > Sharing 下面的 Web Sharing 旁找到
一旦你安裝好了 Apache ,你能夠經過在瀏覽器地址欄輸入 localhost 驗證它是否在運行。你會看到一個表示 Apache HTTP 服務器已經成功安裝而且正常運行的開始頁面。
1.3 Ext JS 4 SDK
下載 Ext JS 4 SDK,把壓縮包解壓到一個在你的web 根路徑下新建的extjs文件夾。若是你不知道web根目錄在哪兒,查閱你web服務器的相關文檔。Web 根路徑的位置根據你操做系統的不一樣而有所不一樣,可是若是你使用的是 Apache,你通常會在:
Ø Windows - "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs"
Ø Linux - "/var/www/"
Ø Mac OS X - "/Library/WebServer/Documents/"
一旦你已經完成安裝,將瀏覽器導航至 http://localhost/extjs/index.html 。若是一個 ExtJS 4 的歡迎頁面出現了,表明你已經一切就緒了。
2.1 基本結構
以下所列的建議儘管不是強制的,可是能夠做爲最佳實踐指南考慮,以保持你的應用的結構條理性、可擴展性和可維護性。下面是推薦的Ext JS 應用程序結構:
- appname
- app
- namespace
- Class1.js
- Class2.js
- ...
- extjs
- resources
- css
- images
- ...
- app.js
- index.html
Ø Appname 是一個包含應用程序全部源文件的文件夾
Ø App 包含全部的類, 類的命名形式應該遵循類系統指南中列出的規則
Ø Extjs 包含 ExtJS 4 SDK 的文件
Ø Resources 包含爲應用程序提供外觀的 CSS 和圖片文件,還有其餘的靜態文件(XML、JSON等等)
Ø Index.html 是 HTML 文檔的入口點
Ø App.js 包含你全部的業務邏輯
如今不要爲了建立全部上述的文件夾而擔心。當前讓咱們關注用最少許需求的代碼去得到並運行一個 Ext JS 應用程序。 咱們將會建立一個 「hello world」 Ext JS 應用程序,稱做 「Hello Ext」。首先,在你的web根路徑下面建立下面這些文件和文件夾。
- helloext
- app.js
- index.html
而後解壓 Ext JS 4 SDK 裏的 exjst 到 helloext 目錄中。
一個典型的ExtJS應用程序包含一個 HTML文檔——index.html。 打開 index.html,插入下面的 html 代碼。
<html>
<head>
<title>Hello Ext</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
<script type="text/javascript" src="extjs/ext-debug.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
Ø extjs/resources/css/ext-all.css 包含整個框架須要的樣式信息
Ø extjs/ext-debug.js 包含 ExtJS 4 核心類庫的最小集合
Ø App.js 將包含你的應用代碼
如今你已經準備好,能夠寫你的應用代碼了。 打開 app.js ,插入下面的 Javascript 代碼:
Ext.application({
name: 'HelloExt',
launch: function() {
Ext.create('Ext.container.Viewport', {
layout: 'fit',
items: [
{
title: 'Hello Ext',
html : 'Hello! Welcome to Ext JS.'
}
]
});
}
});
如今將你的瀏覽器導航到 http://localhost/helloext/index.html 。你會看到一個面板,面板上有一個包含文本 「Hello Ext」的標題條,面板的body 區域還有「welcome」信息顯示。
2.2 動態加載
打開 Chrome 開發者工具,點擊 Console 選項。如今刷新 Hello Ext 應用程序。你應該會看到控制檯(console) 顯示像下面這樣一條警告信息:
ExtJS 4 帶有一個在你的應用須要時動態加載 JavaScript 資源的系統。在咱們的例子中, Ext.create 建立了一個 Ext.container.Viewport 實體。當 Ext.create 被調用的時候,加載器首先會檢查 Ext.container.Viewport 是否已經被定義了。若是已經定義了,加載器會在初始化viewport 對象前嘗試加載加載包含了定義 Ext.container.Viewport 的代碼。 在咱們的例子中 Viewport.js 文件獲取加載成功了,可是加載器發現文件正在以一種 less-than optimal 方式被加載。 因而咱們如今在一個 Ext.container.Viewport 的實體被須要時加載了 Viewport.js 文件, 代碼的執行一直到文件已經被加載成功的時候才中止,形成一小段延時。 當咱們對 屢次調用 Ext.create時,延時的影響會累積,由於應用程序在請求下一個文件時,都會等待每個文件加載完。
爲了解決這個問題,咱們能夠調用 Ext.application 的一行代碼。
Ext.application:
Ext.require('Ext.container.Viewport');
這樣作將確保在應用程序運行以前包含定義 Ext.container.Viewport 的代碼已經被加載進來了。 在你刷新頁面時,你應該不會再看到 Ext.Loader 的警告信息了。
2.3 庫文件包含方法
當你解壓了你下載的 ExtJS 4 文件時,你將看到下面的這些文件:
1. ext-debug.js ——這個文件僅在開發期間使用。 它提供了啓動和運行所需最小量的 ExtJS 核心類。任何附加的類應該向上面演示的那樣做爲單獨的文件被動態加載。
2. ext.js ——跟ext-debug.js 是同樣的,不過作了迷你化處理。它很重要,用來同你應用程序的 app-all.js 文件結合。(見 第3節)
3. ext-all-debug.js ——這個文件包含了真個 ExtJS 庫。這對於縮短你的學習曲線頗有幫助,然而實際的應用開發中 ext-debug.js 大多狀況下是首選。
4. ext-all.js 這是一個迷你化了 ext-all.debug.js 能夠用於生產環境,當大部分應用程序不需
要使用它包含的全部類時,不推薦用這個。取而代之的作法是爲你的生產環境建立一個定製的構建,這在第3節描述到了。
新推出的 Sencha SDK 工具讓任何 ExtJS 4 應用程序的部署比之前更容易了。這個工具容許你生成一份JSB 3(JSBuilder 文件格式)形式的JavaScript 依賴清單文件, 而且建立一個定製的構建包,裏面只包含你的應用程序所須要的代碼。
一旦你把SDK 工具安裝好了,打開控制檯窗口並切換到你應用程序所在的目錄。
cd path/to/web/root/helloext
到此你僅僅須要運行一對簡單的命令。第一行生成一個JSB3文件:
sencha create jsb -a index.html -p app.jsb3
對於基於一種動態服務器端語言——像 PHP、Ruby、ASP等等——構建的應用程序,你能夠簡單的用你應用程序的真實URL替換 index.html:
sencha create jsb -a http://localhost/helloext/index.html -p app.jsb3
這條命令會瀏覽你的index.html文件,尋在全部被應用實用到的框架和應用文件,而後建立一個叫作 app.jsb3的 JSB 文件。JSB3的生成給咱們在構建以前變動 app.jsp3 的機會——這在當你須要複製定製的資源是可能有幫助,但在大多數狀況下咱們可使用第二條命令執行構建:
sencha build -p app.jsb3 -d .
這條命令基於 JSB3 文件 建立了兩個文件:
1. All-classes.js ——這個文件包含了你應用程序的全部類。它不是迷你化的,於是對你查找問題頗有幫助。在咱們的例子中這個文件內容是空的,由於咱們的「Hello Ext」應用不包含任何類。
2. App-all.js ——這個文件是迷你化的,包含了應用程序的和全部運行時須要的ExtJS的類。它是生產環境用的 all-classes.js + app.js 迷你化。
一個Ext JS 應用程序將須要一個單獨的index.html用於應用的生產環境版本。你可能但願在你的構建過程或者服務器端邏輯中決定這個東西,可是如今先只在 helloext文件夾裏面建立一個稱做 index-prod.html 的新文件:
<html>
<head>
<title>Hello Ext</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
<script type="text/javascript" src="extjs/ext.js"></script>
<script type="text/javascript" src="app-all.js"></script>
</head>
<body></body>
</html>
如今ext-debug.js 已經被 ext.js 替換,app.js 已經被 app-all.js 替換。若是你將瀏覽器導航至 http://localhost/helloext/index-prod ,你應該會看到產品環境版本的「Hello Ext」應用程序。
1. 類系統
2. MVC 應用程序架構
3. 佈局和容器
4. 使用數據