Axure教程:用Axure做一個(gè)轟轟烈烈的搜索功能

9 評(píng)論 82717 瀏覽 193 收藏 15 分鐘

在產(chǎn)品的體量越來(lái)越大的趨勢(shì)下,一個(gè)搜索功能似乎已經(jīng)是產(chǎn)品功能列表里的標(biāo)配了。大的搜索引擎,如google、百度;小的搜索,如編輯器里的ctrl+F等。一個(gè)小小的搜索功能,可以帶給我們?cè)鯓拥乃伎寄兀?/p>

本文承接之前的Axure中繼器教程,繼續(xù)用理論+Axure原型實(shí)現(xiàn)。思考產(chǎn)品設(shè)計(jì)背后的是需求。

此案例主要實(shí)現(xiàn)以下內(nèi)容:

1、根據(jù)搜索框的關(guān)鍵詞,‘篩選’包含該關(guān)鍵字的商品,跳轉(zhuǎn)商品列表頁(yè)
2、搜索時(shí)顯示‘搜索提示’,可以點(diǎn)擊搜索提示直接跳轉(zhuǎn)該提示詞的商品列表頁(yè)
3、在搜索頁(yè)記錄‘搜索歷史’,在搜索列表頁(yè)可以刪除對(duì)應(yīng)的‘搜索歷史’
4、熱搜詞的記錄和跳轉(zhuǎn);

效果演示如下:
搜索
一、搜索是什么?
電商商城里的搜索功能本質(zhì)上是篩選,不同的篩選其實(shí)就是不同字段的查詢。例如,選擇價(jià)格區(qū)間,其實(shí)就是“price”這個(gè)字段增加一個(gè)上下區(qū)間范圍的條件,再將滿足條件的展示出來(lái)。而搜索也是字符之間的匹配,將滿足【已輸入】的【字符串】和商城內(nèi)所有商品的商品名稱【goodsName】進(jìn)行匹配,然后將滿足條件的展現(xiàn)出來(lái)。

搜索的作用就是讓用戶可以精確(包括模糊)地找到所想的商品。

下圖是氧氣和淘寶的搜索結(jié)果界面(一般也是【商品列表頁(yè)】)。

商品范圍搜索

二、范圍搜索
除了搜索的條件外,還有搜索的范圍。隨著商城的體量越來(lái)越大,搜索不僅僅是局限于商品的搜索,還有店鋪、用戶、文章、活動(dòng)等。

下圖為聚美優(yōu)品和蘑菇街的搜索界面,將搜索范圍的選項(xiàng)放置在搜索框上方:

new_page_1

古典一些的就像淘寶wap,需要點(diǎn)擊搜索范圍。

默默

而淘寶wap端還是需要點(diǎn)擊“寶貝”來(lái)選擇搜索范圍。

小結(jié):搜索本是一個(gè)復(fù)雜的過(guò)程,能讓用戶點(diǎn)擊,滑動(dòng)等手勢(shì)完成就盡量不要使用輸入。在搜索范圍的分類較少時(shí)(如聚美和蘑菇街),可在搜索框上方或下放添加選項(xiàng)卡,這樣可以比淘寶wap少一次點(diǎn)擊,而且對(duì)于搜索的分類展現(xiàn)得更為充分。當(dāng)搜索范圍較多時(shí),可以參考淘寶,在搜索框下放設(shè)置橫向滑動(dòng)的模塊,供用戶選擇。

三、中繼器+動(dòng)態(tài)面板+函數(shù)實(shí)現(xiàn)搜索

之前寫了中繼器的一些簡(jiǎn)單用法,這次做一點(diǎn)復(fù)雜的功能吧。其實(shí)我工作中也不常用到中繼器,快速原型繪制唄。但是,用不用和你會(huì)不會(huì),是兩碼事。

OK,廢話不多說(shuō),看此文需要有一些Axure和中繼器的基礎(chǔ)知識(shí),重要的不是做出了一個(gè)效果,而是通過(guò)一段思考來(lái)完善產(chǎn)品里的需求。(之前的文章鏈接會(huì)放到文末。)

兩個(gè)頁(yè)面,用了六個(gè)中繼器。所以我說(shuō)這是轟轟烈烈的搜索。╮(╯_╰)╭

建議點(diǎn)開上方的原型鏈接,對(duì)應(yīng)著看。

搜索

1、點(diǎn)擊搜索框跳轉(zhuǎn)

關(guān)于頁(yè)面的命名:

商品列表頁(yè):GoodsTable

搜索頁(yè):Seach

商品列表頁(yè)的搜索框:seachText-goodslistpage

搜索頁(yè)的搜索框:SeachText-seachpage

搜索提示:prompt-repeater(輸入文本時(shí),下面彈出的列表項(xiàng),因?yàn)槭侵欣^器,所以用了repeater)

搜索歷史:seachHistory(記錄搜素歷史)

21

解釋:1、在點(diǎn)擊商品列表頁(yè)的搜索框時(shí),設(shè)置頁(yè)面跳轉(zhuǎn)到搜索頁(yè)(設(shè)置sight為Search)

2、進(jìn)入搜索頁(yè)時(shí)隱藏搜索提示(搜索提示只有輸入文本時(shí)才提示)

2、搜索頁(yè)的樣式設(shè)置

E87D.tmp

這是搜索頁(yè)的樣式,【搜索發(fā)現(xiàn)】和【歷史搜索】分別是兩個(gè)動(dòng)態(tài)面板套著中繼器。

1)搜索發(fā)現(xiàn)(請(qǐng)自動(dòng)忽略圖中文字….)

微信截圖_20160929213453

這是中繼器的基礎(chǔ)用法,熟練一點(diǎn)的話比一個(gè)一個(gè)copy要快。而且裝逼能裝圓一點(diǎn)。這個(gè)是固定不動(dòng)的項(xiàng),需要修改的話,可以直接在中繼器的數(shù)據(jù)集里修改。

熱搜詞(搜索發(fā)現(xiàn))是計(jì)算商城內(nèi)的所有被搜詞,然后顯示出來(lái)。減少用戶手動(dòng)輸入小號(hào)的時(shí)間,提醒用戶當(dāng)下流行的元素。

2)歷史搜索

16DF.tmp

歷史搜索的字段賦值和之前的一樣,這里為了展示,默認(rèn)添加了“男裝”和“女裝”。

用動(dòng)態(tài)面板套起來(lái),記得給動(dòng)態(tài)面板設(shè)置【自動(dòng)調(diào)整為內(nèi)容尺寸】,因?yàn)樵诤竺娴乃阉髦袝?huì)不斷產(chǎn)生新的【歷史搜索】,會(huì)逐漸把動(dòng)態(tài)面板撐大。(為了insert,即是增)

這是【歷史搜索】中繼器中給【刪除】icon增加的操作,單機(jī)【垃圾桶】時(shí),刪除【歷史搜索】中繼器中的這一行(This)。(為了delete,即是刪)

微信截圖_20160929214239

歷史搜索:是為了記錄用戶的關(guān)注習(xí)慣,減少用戶下一次搜索時(shí)需要的時(shí)間。也是商城搜索數(shù)據(jù)的一個(gè)途徑,即商城內(nèi)的熱搜詞,來(lái)源于歷史記錄的匯總。

3)搜索提示

微信截圖_20160929215437

在搜索頁(yè)有隱藏的中繼器,這就是搜索提示。為了讓大家看清楚,所以我把這個(gè)中繼器內(nèi)的樣式做得很特別。可以在上面的鏈接里嘗試輸入數(shù)據(jù)集中的文字,試試搜索提示的快感。

還是一個(gè)從數(shù)據(jù)集給頁(yè)面賦值的過(guò)程。

搜索提示是在用戶輸入時(shí),補(bǔ)全用戶可能將會(huì)輸入的詞匯,減少用戶的輸入操作。

四、搜索提示的顯示

上面幾步主要是把需要的頁(yè)面樣式和數(shù)據(jù)補(bǔ)充齊全,也就是我之前說(shuō)過(guò)的Axure的狹義MVC理論(哈哈哈),到了這一步,V和M都有了,需要一個(gè)C。

1)顯示搜索提示

微信截圖_20160929220152

這是給搜索框的用例,涉及到兩個(gè)函數(shù):substr()和length。

x.substr(start,length),釋義:從start開始截取字符串x,截取的長(zhǎng)度為length長(zhǎng)。

x.length:返回字符串的長(zhǎng)度。詳情可以參看W3C。

微信截圖_20160929220610

解釋一下這句話:加入我現(xiàn)在輸入【潮】字,那么就給搜索提示這個(gè)中繼器添加了一個(gè)篩選條件,這個(gè)條件很長(zhǎng):

如上圖的局部變量所示:我在搜索框(saechText-seachpage)中輸入了【潮】,那么局部變量LVAR1就等于【潮】。上面這一坨:[[Item.promptText.substr(0,LVAR1.length)==LVAR1]]

我來(lái)分段解釋一下:LVAR1.length就是現(xiàn)在LVAR1這個(gè)局部變量的長(zhǎng)度,現(xiàn)在它的值是【潮】,長(zhǎng)度就是【1】;substr(0,LVAR1.length),就是截取字符串從0到【1】(分號(hào)前計(jì)算出來(lái)的);那么截誰(shuí)呢?就是寫在它前面的Item.promptText;截下來(lái)呢,那就對(duì)比一下是不是等于【LVAR1】(潮)。

哎喲喂。好麻煩。

換一種說(shuō)法:

現(xiàn)在,我輸入了【潮】,就比較一下搜索提示的數(shù)據(jù)集里面第一個(gè)字是【潮】的,然后顯示出來(lái)。

微信截圖_20160929221244

現(xiàn)在,我輸入【潮來(lái)】,那么就比較數(shù)據(jù)集中前兩個(gè)字是【潮來(lái)】的數(shù)據(jù)并顯示。只有【潮來(lái)了】

微信截圖_20160929221403

(PS:最好再加一個(gè)點(diǎn)擊提示文字,直接跳轉(zhuǎn)該關(guān)鍵詞的搜索頁(yè),看完你就會(huì)了)

再加上一個(gè)輸入的字符串為空,或不為空的判斷。

五、轟轟烈烈的搜索按鈕

大家都知道,輸入關(guān)鍵字后,需要點(diǎn)擊【搜索】,才能跳轉(zhuǎn),所以接下來(lái)就是最后一步了。

微信截圖_20160929221750

用例那邊很多東西,而且一個(gè)不能少,而且順序不能改,很孤獨(dú)。

挨著解釋一下:

點(diǎn)擊搜索后,需要給商品列表頁(yè)添加篩選條件,而這個(gè)篩選和之前的搜索提示不一樣:

1)搜索提示是按順序,一個(gè)字對(duì)應(yīng)一個(gè)字,就像上面一樣,【潮來(lái)】就只有一個(gè)匹配的,加入搜索【潮來(lái)了】中的【來(lái)了】就搜索不到了。

這里的商品搜索是檢索,效果就是,當(dāng)我輸入【來(lái)了】可以搜索到【潮來(lái)了】。

所以這里用到了一個(gè)函數(shù)IndexOF,用法如下:

X.indexOf(‘value’),在X里搜索(value),返回值是第一次檢索到value的位置。

例如在【潮來(lái)沒(méi)來(lái)】中搜索【沒(méi)來(lái)】,則返回2;搜索【潮】則返回0。

所以:

微信截圖_20160929222548

再解釋一下:還是一個(gè)局部變量,然后就是這[[Item.name.indexOf(LVAR1)>0]]一坨。

大于零就是存在的意思。OK。

2)一次解釋一下右邊這一坨:

D4F2.tmp

第一個(gè):添加篩選(篩選出符合條件的項(xiàng))

第二個(gè):設(shè)置頁(yè)面返回商品列表頁(yè)(沒(méi)有這個(gè)就看不到效果了)

第三個(gè):跳轉(zhuǎn)之后,將你搜索的內(nèi)容添加到【搜索歷史】中(沒(méi)有這個(gè)就沒(méi)有數(shù)據(jù)記錄了,數(shù)據(jù)就是錢?。?/p>

第四個(gè):將你搜素的文本填充到商品列表頁(yè)(不然看不出來(lái)你‘搜’了啊~)

第五個(gè):把搜索頁(yè)的搜索框內(nèi)的文本清零(不然你搜了個(gè)【潮】,下次進(jìn)來(lái)就會(huì)有殘留的【潮】)

OK~完成了。

最后總結(jié)一下:

1、用到了三個(gè)函數(shù),有興趣的可以查一查,都是JS相同的函數(shù)。哦,微信小程序來(lái)的時(shí)候,你說(shuō)你要學(xué)前端,學(xué)了?

2、文件中的icon都是取自iconfont的淘寶手機(jī)端,部分結(jié)構(gòu)為了方便展示作了修改,但不影響整體,希望見(jiàn)諒

3、一點(diǎn)小體會(huì)吧,只是一個(gè)小小的搜索功能,不管做沒(méi)做出來(lái),其實(shí)都不重要。在這個(gè)案例中,我們用了兩種字符串的匹配方式(截取和檢索),搜索提示,搜索歷史,熱門搜索,中繼器的增(歷史記錄)刪(垃圾桶)和篩選,重要的是對(duì)搜索的認(rèn)知有更進(jìn)了一步。

4、為什么叫轟轟烈類?因?yàn)檫@是我寫得最長(zhǎng)最累的一篇了。

5、祝大家國(guó)慶節(jié)玩得開心。

本文由 @浩程君 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 求原型鏈接~

    來(lái)自湖北 回復(fù)
  2. 看了這篇文章沒(méi)有所說(shuō)的原型鏈接。有沒(méi)有原型鏈接呢

    來(lái)自四川 回復(fù)
  3. 同時(shí)會(huì)設(shè)計(jì)相關(guān)的后臺(tái)嗎,記錄用戶的搜索歷史等等

    來(lái)自廣東 回復(fù)
  4. 求分享一下原型源文件,照著做,貌似走不通 ??

    來(lái)自北京 回復(fù)
  5. 可以問(wèn)一下,關(guān)于APP的時(shí)間檢索,有哪些比較好的表達(dá)形式么

    來(lái)自浙江 回復(fù)
  6. 文章中沒(méi)有找到您說(shuō)的原型鏈接,還有您說(shuō)的之前的中繼器方面知識(shí)的鏈接

    來(lái)自河北 回復(fù)
    1. 點(diǎn)擊右上角頭像可以查看之前的文章,鏈接的話簡(jiǎn)書私信我發(fā)給你吧,ID:七光年

      來(lái)自上海 回復(fù)
    2. 你好呀,能發(fā)原型鏈接給我嘛?

      來(lái)自廣東 回復(fù)
    3. 來(lái)自上海 回復(fù)