`

使用Sencha Touch框架开发Twitter搜索应用

阅读更多
 目前,Android和iphone两大主流手机的应用开发吸引了大批开发人员的眼光。而开发人员最期望的是能尽可能运用旧有的技术知识,去设计这些新的应用,因此出现了不少专为方便开发者设计的各类框架,比如有jQuery Mobile和Sencha Touch,PhoneGap等,这些框架大都使用如Jquery,Ext,Javascript,HTML5等已有的技术,能让掌握这些技术的开发者使用它们尽快地转移到开发移动应用中去。本文将介绍的是其中的Sencha Touch框架,它依托的是著名的Ext JS技术,用起来十分方便。Sencha Touch的项目地址是www.sencha.com/products/touch/,它实际上是EXT JS组织把EXT JS和jqTouch和raphael库重新整合的框架,也是第一个支持HTML5标准的移动开发框架。
  本文的阅读对象为对EXT JS框架有一定基础认识的读者,当然如果读者了解jqTouch的初步入门更好,入门的文章可以参考
<<移动开发者必备工具:开源jqTouch初探>>
(http://tech.it168.com/a2011/0107/1147/000001147855.shtml)及
<<Build mobile web applications with Sencha Touch>>
(http://www.ibm.com/developerworks/web/library/wa-senchatouch/)

     在本文中,将设计一个允许用户输入检索关键词,对twitter上的内容进行检索的小应用,其中调用的是Twitter的公开API RESTful接口,对返回的JSON格式进行解析处理。
下面我们开始动手设计:

一 设计相关界面
    我们的界面很简单,只是一个文本输入框,一个“Search”的检索按钮,以及展示检索结果的内容区域。下面是相关代码:
Ext.setup({
    onReady: function() {
        var topToolbar = new Ext.Toolbar({
            dock : 'top',
            ui: 'dark',
            title: 'Sencha Twitter Search'
        });

         var tpl = new Ext.XTemplate(
            '<div id="tweet_container">',
                '<tpl for=".">',
                    '<div class="tweet_data">',
                    '<div class="tweet_avatar">',
                        '<img width="30" height="30" src="{profile_image_url}"/>',
                    '</div>',
                    '<div class="tweet_content">',
                        '<a class="user" href="http://twitter.com/{from_user}">{from_user}</a>&nbsp;',
                        '{text}',
                    '</div>',
                    '<div class="clear"></div>',
                    '</div>',
                '</tpl>',
            '</div>'
         );

        var resultPanel = new Ext.Panel({
            layout: 'fit',
            style: 'padding-bottom: 10px;',
            tpl: tpl
        });

        var searchPanel = new Ext.Panel({
            padding: 10,
            layout: {
                type: 'hbox',
                align: 'stretch'
            },
            items: [{
                flex: 4,
                xtype: 'textfield',
                style: 'margin-right: 10px;',
                id: 'textquery'
            },{
                flex: 2,
                xtype: 'button',
                text: 'Search',
                handler: function() {
                    var query = Ext.getCmp("textquery").getValue();
                    Ext.Ajax.request({
                        url: 'index.php?act=search&q='+query,
                        success: function(e) {
                            var obj = Ext.util.JSON.decode(e.responseText);
                            var msg = obj.results;
                            var html = tpl.apply(msg);
                            resultPanel.update(html);
                        }
                    });
                }
            }]
        });

        var myPanel = new Ext.Panel({
            dockedItems: [topToolbar],
            items: [searchPanel, resultPanel],
            scroll: 'vertical',
            style: 'background: #DDEEF6;',
            fullscreen : true
        });
    }
});

  在这里,首先设置了topToolbar标题栏,标题栏的内容为Sencha Twitter Search。接着使用EXT的Ext.XTemplate设计了一个模版,模版中的内容是按照twitter中的格式设计的,即发微博人的相片、用户名以及所发的言论。而resultPanel中是显示结果的面板,searchPanel则是输入检索条件的面板,其中请注意handler方法,使用query变量获得了用户的输入检索词,之后使用get的方法,使用ajax的方式发送到index.php去处理(本例子中把EXTJS代码和PHP代码写在同一个PHP文件中了,当然也可以分开来编写,那么的话就使用POST方法了),同时,在success的回调函数中,对AJAX调用返回的结果进行处理,
其中,使用var obj = Ext.util.JSON.decode(e.responseText),对检索的结果JSON格式进行解码,将返回的JSON格式字符串转变为JSON格式的对象,并且用tpl.apply(msg),将解析后的结果应用到之前的模版tpl中,最后要记得使用resultPanel.update(html);更新一下该区域。


二  PHP获得twitter内容的代码
    在同一个index.php文件中,通过使用get的方法,发送查询请求关键字到twitter公开的API进行查询,代码如下:
if (isset($_GET["act"]) && $_GET["act"] == "search") {
    $url = 'http://search.twitter.com/search.json?q='.$_GET["q"];

    $content = file_get_contents($url);
    $array = json_decode($content);

    $data = array();

    foreach ($array->results as $var => $value)
    {
        // adding url
        $pattern = '/\b(https?:\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$])/i';
        preg_match_all($pattern, $value->text, $regs);
        $loop = count($regs[0]);

        for ($i = 0; $i < $loop; $i++) {
            $value->text = str_replace($regs[0][$i], '<a class="outlink" href="'.$regs[0][$i].'">'.$regs[0][$i].'</a>', $value->text);
        }

        $data[] = array(
            "profile_image_url" => $value->profile_image_url,
            "from_user"         => $value->from_user,
            "text"              => $value->text
        );
    }

    $out = array(
        "success" => true,
        "results" => $data
    );

    echo json_encode($out);
    exit;
}
  在上面的代码中,通过发送关键词到http://search.twitter.com/search.json?q=这个地址,并使用file_get_contents函数获得搜索的结果的内容,再用json_decode将其转变为JSON对象数组的形式,并且使用一个正则表达式,把包含该关键字的所有URL都筛选出来,并且生成HTML形式的链接。最后的out数组中,包含了success,即成功返回的标志,以及results变量,包含检索的结果,最后已JSON字符串格式返回。


代码下载:http://www.box.net/shared/fep0g6lhdr
4
3
分享到:
评论
1 楼 shansheng 2011-05-30  
兄弟,搞个不要爬墙的网盘啊

相关推荐

    Sencha Touch开发的项目《般若人生》源码

    《般若人生》是一款基于Sencha Touch框架开发的移动应用项目。Sencha Touch是一个流行的JavaScript框架,专门用于构建跨平台的触屏友好型Web应用程序。它提供了丰富的UI组件和强大的数据管理工具,使得开发者能够...

    使用SenchaTouch开发跨平台移动Web应用.doc

    Sencha Touch 是一款移动 Web 应用开发框架,由 Sencha 公司开发,旨在提升主流移动设备在浏览器上的触控操作,增强用户体验。该框架以久负盛名的 Ext JS 富客户端框架为基础,并支持最新的 HTML5 及 CSS3 标准,与...

    Sencha 和 Sencha Touch 简介

    Sencha Touch 是第一个基于 HTML5 的 Mobile web 应用开发框架。 Sencha Animator Sencha Animator 是一个创建基于 WebKit 浏览器和触屏移动设备运行的 CSS3 动画的工具,用户可以通过它创建出令人惊叹的动画,效果...

    sencha touch demo

    总之,"Sencha Touch demo" 提供了一个实战平台,让你能够深入理解Sencha Touch框架,并学习如何在myEclipse这样的专业环境中开发和调试移动Web应用。通过研究"demo4",你可以逐步掌握构建富移动应用的关键技能。

    sencha touch应用程序

    标题中的“sencha touch应用程序”指的是使用Sencha Touch框架开发的一个移动应用项目。 在描述中提到,这个应用程序需要在Web服务器上运行才能查看其效果。这是因为Sencha Touch应用通常是基于HTML5、CSS3和...

    Sencha Touch in Action

    《Sencha Touch in Action》是一本关于使用Sencha Touch进行跨平台移动开发的书籍,它详细介绍了Sencha Touch框架的使用方法和技巧。Sencha Touch是一个利用HTML5、CSS3和JavaScript创建移动Web应用程序的框架,它是...

    touch-docs-2.2.1.zip(senchaTouch 离线API参考文档)

    Sencha Touch 是一款专为移动设备开发的前端框架,它提供了丰富的组件和API,使得开发者可以轻松构建跨平台的触控应用。这个压缩包“touch-docs-2.2.1.zip”包含了Sencha Touch 2.2.1版本的离线API参考文档,对于...

    一个完整的sencha touch 应用案例

    5. **config.xml**:在Sencha Touch中,这个文件可能用于配置应用程序的元数据,比如应用的名称、版本、图标、启动画面等,通常是针对PhoneGap或Cordova这样的混合应用开发环境。 6. **resource**:这个文件夹可能...

    sencha touch sdk工具

    Sencha Touch SDK工具是开发移动应用的重要资源,尤其对于那些希望使用Sencha Touch框架构建触控友好、跨平台Web应用程序的开发者来说。Sencha Touch是一个强大的JavaScript库,它提供了丰富的UI组件和API,使得...

    sencha touch项目源码

    Sencha Touch 是一款专为移动设备设计的前端框架,它提供了丰富的组件和API,用于构建交互式的、响应式的Web应用程序。这个项目源码是基于Sencha Touch开发的一个实例,通过研究这个项目,我们可以深入理解Sencha ...

    sencha touch 登陆界面

    Sencha Touch 是一款专为移动设备设计的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,用于构建高性能的触控应用。"sencha touch 登陆界面"这个主题,主要涉及的是如何使用Sencha Touch来设计和实现一...

    sencha touch list demo

    Sencha Touch 是一款专为移动设备设计的前端框架,它提供了丰富的组件库,用于构建高性能的触屏Web应用。在“sencha touch list demo”中,我们主要关注的是Sencha Touch中的列表(List)组件,这是一个核心且常用的...

    Sencha Touch2环境搭建

    Sencha Touch 2是一款专为移动设备开发的前端框架,用于构建高性能的触控应用程序。它提供了丰富的组件库,使得开发者能够轻松创建出与原生应用相似的用户体验。本篇文章将详细阐述如何搭建Sencha Touch 2的开发环境...

    sencha前端开发框架

    总的来说,Sencha Touch 是一款强大且成熟的前端开发框架,尤其适合开发移动应用。通过学习和掌握 Sencha Touch 2.1.0,开发者可以创建出高性能、多平台兼容的触摸应用,提升用户体验。尽管它是较早的版本,但对于...

    Sencha touch 移动开发

    ### Sencha Touch 移动开发知识点详解 #### 一、概览 Sencha Touch 是一款专为移动设备设计的高性能 JavaScript 框架,能够帮助开发者构建原生体验的应用...希望这些内容能够帮助你在移动应用开发的道路上更进一步。

Global site tag (gtag.js) - Google Analytics