[翻译]Ext JS 教程-开始使用 ExtJS 4

<h3>入门</h3> <h4>1. 需求</h4> <h5>1.1 网页浏览器</h5> <p>ExtJS 4 支持所有主流的浏览器,从IE 6 到最新的谷歌Chrome。在开发期间,我们建议你使用下面这些浏览器,以获得更好的调试体验。</p> <p>Ø Google Chrome 10+</p> <p>Ø Apple Safari 5+</p> <p>Ø Mozilla Firefox 4+ 带Firebug Web 开发插件</p> <p>本教程假设你正在使用最新的谷歌 Chrome 浏览器。如果你还没有 Chrome,花点时间去下载它吧,然后去熟悉熟悉 Chrome 的开发者工具。</p> <h5>1.2 Web 服务器</h5> <p>尽管使用 ExtJS 4 并不一定需要一个本地的web 服务器,仍然强烈建议你在开发的时候能有一个,因为 XHR 在大多数浏览器上有针对本地 file:// 的cross origin 限制。如果你还没有本地的web 服务器,建议你下载并安装 Apache HTTP Server。</p> <p>Ø 了解在 Windows 上面安装 Apache</p> <p>Ø 了解在 Linux 上面安装 Apache</p> <p>Ø Mac OS X 已经内置了apache,你可以在 System Preference &gt; Sharing 下面的 Web Sharing 旁找到</p> <p>一旦你安装好了 Apache ,你可以通过在浏览器地址栏输入 localhost 验证它是否在运行。你会看到一个表示 Apache HTTP 服务器已经成功安装并且正常运行的开始页面。</p> <h5>1.3 Ext JS 4 SDK</h5> <p>下载 Ext JS 4 SDK,把压缩包解压到一个在你的web 根路径下新建的extjs文件夹。如果你不知道web根目录在哪儿,查阅你web服务器的相关文档。Web 根路径的位置根据你操作系统的不同而有所不同,但是如果你使用的是 Apache,你一般会在:</p> <p>Ø Windows - &quot;C:\Program Files\Apache Software Foundation\Apache2.2\htdocs&quot;</p> <p>Ø Linux - &quot;/var/www/&quot;</p> <p>Ø Mac OS X - &quot;/Library/WebServer/Documents/&quot;</p> <p>一旦你已经完成安装,将浏览器导航至 <a href="http://localhost/extjs/index.html">http://localhost/extjs/index.html</a> 。如果一个 ExtJS 4 的欢迎页面出现了,代表你已经一切就绪了。</p> <h4>2. 应用程序结构</h4> <h5>2.1 基本结构</h5> <p>如下所列的建议尽管不是强制的,但是可以作为最佳实践指南考虑,以保持你的应用的结构条理性、可扩展性和可维护性。下面是推荐的Ext JS 应用程序结构:</p> <p>- appname</p> <blockquote> <p>- app</p> </blockquote> <blockquote> <p>&#160;&#160;&#160; - namespace</p> </blockquote> <blockquote> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; - Class1.js</p> </blockquote> <blockquote> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; - Class2.js</p> </blockquote> <blockquote> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; - ...</p> </blockquote> <blockquote> <p>- extjs</p> <p>- resources</p> </blockquote> <blockquote> <p>&#160;&#160;&#160; - css</p> </blockquote> <blockquote> <p>&#160;&#160;&#160; - images</p> </blockquote> <blockquote> <p>&#160;&#160;&#160; - ...</p> </blockquote> <blockquote> <p>- app.js</p> </blockquote> <blockquote> <p>- index.html</p> </blockquote> <p>Ø Appname 是一个包含应用程序所有源文件的文件夹</p> <p>Ø App 包含所有的类, 类的命名形式应该遵循类系统指南中列出的规则</p> <p>Ø Extjs 包含 ExtJS 4 SDK 的文件</p> <p>Ø Resources 包含为应用程序提供外观的 CSS 和图片文件,还有其他的静态文件(XML、JSON等等)</p> <p>Ø Index.html 是 HTML 文档的入口点</p> <p>Ø App.js 包含你所有的业务逻辑</p> <p>现在不要为了创建所有上述的文件夹而担忧。当前让我们关注用最少量需求的代码去获得并运行一个 Ext JS 应用程序。 我们将会创建一个 “hello world” Ext JS 应用程序,称作 “Hello Ext”。首先,在你的web根路径下面创建下面这些文件和文件夹。</p> <p>- helloext</p> <blockquote> <p>- app.js</p> </blockquote> <blockquote> <p>- index.html</p> </blockquote> <p>然后解压 Ext JS 4 SDK 里的 exjst 到 helloext 目录中。</p> <p>一个典型的ExtJS应用程序包含一个 HTML文档——index.html。 打开 index.html,插入下面的 html 代码。</p> <p>&lt;html&gt;</p> <blockquote> <p>&lt;head&gt;</p> </blockquote> <blockquote> <p>&#160; &lt;title&gt;Hello Ext&lt;/title&gt;</p> </blockquote> <blockquote> <p>&#160; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;extjs/resources/css/ext-all.css&quot;&gt;</p> </blockquote> <blockquote> <p>&#160; &lt;script type=&quot;text/javascript&quot; src=&quot;extjs/ext-debug.js&quot;&gt;&lt;/script&gt;</p> </blockquote> <blockquote> <p>&#160; &lt;script type=&quot;text/javascript&quot; src=&quot;app.js&quot;&gt;&lt;/script&gt;</p> </blockquote> <blockquote> <p>&lt;/head&gt;</p> </blockquote> <blockquote> <p>&lt;body&gt;&lt;/body&gt;</p> </blockquote> <p>&lt;/html&gt;</p> <p>Ø extjs/resources/css/ext-all.css 包含整个框架需要的样式信息</p> <p>Ø extjs/ext-debug.js 包含 ExtJS 4 核心类库的最小集合</p> <p>Ø App.js 将包含你的应用代码</p> <p>现在你已经准备好,可以写你的应用代码了。 打开 app.js ,插入下面的 Javascript 代码:</p> <p>Ext.application({</p> <p>name: 'HelloExt',</p> <p>launch: function() {</p> <p>Ext.create('Ext.container.Viewport', {</p> <p>layout: 'fit',</p> <p>items: [</p> <p>{</p> <p>title: 'Hello Ext',</p> <p>html : 'Hello! Welcome to Ext JS.'</p> <p>}</p> <p>]</p> <p>});</p> <p>}</p> <p>});</p> <p>现在将你的浏览器导航到 <a href="http://localhost/helloext/index.html">http://localhost/helloext/index.html</a> 。你会看到一个面板,面板上有一个包含文本 “Hello Ext”的标题条,面板的body 区域还有“welcome”信息显示。</p> <h5>2.2 动态加载</h5> <p>打开 Chrome 开发者工具,点击 Console 选项。现在刷新 Hello Ext 应用程序。你应该会看到控制台(console) 显示像下面这样一条警告信息:</p> <p><a href="http://static.oschina.net/uploads/img/201305/30194811_NTVO.jpg"><img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://static.oschina.net/uploads/img/201305/30194811_m1AD.jpg" width="244" height="9" /></a></p> <p>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时,延时的影响会累积,因为应用程序在请求下一个文件时,都会等待每一个文件加载完。</p> <p>为了解决这个问题,我们可以调用 Ext.application 的一行代码。</p> <p>Ext.application:</p> <p>Ext.require('Ext.container.Viewport');</p> <p>这样做将确保在应用程序运行之前包含定义 Ext.container.Viewport 的代码已经被加载进来了。 在你刷新页面时,你应该不会再看到 Ext.Loader 的警告信息了。</p> <h5>2.3 库文件包含方法</h5> <p>当你解压了你下载的 ExtJS 4 文件时,你将看到下面的这些文件:</p> <p>1. ext-debug.js ——这个文件仅在开发期间使用。 它提供了启动和运行所需最小量的 ExtJS 核心类。任何附加的类应该向上面演示的那样作为单独的文件被动态加载。</p> <p>2. ext.js ——跟ext-debug.js 是一样的,不过做了迷你化处理。它很重要,用来同你应用程序的 app-all.js 文件结合。(见 第3节)</p> <p>3. ext-all-debug.js ——这个文件包含了真个 ExtJS 库。这对于缩短你的学习曲线很有帮助,然而实际的应用开发中 ext-debug.js 大多情况下是首选。</p> <p>4. ext-all.js 这是一个迷你化了 ext-all.debug.js 可以用于生产环境,当大部分应用程序不需</p> <p>要使用它包含的所有类时,不推荐用这个。取而代之的做法是为你的生产环境创建一个定制的构建,这在第3节描述到了。</p> <h4>3. 部署</h4> <p>新推出的 Sencha SDK 工具让任何 ExtJS 4 应用程序的部署比以前更容易了。这个工具允许你生成一份JSB 3(JSBuilder 文件格式)形式的JavaScript 依赖清单文件, 并且创建一个定制的构建包,里面只包含你的应用程序所需要的代码。</p> <p>一旦你把SDK 工具安装好了,打开控制台窗口并切换到你应用程序所在的目录。</p> <p>cd path/to/web/root/helloext</p> <p>到此你仅仅需要运行一对简单的命令。第一行生成一个JSB3文件:</p> <p>sencha create jsb -a index.html -p app.jsb3</p> <p>对于基于一种动态服务器端语言——像 PHP、Ruby、ASP等等——构建的应用程序,你可以简单的用你应用程序的真实URL替换 index.html:</p> <p>sencha create jsb -a http://localhost/helloext/index.html -p app.jsb3</p> <p>这条命令会浏览你的index.html文件,寻在所有被应用实用到的框架和应用文件,然后创建一个叫做 app.jsb3的 JSB 文件。JSB3的生成给我们在构建之前变更 app.jsp3 的机会——这在当你需要复制定制的资源是可能有帮助,但在大多数情况下我们可以使用第二条命令执行构建:</p> <p>sencha build -p app.jsb3 -d .</p> <p>这条命令基于 JSB3 文件 创建了两个文件:</p> <p>1. All-classes.js ——这个文件包含了你应用程序的所有类。它不是迷你化的,因而对你查找问题很有帮助。在我们的例子中这个文件内容是空的,因为我们的“Hello Ext”应用不包含任何类。</p> <p>2. App-all.js ——这个文件是迷你化的,包含了应用程序的和所有运行时需要的ExtJS的类。它是生产环境用的 all-classes.js + app.js 迷你化。</p> <p>一个Ext JS 应用程序将需要一个单独的index.html用于应用的生产环境版本。你可能希望在你的构建过程或者服务器端逻辑中决定这个东西,但是现在先只在 helloext文件夹里面创建一个称作 index-prod.html 的新文件:</p> <p>&lt;html&gt;</p> <p>&lt;head&gt;</p> <p>&lt;title&gt;Hello Ext&lt;/title&gt;</p> <p>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;extjs/resources/css/ext-all.css&quot;&gt;</p> <p>&lt;script type=&quot;text/javascript&quot; src=&quot;extjs/ext.js&quot;&gt;&lt;/script&gt;</p> <p>&lt;script type=&quot;text/javascript&quot; src=&quot;app-all.js&quot;&gt;&lt;/script&gt;</p> <p>&lt;/head&gt;</p> <p>&lt;body&gt;&lt;/body&gt;</p> <p>&lt;/html&gt;</p> <p>现在ext-debug.js 已经被 ext.js 替换,app.js 已经被 app-all.js 替换。如果你将浏览器导航至 http://localhost/helloext/index-prod ,你应该会看到产品环境版本的“Hello Ext”应用程序。</p> <h4>4. 阅读更多</h4> <p>1. 类系统</p> <p>2. MVC 应用程序架构</p> <p>3. 布局和容器</p> <p>4. 使用数据</p>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DeveWork

360安全扫描之WordPress 页面异常导致本地路径泄漏 的漏洞修补

今天头脑一热到360安全检测那里去为自己的网站进行安全扫描了一番。上次扫描还是一年前,当初扫描一个网站是 94 分,那时候还不懂代码,就这么挂着,被360 公开...

2175
来自专栏老马寒门IT

Node入门教程(7)第五章:node 模块化(下) npm与yarn详解

Node的包管理器 JavaScript缺少包结构的定义,而CommonJS定义了一系列的规范。而NPM的出现则是为了在CommonJS规范的基础上,实现解决包...

3606
来自专栏hbbliyong

Ubuntu16.04安装后开发环境配置和常用软件安装

Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视...

4168
来自专栏Jerry的SAP技术分享

WebClient UI和Tomcat的启动器

会在浏览器以测试模式打开选中的view。这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是什么东西?Jerry倾向于把它当作是CRM We...

1572
来自专栏炉边夜话

在Debian中打造属于自己的deb包

问题:如果你要在Debian系统中发布一款软件或者一个包,该如何做呢?如果你的项目中有各种二进制包,该如何维护呢?如果你自己做了一款小小的实用软件,该如何与朋友...

1982
来自专栏有趣的Python

最新Django2.0.1在线教育零基础到上线教程(二)windows下搭建开发环境

演示地址: http://mxonline.mtianyan.cn 教程仓库地址1: https://github.com/mtianyan/DjangoGe...

4485
来自专栏蜉蝣禅修之道

Extjs自定义多字段VTypes

1763
来自专栏owent

关于firewalld和systemd的一些命令速记

CentOS 7 已经用firewalld替换掉了iptables并用systemd来管理启动服务(之前是chkconfig)。而且下一个Ubuntu的长期支持...

804
来自专栏Web项目聚集地

什么是跨域?解决方案有哪些?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同...

2472
来自专栏互扯程序

跨域请求方案 终极版

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

2933

扫码关注云+社区