首页 > 其他分享 >使用Sencha Touch框架开发Twitter搜索应用

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

时间:2022-12-05 12:06:38浏览次数:44  
标签:检索 text Sencha Ext value var JSON 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> ',

'{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字符串格式返回。

[img]http://superdit.com/wp-content/uploads/2011/04/screenshot2.png[/img]
代码下载:http://www.box.net/shared/fep0g6lhdr

标签:检索,text,Sencha,Ext,value,var,JSON,Touch,Twitter
From: https://blog.51cto.com/u_14230175/5911826

相关文章

  • 网站判断来访的iphone/ipad/itouch等设备
    现在越来越多的人用iphone,itouch,ipad等东西了,如何判断用户访问你的网站的时候采用的是这些设备呢?有可能你的想法是,当客户用这些设备访问你的网......
  • VUE-使用touchstart、touchmove、touchend实现拖拽卡片列表
    感谢本文参考地址:https://www.jb51.net/article/255385.htm怕原链接失效,将代码拷贝(如有侵权,请联系删除,感谢!!)1<template>2<div>3<ul>4<li......
  • mock touch with c/c++
    verson0:#include<unistd.h>#include<string.h>#include<sys/types.h>#include<utime.h>#include<iostream>#include<fstream>usingnamespacestd;constchar*file......
  • twitter
    ##############  推特的账号类型分类标准:个人-蓝底锯齿背景的白勾;官方-白底锯齿背景的灰勾+“官方”标签;                 ......
  • js判断当前手机是否有touch bar
    参考资料:https://useyourloaf.com/blog/iphone-12-screen-sizes/exportconsthasBottomToolBar=()=>{return(/iphone/gi.test(navigator.userAgent)&&......
  • 高管对上新老板的 Twitter
    推特要走的路还很长。推特这个产品已经开始比较边缘化,抱着手机刷Twitter的人在下降,更多的是一些公司或者机构发布一些更新。但,这些机构的更新又常常缺乏价值,导致现在......
  • android安卓触摸事件touchEvent分发的 核心精辟代码
    几行代码就可以让你快速了解安卓的触摸事件机制快速进入实战/***false表示自己处理孩子然后就像递归一样如果shiviewgroup那么首先是从activity开始的->decov......
  • Twitter群推王:推特全方位营销利器
    Twitter群推王是专为Twitter运营提供的一款全方位营销工具,可以自动发帖、自动私信、自动转发、自动关注、自动点赞、自动改资料、自动注册、数据采集等,解决营销中的三大难题......
  • 马斯克锐评 Twitter App 滥用 RPC
    马斯克锐评TwitterApp滥用RPC来源:OSCHINA编辑: 局2022-11-1411:25:00 57后续:马斯克不懂GraphQL,员工指出错误后当场被“开除”刚刚正式掌管Tw......
  • 【HMS Core】使用图形引擎服务点击一次会多次触发RenderView的方法addOnTouchEventLis
    ​问题描述使用图形引擎服务点击一次会多次触发RenderView的方法addOnTouchEventListener 解决方案addOnTouchEventListener会有MotionEvent.ACTION_DOWN、MotionEven......