如何零基础开发一款电商 App?
App开发是一个非常有趣的事情,如果你试着开发一个自己的app的话,你一定会爱上这项活动。
编者按:React Native愈发火爆,如果你尚未接触过,不如看看本文作者的入门指南,他会带你体验基于RN平台开发一款电子商务搜索类App的奇妙旅程!本文编译自Hackernoon,原文标题为:Building an e-commerce search app with react native,推荐有一定编程基础的读者阅读。
今天我们来聊一聊是如何在RN平台开发一款用于查找图书数据库的电子商务移动app。如果你之前没有使用过RN,那么现在就跟我一起开启你的移动端Javascript开发之旅吧。
2018年Javascript迎来了前所未有的发展,各种库、框架、开发工具都已经发展的相当的成熟了,整个社区也都在致力于使网上冲浪变得更加方便快捷。当然,开发过程中还是会存在一些bug,但是,如果你会用Javascript,那么这些小问题就都不是事。你可以利用JS来制作web app、后台服务器、移动端app。
React Native不仅可以像Cordova/Ionic/Phonegap等利用WebView架构和Javascript进行移动端APP开发,而且支持native编译,因此如果有需要也可以编写native代码。
你需要提前知道的事情
现在React Native非常的火,网上有很多的资源,所以你可以很容易从互联网上获取学习资源,因此,在你进行RN程序开发之前最好有一定的学习基础。如果你是刚接触这个项目,你可以先尝试学习下官方教程,如果,你更愿意跟着视频课程进行学习,那么我会强烈推荐你去看Kent C. Dodds在egghead上的免费课程“The Beginner’s Guide to ReactJS”
如果你对ES6+同样了解的话,那就再好不过了。这有一本ES6的入门指南,有了它,你就能很快上手了。
作为一个初学者,虽然我建议你去认真学习一下React,并开发一些网络版的APP,但是,如果你想抓紧时间上手开发自己的程序的话,好好的了解React的基本架构也是很有必要的,因为React和React Native具有相通的架构,只是他们最后的目标不同,一个是服务于Web APP的,另一个是服务于native APP
如果,你使用React或React Native 进行产品开发,你将节省大部分的时间和精力,因为,无论是IOS还是Andriod平台,社区上都有很多其他人共享的代码。这也是为什么RN开发平台被像爱彼迎,脸书,照片墙,沃尔玛和特斯拉等公司接受并利用它开发移动端app的原因。
基本概念
简单的介绍一下React Native是如何进行工作的以及JavaScript的代码是如何装换成到一个强大的移动端app。我们需要知道的是任何的一个React Native 应用都是双线程的:
1. 主线程
主线程管理着程序的用户界面,处理包括手势和触摸在内的所有本地交互。因为RN允许在源代码中添加android java,Objective C或swift代码,所以这些代码块也可以在此线程中执行。是不是感觉这样开发变得很舒服。
2. JavaScript 线程
这个线程执行在JavaScript编译器写的JavaScript代码(默认状态下是在iOS平台中,并且通过构件可以发送到Android设备上。)
为了使应用程序正常工作,两个线程之间就需要搭一座桥接器来实现交流,就像下面的示意图展示的那样。
React Native core architecture
正如名字所表示的,中间件可以帮助实现JavaScriprt线程和主线程之间的数据(信息)处理。这些信息可以被异步和批量处理。中间件可以保证JS代码与本机模块进行对话并且与设备API交互。
现在我们对RN的结构有了基本的了解,接下来我们来介绍实现的过程。
搭建开发环境
如果你已经安装了RN并且对开发系统比较了解,你就可以跳过去看下一部分内容了。如果你是刚入门的新手,那么你可以按照官方的安装指南(会有更加详细的介绍)去操作,或者按照我下面说的去做。首先确认你的电脑上已经成功安装了node和yarn模块。我们将利用CRNA(create-react-native-app )工具来创建模版,运行下面的指令实现程序“HelloNative”
create-react-native-app HelloNative
cd HelloNative
npm start
这将为你启动一个可扩展的服务器,并在终端输出一段QR代码。使用CRNA工具出现的警告只有:
it may not use the latest version of react-native
如果出现这个警告,你可以使用Expo CLI 或者 Expo XDE去解决。
然后安装Expo 在你的iOS系统或者Android系统上,并将手机和你的电脑一样联接到网络中。使用Expo app你就可以在你的手机上进行操作啦,想想就很令人激动把。就像下面图显示的一样:
React Native app
你可以运用yarn ios 和yarn android指令分别在iOS和Android模拟器上测试,这样你就可以运行你的React-Native app啦。
如果你知道如何打开app中的扩展菜单,你将会看到有支持热加载和实时重载选项。这些可以使你可以迅速在Andriod环境下加载你的app
A closer look at the developer options
扩展操作同时具有了debugging模块,在后面的内容中我们将进行详细的介绍。
调试模块
远程调试JS程序可以让我们查看相关的控制信息和错误信息。这让我们的开发和调试过程变得更加容易,另外,你还需要安装 React Native debugger
React Native Debugger in action
这是一个非常实用的工具,可以帮助我们查看React Native app中的模块声明和类树,你也可以在上面查看和码上你开发的app需要运用的模块。
准备阶段
React Native提供了一些开发app的基本模块,你可以在list of available components here中找到React Native提供的不同平台下对应的功能模块,这些模块可以帮助你进行开发属于你自己的app,这让开发过程变得更加简单。React Native支持fetch 功能,这样使得开发人员在开发过程中就可以像网页一样从服务器上获取数据和处理http请求。
对于我们将要设计的搜索app,我们将使用能够在短时间内遍历大量数据的NoSQL数据架构进行开发。它将对以JSON为对象的所有文档进行全文搜索。
可能你以前没有接触过Elasticsearch,但是你不得不接受使用Elasticsearch是个趋势。你可以从下面的介绍中学习相关的基础。
Elasticsearch的起步并不是那样的简单,设置环境、添加数据、查看数据等等操作对于一个初学者来讲并不是一件简单的事,因此,Elasticsearch的社区里面提供了很多开源的工具来帮助初学者进行开发。
· Importer 添加数据到Elasticsearch中
· Data Browser 以excel表格的形式查看Elasticsearch中的数据。
· Query Builder 组织管理关联的Elasticsearch队列。
在这些工具的帮助下,我们可以直接利用这些工具和React Native 去组建一个强大的移动端图书馆app
你可以按照官网的指导安装设计Elasticsearch服务器,或者你可以申请一个appbase.io 的账号,appbase.io 提供了一个Elasticsearch的服务器,这样就更加方便了,因此,我们就用appbase.io平台开始我们的开发。
我已经简单的创建了一个基本的数据搜索的app,你可以进入下图进行查看。
Dataset of books
你可以利用最下面的 Clone this app选项复制已经存在的模版作为你开发的基础。这些授权信任书可以帮助我们连接到UI上,我们在这篇教程中要使开发的app的授权信任模块如下
{
app: "good-books-ds",
credentials: "nY6NNTZZ6:27b76b9f-18ea-456c-bc5e-3a5263ebc63d",
type: "good-books-ds"
}
开启 Reactive search之旅
我们将使用ReactiveSearch来进行开发,因为ReactiveSearch是一个Elasticsearch上的UI模块的React和React Native通用的开源库,它提供了一个丰富的资源库、完善的配置环境以及架构,这样你就可以连接到任何一个Elasticsearch的服务器上,
为什么我们需要ReacttiveSearch呢?
ReactiveSearch提供了一整套连接到Elasticsearch服务器上的模块,可以创建队列、具有灵活直观的特点。并且可以让你的模块可以与其他的模块实现通信,比如说你创建了一个A模块,A模块实现了升级更新,这样需要B模块可以获取信息并且可以实现不依靠任何关联额自主的实现更新。
Reactivesearch-native上有很多的nativeUI模块,这些可以使你开发app的UI 模块的时候有所借鉴,让你的app变得更加的美观和智能。
开发搜索app
我们需要在我们的React Native项目下利用下面的代码安装reactivesearch-native
yarn add @appbaseio/reactivesearch-native
全部的ReactiveSearch的模块都被包装在ReactiveBase 的容器中,
我们将使用这些在App.js中Adding ReactiveBase component React Native 中的Styling和网页类似,我们这里采用的是Flex中的基本Styling,如果你之前没有接触过这个Flex的话呢,个人建议你可以尝试从FlexBox Froggy开始起步。
除了Stylesheet以外,我们的代码中还使用了React Native中的两个其他的模块。
· View 在React Native中和html中的div元素差不多是一个容器,可以支持多种操作。
· Text 这个是React Native中可以查阅相关内容的的模块。
在我们设计的BookSearch app中,我们将需要尝试Reactivesearch-native中的另外的两个模块:
1. Search box for searching the books:
我们这里将使用reactivesearch-native中的DataSearch模块去实现多区域的搜索功能,其核心如下所示
<DataSearch
componentId="searchbox"
dataField={[
'original_title',
'original_title.search',
'authors',
'authors.search',
]}
placeholder="Search for books"
autosuggest={false}
/>
DataSearch使用起来相当的方便,由于其本身就是在dataFied(s)的队列中,因此这个模块就可以轻松的帮助我们实现转入到ReactiveBase模块中,并且可以传递和接收一切索引的信息,这样就不需要我们自己去编写相关的队列算法了。
2. Result List View for displaying the search results:
结果展示模块
我们在结果的输出上主要采用的是reactivesearch-native 中的ReactiveList模块:
<ReactiveList
componentId="results"
dataField="original_title"
size={7}
showResultStats={false}
pagination={true}
react={{
and: "searchbox"
}}
onData={(res) => (
<View style={styles.result}>
<Image source={{ uri: res.image }} style={styles.image} />
<View style={styles.item}>
<Text style={styles.title}>{res.original_title}</Text>
<Text>{res.authors}</Text>
</View>
</View>
)}
/>
上面的代码是如何工作的呢?
· dataField: 通过name field去调整结果
· onData: 接收返回值为JSX相关结果的函数,这是我们常用来查看部分结果的方式。
如果你想让你的app变得美观,想要调整一些字体的话,可以在你的程序里面输入下面的代码
async componentWillMount() {
await Expo.Font.loadAsync({
Roboto: require('native-base/Fonts/Roboto.ttf'),
Roboto_medium: require('native-base/Fonts/Roboto_medium.ttf'),
Ionicons: require('@expo/vector-icons/fonts/Ionicons.ttf'),
});
}
编后语:如果你很有兴趣,还想了解更多,不妨去看看这两个论坛,和更多朋友交流下你的想法:
1. ReactiveSearch GitHub repo
2. ReactiveSearch docs
原文链接:
https://hackernoon.com/building-an-e-commerce-search-app-with-react-native-2c87760a2315
案例研究:谁不喜欢吃小蛋糕呢?关于蛋糕店的电子商务应用程序-Cookiss
编辑导语:对于电子商务应用程序来说,产品详情页是影响产品转化率的重要因素,一个优秀的产品详情页可以吸引用户点进来并且购买产品。在本篇文章中,作者使用设计思维分析蛋糕店的电子商务应用程序,我们一起来看看吧。
在这个挑战中,我的角色是UX研究员和UX设计师 创建研究计划,使用设计思维来帮助我的设计过程,并制作用户角色、用户旅程、信息架构,用户流程,线框,模型和原型。
对于这个挑战,我使用设计思维 来帮助我的设计过程。
一、案例研究背景
在这个一切都被数字化的时代,仍然有很多蛋糕店是手动下单,需要买家到店取餐,有些是在线的,但买家因为没有直接看到目录和价格而感到不确定,还有所有的蛋糕店大多是自己制作网上订购方式 。
所以除了一家商店外,购物者没有太多的蛋糕选择。买家也懒得一个个去店里,尤其是要带着预购结果去店里,要重复两次,并且还要排队。
二、研究计划
创建产品创意创建用户画像创建客户旅程地图制作线流寻找一些情绪板创建设计系统创建高保真创建原型三、定义
在定义过程中,我正在做几件事来确定问题,找到痛点并制定我们应该如何做:
1. 问题
从背景研究中我得到了几个指出用户需求和洞察力的问题,所以我提出这个观点来知道要解决什么问题:
从这个角度来看,我制作了用户画像:
在制作用户角色之后,我正在做的下一步是创建客户旅程地图:
四、设计
定义之后,我有几件事要做,那就是:
1. 优先考虑指标
因为我在定义过程中做得很好,所以我得到了几个优先级的想法:
2. 信息架构
根据这些指标,我可以制作几个 IA,帮助我设计应用程序,让用户知道如何使用应用程序,而无需再次学习:
3. 用户流
做完信息架构(IA)后,我做了用户流的制作过程,此用户流程侧重于用户购买过程,从注册阶段到支付阶段:
4. 线框
这是我根据 IA 和用户流程创建的线框:
5. 线流
有了线框后,我创建了线流以了解用户在使用应用程序时的路径:
当用户定向到主页的应用程序的帐户时:他们选择了他们想要的蛋糕,然后他们阅读了蛋糕的描述。
如果他们不喜欢样品蛋糕,他们可以进行定制。如果他们喜欢样品,他们会转到购物车页面,然后在付款页面中他们选择他们的地址并选择他们支付蛋糕的方式,然后在我们使用第三方快递的这个应用程序中选择快递。
在他们支付蛋糕后,他们可以等待蛋糕交付而无需来到商店。
五、原型与设计
为了制作原型和设计,我做了几件事:
1. 情绪版
情绪版是我们创造产品设计灵感的集合,这些产品设计聚集在一块版面上。
2. 设计系统
我的设计系统包括:
排版颜色输入表格肖像学插图按钮(主要、次要、单选、复选框、切换、徽标、图像)统计栏头部导航栏和卡片对于设计系统,我将其分为 3 类,即原子、分子和有机体。
3. 高保真
创建基于线框图的高保真,来自情绪板的灵感,并使用设计系统将其排列成一页。
4. 原型制作
六、测试
1. 问题
1.1 研究方法
深度访谈&可用性测试
1.2 研究目标
了解用户使用Cookiss做蛋糕电商的需求了解 Cookiss的设计成功率1.3 受访者标准
1.4 工具
1.5 用户任务
注册和登录: 要求用户注册并登录应用程序并观察用户的行为;选择项目和交易: 要求用户购买且停在购物车等待付款页面并观察用户的行为;填写地址: 要求用户填写地址并观察用户在做什么;付款: 要求用户为蛋糕付款并观察用户在做什么;跟踪顺序: 要求用户跟踪订单并观察用户在做什么。2. 结果
第一个任务的结果是用户感觉注册和登录就像他们在使用其他电子商务应用程序时一样,这与他们在注册和登录应用程序时的行为相符。第二个任务的结果是多种多样的,但大多带有负面反馈。用户感觉首页很紧,没有喘息的空间,因为只有物品卡。当他们将商品放入购物车时,他们没有注意到空购物车图标和填充购物车图标之间的区别。第三个任务,反馈比以前少,这只是小问题,但会引起混乱。用户没有注意到切换按钮使地址成为主地址,因为颜色与背景混合。第四个任务,用户对流程没有问题,但他们给我的反馈是:地址框太小,看不清楚和所选卡的颜色太浅所以没有区别第五项任务是最清晰的任务,因为所有用户都没有问题,他们觉得它清晰无瑕。3. 结果总结
七、迭代
任务2迭代:
1. 主页
痛点: 用户觉得首页太紧,只装蛋糕卡,没有变化迭代: 提供一个分类图标,让主页看起来不像只有蛋糕卡2. 将物品放入购物车
痛点: 用户对已经在购物车和尚未在购物车中的蛋糕物品之间的区别感到困惑,因此他们不确定迭代: 提供购物车中物品的动画,购物车图标从轮廓图标变为填充图标任务3迭代:
痛点: 填写地址时用户不注意是否有切换主要地址,用户想快速填写地址,建议用地图填写地址迭代: 提供更深的灰色,以便切换按钮更明显,并提供地图作为快速填写地址的一种方式任务4迭代:
痛点: 用户感觉地址框间距过紧,选中的项目不太显眼迭代: 将间距从 0px 到间距 10px,并为所选项目提供更深的颜色,并将地址框从字体大小 12px 更改为 16px这个电子商务的应用的设计是按照用户的需求和用户在网上购物的习惯进行设计,主要的问题在于视觉设计,没有给用户的足够的空间呼吸。但是,在完成迭代过程后,我可以很好地处理这个问题~感谢你的阅读:)
(部分图文来自网络,若有侵权,请联系删除。)
作者:交互设计小助手;公众号:美国交互设计资讯(ID:gh_deb1a91db646)
原文链接:https://mp.weixin.qq.com/s/ekNtS0c8MZAhVrCPFCBKig
本文由 @美国交互设计资讯 授权发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash,基于CC0协议。
相关问答
电子商务应用 知识要求?电子商务专业需的知识和能力主要有以下2点:1.具备良好的职业道德规范和职业素养,能够适应企业文化,符合企业发展需要;2.具备电子商务的基本理论知识,掌握...
erp电商系统实施的方法和步骤是什么?企业实施ERP系统是一项复杂的系统工程,一般以项目形式完成。项目领导小组一般由企业高层领导和服务方组成,通过定期和不定期会议指导项目的运作和排除项目组难...
电子商务 的定义和 应用 模式是什么..._电子商务_帮考网电子商务是利用互联网和数字技术进行商业活动的过程,包括在线购物、在线支付、电子商务平台、电子商务营销等。电子商务应用模式包括以下几种:1.B2...
电子商务 的 应用 包括哪些方面?电子商务可提供网上交易和管理等全过程的服务,应用于广告宣传、咨询洽谈、网上定购、网上支付、电子账户、服务传递、意见征询、交易管理等方面。1、广告宣...
电子商务 的定义及 应用 ?电子商务至今没有一个统一的定义;电子商务是指利用电子信息技术和网络设备等先进的手段进行商务交易电子商务的应用一般是网上交易和管理的全过程,因此可以进...
电子商务 的 应用 有哪几种类型?电子商务人才有以下几种类型:(1)技术应用型技术应用型人才突出电子商务的实际运用,符合中小企业“来之能战,战之能胜”的人才需求特点。这要求他们了...电...
学 电子商务 的但是没接触过运用这快,新手如何学会淘宝运营?1、既然是电子商务专业的,找相关的工作不难,至少专业相符,有一些基本的理论基础,比很多人更有优势。2、没有实际的经验,这也是很正常的,任何人都是从不会...
想做社交电商,该怎么入门?全文干货,长文预警(其实也没多少字)在做社交电商之前,我们最好搞清楚什么是社交电商01什么是社交电商社交电商一词首先就标注好了这种新型模式的关键词:...
电子商务 ,论述客户关系管理的核心业务流程和 应用 结构的整合要求?客户关系管理(CustomerRelationshipManagement,CRM)是一个不断加强与顾客交流,不断了解顾客需求,并不断对产品及服务进行改进和提高以满足顾客的需求的连续...
电子商务 的主要有哪些 应用 模式?电子商务主要有以下应用模式:非完全电子商务:需要依靠物流等因素。如:衣服等有形产品。二、按照电子交易范围分类:远程国内电子商务:本国范围内...电子商...