

100行JS代码实现一个跨平台的图片搜索APP
source link: http://mp.weixin.qq.com/s/Fl2YMraOUjoW1knYK-xgxg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文教你怎么用React Native用100行代码实现一款能同时运行在iOS和Android下的图片搜索APP。
React Native介绍
React Native是Facebook2015年开源的一款APP开发框架, 采用了React的基本思想,将React的虚拟DOM渲染成原生组件, 既保证了运行效率,又大大提高了开发效率以及代码复用。React Native 开源以来受到了极大的关注,目前 GitHub 上有 56000+ stars,背后有 Facebook 这样的大公司支持,也在有大量用户的产品里面采用了此技术,国内也有很多公司在用。开发效率高于原生应用,运行效率高于 H5 混合式开发,综合素质很强。
开发 Native 应用,需要配置比较多的环境。比如开发 iOS,需要有 Mac 电脑,然后安装 XCode等; 如果是开发 Android,需要安装 Java、Android Studio、Android SDK 等,整个配置非常费时。好在今年3月份,Facebook 开发了 Create React Native App, 这个工具是仿照 Create React App 设计的,大大简化了初始开发流程。
首先需要安装 Node.js
,如果还没有安装的请访问 Node.js,下载对应平台版本。然后只需要执行如下命令:
这个工具就会在你的电脑上启动一个 server,并且打印出一个二维码。你只需要在手机上装 Expo APP(iOS 和 Android 都可以),让手机和电脑在同一个 WiFi 下,然后打开 Expo APP:
选择扫描二维码,即可在手机上看到第一个 React Native APP。 然后修改 App.js
文件,保存后手机上就能立马看到效果!多亏了热更新!
摇一摇手机,会出现菜单, 打开Hot Reloading
神奇的事情会出现~~。
[Node.js] https://nodejs.org/en
[Expo] https://expo.io/
有了上面的准备工作, 我们可以来开始我们的图片搜索APP开发了。
搜索引擎的巨大工作量在后端, 可不是一个APP里能做出来的, 这让我想起以前在网上论坛看到有人问:
我会PHP,请问几天能做出一个百度那样的东西来呢?
下面有个牛人回复:
根本不用PHP, 5分钟就可以做出来。 你写一个html页面, 然后里面用iframe嵌入
baidu.com
就可以了。。。
我们今天就用类似的方式去做。不要觉得这很low,互联网发展早期有一类工具叫元搜索引擎,就是调用多家搜索引擎的数据,然后整合返回给用户的。
首先我们选择一家图片搜索引擎,国内当然是百度图片啦,不然你用Google的话还得。。。
我们随便选一个志玲姐姐搜索吧,我们在搜索框里输入女神“林志玲”,点击搜索之后检查URL如下:
前面的参数我们可以不用管, 也就是说百度图片搜索只需要把关键字加在搜索参数word
后面就可以了。搜索出来结果大概是这样:
然后我们用鼠标点击右键选择显示网页源码
:
然后对照着DOM结构分析,我们找到了数据部分:
这时候我们发现,图片数据的信息(包括url,宽和高等)就在imgData
这个对象里, 我们只需要用字符串截取出这段,然后用JSON.parse
解析成Javascript Object
就可以访问thumbURL
, width
, height
等字段了。
接下来就只需要把前面获取到的图片显示出来就可以了。
显示图片用Image
组件,
这里要注意两点,一个是source
里面传递的是一个object
, 里面是uri
不是url
哦。 第二个是一定要记得设置width
和height
,否则是显示不出来的。
因为我们获取到的是很多张图片,所以用列表方式显示,可以用ScrollView
和FlatList
:
获取用户输入
如果我们只能显示默认的志玲姐姐的照片, 那怎么能叫搜索引擎呢。 所以我们用TextInput
来接收用户输入, 用Button
来触发搜索。
下图就是我们的成果啦, 大家玩得开心。
看, React Native开发APP还是蛮快的嘛, 而且这段代码支持Android和iOS哦。
完整代码地址https://github.com/magicly/rn-code/tree/master/ImageSearchEngine
当然React Native能做的事情还有很多,有兴趣的话欢迎扫描下方二维码或者点击阅读原文,阅读作者的GitChat达人课程《React Native 移动开发入门与实战》。
Recommend
-
134
website upgrading… 京ICP...
-
40
-
58
-
58
提出问题 从一个我常用的面试题,也是真实需求开始聊起: 你需要在前端展示 5000 条甚至更多的数据,每一条数据的数据结构是一个对象,里面有格式各样的属性。每个属性的值又可以是基本类型,对象,甚至数组。这里的对象或者数组内部的元素又可以继续包含对象或者...
-
36
话说github应该是可以被访问的吧? 但这几天我这里时不时就抽风似的访问不了, 赶紧上网搜索看有无github的镜像网站, 居然没有搜到。 好吧,自己动手好了! 打开熟悉的VS code, 使用node js + request package 很快就完成...
-
57
GoLang,习惯被人成为go语言,是目前后端程序员比较喜欢的一款语言,在区块链行业内,go语言更被称为是第一编程语言。go语言的优势有很多,比如内存回收、高并发、语法简洁、开发效率和运行效率都高等。本文通过一个例子,给大家介绍如何...
-
10
100行代码实现一个高性能网络转发小工具 JoeLei · 大约7小时之前 · 7 次点击 · 预计阅读时间 6 分钟 · 大约8小时之前 开始浏览 ...
-
5
典型的Streamlight Web应用程序仅在用户访问网站时运行。在这篇文章中,我们创建了一款即使在没有人查看的情况下仍能运行的应用程序。 TL;DR 我们制作了一款Streamlight安全摄像头应用程序,可以在没有任何用户查看页面的情况下保持运行...
-
7
100行代码实现React核心调度功能发布于 今天 02:16 English大家好,我卡颂。想必大家都知道...
-
4
100行Html5+CSS3+JS代码实现元旦倒计时界面 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK