`

extjs学习笔记(一) 一些基础知识

阅读更多

   相信很多人对使用js进行客户端的编程比较头大,其实现在已经有了很多优秀的js库,可以大大简化js编程的工作量,其中,jquery和extjs就是两款非常优秀的js库。我在项目中已经频繁使用了jquery,这次主要是学习使用extjs,但现有的教程基本都是针对2.0的,而且后台用到的语言也很少是.net平台下的C#,所以我打算针对3.0版,后台使用C#,记录下自己的学习过程,希望能和志同道合的朋友一起探讨,共同进步。
    extjs的官方网站是http://www.extjs.com,目前最高版本是3.0.2,但是只有3.0.0的才没有任何下载限制,可以点击这里下载3.0版的。下载来的压缩包里边包含压缩后的extjs库,调试时用到的库,具有可读性的源代码,文档和例子。在开始之前,不妨先看下examples文件夹下的例子,对extjs有一个感性的认识,如果你觉得例子里边的效果让你心动,那么就一起开始extjs的学习之旅吧。
    首先明确下我们需要引用的文件,包括adpter/ext/ext-base-debug.js,ext-all-debug.js和整个resource文件夹,当然,多数情况下,我们还需要ext-lang-zh_CN.js进行中文的本地化,该文件在src/locale目录下。因为是学习阶段,所以我们使用了debug版本,在实际的项目中,发布的时候要使用压缩后的版本以减小文件体积。接下来,我们就秉承编程界的一贯传统,开始我们的第一个Hello world程序。
    新建一个文本文件,文件名改为Hello.htm,用文本编辑器打开,写下如下代码:


  daben.js的内容如下:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1/**//*
7Ext.onReady(function(){
8    Ext.MessageBox.alert("信息","Hello world");
9}
);

    使用ie或者ff打开Hello.htm,可以看到一个弹出的对话框,和js的alert对话框一样,但是漂亮了许多。
    我们看看代码,在html页面中首先引用extjs的相关库文件,注意引用顺序,接下来是引用我们自己的js文件。我们简单看下,Ext.onReady是在文档加载完之后触发的,它有一个参数是一个函数类型,该函数在事件出发的时候被调用。在这里我们用了匿名的函数,当然也可以把函数在外部定义好,然后把函数的名字作为参数传递进来。Ext.MessageBox.alert是一个弹出消息的对话框函数,第一个参数是标题,第二个参数是对话框的内容。Ext.Message类下还有模拟js的prompt对话框和comfirm对话框的方法,我们改动下daben.js看看confirm方法的效果:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1/**//*
 
 7Ext.onReady(function(){
 8    //Ext.MessageBox.alert("信息","Hello world");
 9    Ext.MessageBox.confirm("comfirm","模拟js的comfirm对话框",function(btn){
10        alert("点击了"+btn+"按钮");
11    }
);
12}
);


    光看对话框并不是很有趣,实际的web程序中,需要向服务器提交数据并根据服务器的响应来更新页面中的内容,我们来看看extjs是如何实现的。下边的例子中,我们将在页面上放置一个编辑框和一个按钮,当点击按钮之后,服务器将编辑框中输入的内容转化为大写并显示在页面的一个div中。打开vs2008,新建一个web应用程序ExtjsDemo,删掉自动添加的default.aspx文件。添加我们的hello.htm和daben.js文件以及我们要用到的extjs库,添加完成后如图所示:
   
    可以看到在js目录下边,加了一个vvswd-ext_2.0.2.js的文件,从这里可以下载,这个文件可以实现vs2008对于extjs库的智能提示,方便编程(不过我没找到针对3.0版的,如果哪位朋友找到了麻烦发一份给我)。我们先来看下extjs中实现和服务器端通信的一个函数Ext.Ajax.request,该函数接受一个json对象作为参数,该对象有几个常用的属性:
    url:字符串类型,指明请求的地址
    params:请求时传递给服务器段的参数,可以是对象,字符串
    method:请求的方法,字符串类型,“GET"或者"POST",注意必须是大写的
    success:函数类型,请求成功后会执行的函数,该函数有一个参数,是一个包含服务器端响应数据的XMLHttpRequest 对象
    failure:函数类型,请求失败后会执行的函数,该函数有一个参数,是一个包含服务器端响应数据的XMLHttpRequest 对象
    callback:函数类型,无论请求的结果如何都会执行
    好,我们就具体来看看extjs是如何实现和服务器端的交互吧。先把我们的hello.htm页面做如下改动:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1<html>
 2<head>
 3<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 4<title>Extjs hello world dialog</title>
 5<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
 6<script type="text/javascript" src="extjs/ext-base-debug.js"></script>
 7<script type="text/javascript" src="extjs/ext-all-debug.js"></script>
 8<script type="text/javascript" src="extjs/ext-lang-zh_CN.js"></script>
 9<script type="text/javascript" src="js/daben.js"></script>
10</head>
11<body>
12<input type="text" id="txt" /><input type="button" id="btn" value="提交" />
13<div id="div"></div>
14</body>
15</html>

    然后是更改我们的daben.js文件了,改动之后的代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1///<reference path="vswd-ext_2.0.2.js" />
 9Ext.onReady(function() {
10    //Ext.MessageBox.alert("信息","Hello world");
11    /**//*Ext.MessageBox.confirm("comfirm","模拟js的comfirm对话框",function(btn){
12    alert("点击了"+btn+"按钮");
13    });*/

14    Ext.get("btn").on("click"function() {
15        var data = Ext.fly("txt").getValue();
16        if (data == ""{
17            Ext.Msg.alert("警告""请输入字符串");
18        }

19        else {
20            Ext.Ajax.request({
21                url: "hello.aspx",
22                params: { data: data },
23                method: "POST",
24                success: function(response) {
25                    Ext.fly("div").update(response.responseText);
26                }
,
27                failure: function(response) {
28                    Ext.Msg.alert("错误""请求失败,错误代码为:" + response.status);
29                }

30            }
);
31        }

32    }
);
33}
);

    我们来简单分析下这个文件:第一行是为了使用vs的智能提示,注意把路径写对,而且必须要加在第一行。Ext.onReady已经介绍过了,Ext.fly是Ext.Element.fly的简写,该方法可以根据id获得Element对象,Element类是Ext中一个非常重要的类,它对Dom进行了封装,增加了一些操作以方便使用,并且兼容主流浏览器。getValue是Element类的方法,获得元素的值,比较郁闷的是没有相应的setValue方法,所以在后边使用了update方法来更新元素的值。在向服务器端传值之前进行客户端的验证是一个良好的编程习惯,这里只是简单进行了字符串不为空的验证,然后就使用了前边说到的Ext.Ajax.request方法了,使用这个方法向页面hello.aspx以post方式发送了数据,我们这里是以json对象的形式发送的,也可以写成字符串形式,对于成功的响应,把响应的文本显示在div中,对于失败的响应,弹出一个对话框并且给出了错误码。
    接下来要进行服务器端的编程了。服务器端可以通过两种方式接受客户端传递过来的数据并且作出响应:使用aspx页面和web服务。我们先介绍如何使用aspx页来进行处理。在项目中增加一个页面Hello.aspx,把页面中除了第一行的页面处理指令部分<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Hello.aspx.cs" Inherits="ExtjsDemo.hello" %>全部删去。按下F7切换到代码页,开始编写后台的代码。我们首先通过Request.Params["data"]来获取前台传递过来的数据,同样,在对数据进行处理之前我们先进行数据的有效性验证,这里只是简单判断了是否为空或者空字符串,然后我们就将处理后的结果用Response.Write方法发送给客户端。后台代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1using System;
 2
 3 9namespace ExtjsDemo
10{
11    public partial class Hello : System.Web.UI.Page
12    {
13        页面加载#region 页面加载
14        /**//// <summary>
15        /// 页面加载
16        /// </summary>
17        /// <param name="sender"></param>
18        /// <param name="e"></param>

19        protected void Page_Load(object sender, EventArgs e)
20        {
21            string data = Request.Params["data"];
22            if(!string.IsNullOrEmpty(data))
23            {
24                Response.Write(data.ToUpper());
25            }

26        }

27        #endregion

28    }

29}

30

运行后在编辑框输入字符串,可以看到在下边的div里边以大写的形式显示了出来,通过FF的Firebug我们可以看到数据的交互。
    除了使用aspx页面来接受并处理客户端传递过来的数据,我们还可以使用web服务的方式来进行。在项目中添加一个web服务,代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1using System;
 2using System.Web.Services;
 31111namespace ExtjsDemo
12{
13    /**//// <summary>
14    /// HelloService 的摘要说明
15    /// </summary>

16    [WebService(Namespace = "http://tempuri.org/")]
17    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
18    [System.ComponentModel.ToolboxItem(false)]
19    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
20    // [System.Web.Script.Services.ScriptService]
21    public class HelloService : System.Web.Services.WebService
22    {
23        将传入的字符串改为大写#region 将传入的字符串改为大写
24        /**//// <summary>
25        /// 将传入的字符串改为大写
26        /// </summary>
27        /// <param name="data">需要转为大写的字符串</param>
28        /// <returns>大写字符串</returns>

29        [WebMethod]
30        public string ToUpper(string data)
31        {
32            if(!string.IsNullOrEmpty(data))
33            return data.ToUpper();
34            throw new Exception("字符串不能为空!");
35        }

36        #endregion

37    }

38}

39    当然,默认情况下,web服务是以xml格式来传递数据的,我们可以通过Firebug看到。xml很好很强大,不过有时我们只需要更小巧的json就足够了,那么如何让web服务传递的是json格式呢?我们只需要把请求头中的Content-Type设置为application/json并且把参数使用Ext.util.JSON.encode进行编码或者使用jsonData来代替params.
分享到:
评论

相关推荐

    extjs学习笔记知识点总结

    13. **extJs 2.0 学习笔记**:这部分可能包括了针对2.0版本的一些特性讲解,如Ajax的使用、Ext.data模块的基础知识以及Panel组件的深入探讨。 以上只是对每个章节主题的简要概述,实际的学习笔记会更深入地讲解每个...

    Extjs 5 学习笔记

    ### Extjs 5 学习笔记之 SenchaCmd 深入解析 #### 一、SenchaCmd 的简介 SenchaCmd 是一个跨平台的命令行工具,它为基于 ExtJS 和 Sencha Touch 应用程序的开发周期提供了全面的支持。从创建应用程序的基础结构到...

    界面框架extjs学习笔记

    EXTJS in Action 是一本专为学习EXTJS编写的书籍,但这里我们主要关注学习笔记中的关键知识点。 首先,EXTJS的目录结构非常重要,因为它包含了所有必要的资源和源码: 1. `adapter`:这部分包含了适配器,用于将...

    ExtJs学习笔记,共30讲

    这个学习笔记涵盖了从基础到高级的多个主题,帮助读者深入理解ExtJs的核心概念和技术。以下是一些关键知识点的详细说明: 1. **ExtJs 结构树**:这部分内容可能涉及ExtJs如何构建可自定义的用户界面组件树,包括...

    extjs 学习笔记(一) 一些基础知识

    以上知识点涵盖了ExtJS学习笔记中的核心内容,通过这些知识点的学习和实践,开发者能够入门并逐渐深入理解ExtJS框架,并将这些知识应用到实际的开发工作中去。对于希望深入学习ExtJS的开发者来说,理解这些基础知识...

    extjs 的一些学习笔记

    【ExtJS 学习笔记概览】 ExtJS 是一个强大的JavaScript 框架,主要用于构建富客户端的Web应用程序。它的核心特性包括丰富的组件库、强大的数据包管理、灵活的布局系统以及面向对象的编程模型。以下是对ExtJS 入门...

    extjs4.x学习笔记

    【ExtJs 4.x 学习笔记】 在Web应用程序开发领域,ExtJs是一个强大的JavaScript库,主要用于构建富客户端界面。随着技术的不断发展,ExtJs也不断进化,从3.x版本到4.x,再到5.x,引入了许多新特性,提升了开发效率和...

    extJs 2.1学习笔记

    3. **Ext.form概述**:ExtJs的表单组件是其强大功能之一,这部分会讲解如何创建和配置表单,以及表单字段、验证和提交机制等基础知识。 4. **Ext.TabPanel篇**:TabPanel是ExtJs中的一个常用组件,用于展示多个面板...

    老师整理的extjs学习笔记

    ### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...

    extJs4.2学习笔记

    ### extJs4.2 学习笔记 #### 1. Panel 组件 Panel 是 ExtJS 中最基础且功能强大的容器之一。它具有多种属性和方法,可以用来创建各种类型的界面元素,例如弹出框、对话框等。在给定代码示例中,Panel 的创建如下:...

    EXTJS学习笔记

    ### EXTJS学习笔记 #### 一、EXTJS基础概念与命名空间管理 **EXTJS** 是一款基于JavaScript的开源框架,主要用于开发复杂的企业级Web应用。它的设计目标是提高前端开发效率并简化复杂的用户界面(UI)开发过程。在...

    extjs学习笔记

    学习ExtJS不仅需要掌握JavaScript基础知识,还需要了解其组件模型、事件处理、布局管理等方面的知识。随着深入学习,开发者将能够利用ExtJS的灵活性和强大功能,打造出高效、美观且易于维护的Web应用程序。

    ExtJS面板学习笔记(带有运行效果)

    ### ExtJS面板学习笔记 #### 一、基础:弹出框 在ExtJS中,`Ext.MessageBox`提供了创建各种模态对话框的功能,包括提示、确认、输入等。以下是几个基本示例: 1. **简单警告对话框**: ```javascript Ext....

    Extjs3.4+Ext-core.pdf+轻松搞定Extjs.pdf

    `Extjs学习笔记.docx` 可能是一位开发者或讲师整理的学习心得和笔记,可能包含了一些个人的理解、技巧、常见问题解答和解决方案。这种类型的文档通常会提供一些实战中的经验和见解,对于深化理解和解决问题可能非常...

    extjs学习网页学习资料

    开发者在学习过程中不仅要理解文档,还应该结合实际的开发笔记和个人学习笔记,对所学知识进行实际的编码操作和问题解决实践。这些笔记通常包含了他人在开发过程中遇到的问题及其解决方案,同时还有许多实用的技巧和...

    Extjs学习笔记之二 初识Extjs之Form

    在本篇Extjs学习笔记中,我们将深入探讨Extjs中的Form,特别是其封装的Ext.form.BasicForm和Ext.form.FormPanel。 首先,Extjs中的表单组件主要基于Ext.form.BasicForm,这是一个基础的表单对象,负责处理表单数据...

    Extjs参考文档

    总的来说,这个压缩包提供了一个完整的EXTJS学习资源库,涵盖了从基础知识到高级应用的各个方面,无论你是新手还是资深开发者,都能从中受益匪浅。通过系统地学习和实践这些文档,你将能够熟练掌握EXTJS,创建出功能...

Global site tag (gtag.js) - Google Analytics