您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

facebook為什么加載不出來(產品經理必修課(6):用戶體驗) - 副本

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-08 03:06:50【】3人已围观

简介臉書為什么卡在加載界面臉書為什么卡在加載界面的原因有。1、網絡差,卡頓。2、運行內存不足。3、軟件加載錯誤。4、軟件運行路徑出錯。什么是跨終端鏈接:買粉絲s://juejin.買粉絲/post/694

臉書為什么卡在加載界面

臉書為什么卡在加載界面的原因有。

1、網絡差,卡頓。

2、運行內存不足。

3、軟件加載錯誤。

4、軟件運行路徑出錯。

什么是跨終端

鏈接:買粉絲s://juejin.買粉絲/post/6944289729990885389

鑒于很多人對跨端技術感覺很神秘,雖然我實際上還沒有寫過一個從0到1的跨端框架,但是我曾經用Yoga(布局引擎Yoga(React-Native)做過一些簡單的跨端的事情,后來用了Weex。研究跨端有一段時間了,想科普一下。

科普之前,首先你要知道,為什么需要跨端技術?我們通常會把Weex和React-Native(本文統稱為RN)說成是跨端技術嗎(Flutter沒有單獨提到)?

其實不是,好像Android/iOS本來是兩個人的,但最終變成了一個人。我的人力減少了一半!

但前提是這個人力需要懂Android,iOS,JavaScript,更懂,不然出了問題,怎么修?

所以在中國的互聯網環境下,很難招到這樣的人。大家都在研究PPT架構技術,職場生存理論,30歲如何解脫財富。我們如何有時間擴展我們的技術堆棧?

端上開發很慘,總有崩潰(使用崩潰,閃退)而且沒有辦法遠程修復。只能等下一個版本給使用市場推一個修復bug的新版本。

但如果推送新版本,用戶可能不會升級。因此,許多公司研究了各種熱修復框架,尤其是在Android平臺上。有很多熱修復框架,主要是由DexClassLoader來完成。

但是,最早的時候,WebView有一個很大的問題,尤其是Android。而且加載網頁肯定要花時間,過程中屏幕會一片空白等等。所以很多人圍繞這些做了很多優化。我個人覺得最有用的其實是線下套餐。同時,每一代WebView也在更新升級。然后一些有實力的公司開發了自己的所謂瀏覽器內核,各種黑科技,如何提速,支持各種特性等等。但是好像沒有開源:dog:

不算。這只是跨安卓和iOS,不把我的PC當目的?

其實瀏覽器是跨端的,每個平臺都可以用Chrome(其他瀏覽器主要是想做不做)!但是它也有自己的問題,因為各家都有自己的瀏覽器,內核不同,劃分越來越大。chrome(Blink)/Safari(WebKit)/Firefox(Gecko?)等等,尤其是對css的支持。

Developer.mozilla.org/zh-CN/docs/.這個網站可以檢查一些瀏覽器的兼容性。例如,邊框寬度的兼容性如下:

其實也不是不可以,但是這樣做相當于直接為OpenGL或者其他圖形引擎編程,而且要自下而上的搭建一套渲染機制,打包各種基礎UI組件給開發者使用,或者留下很多漏洞讓開發者自定義自己的UI,非常復雜。但其實Flutter就是這么做的,所以Flutter2.0又開始向桌面端發展了,而且不局限于Android/iOS,但不知道能走多遠。還有的是搞React-Native-Skia的,所以用js代碼直接調Skia(2D圖形渲染引擎)?(具體沒看過)

你寫的JavaScript代碼為什么能運行?這取決于JavaScript引擎。

扔給它一段js代碼(實際上是一個文本字符串),它就能幫你計算結果,處理邏輯。

常見的Weex、RN、Hippy也依賴于此(MLN使用Lua)進行邏輯處理。

這個時候會有很多概念。

有些人喜歡把JavaScript引擎稱為JavaScriptCore(不知道為什么,可能是因為iOS開發者才是研究這些比較深入的人,因為蘋果的JavaScript引擎叫JavaScriptCore。蘋果的這個JavaScriptCore呢?很多人喜歡稱之為JSCore或者JSC)。所以,后來看到這些名詞,我總是把它們帶入語境中去感受他想說的是JavaScript引擎還是蘋果的JavaScript引擎3354 JavaScript Core (JSCore/JSC)。

先說JavaScript引擎。

是的,有這么多!當然還有JavaScriptCore(不在圖中)。

最后一行是跑分,越多越好。有JIT的V8在3w掛所有東西。其中QuikJS極小,得分很高。估計很多人會用QuikJS做跨端JavaScript引擎吧?赫爾墨斯是由臉書創造的。看來Android目前在RN中使用的JavaScript引擎已經取代了之前使用的JavaScriptCore。RN為什么一直不用V8?這個我也不知道.

但是很多人都在搞Android的V8項目,Github上也有一些開源項目。其次,iOS不支持JIT,有自己的JavaScriptCore,沒有JIT改V8似乎意義不大。

一個正常的跨端框架最簡單的情況如下(后面會討論問題,逐步豐富):

用一個

簡單的例子看

假設我的 js 文件中就是要 展示一個紅色的 div 方塊 。那么首先,端會把這個文本傳給 JavaScript Runtime,它解析完后形成一個約定的格式,比如如下的 JSON 格式(里面的值用來描述是一個100*100紅色方塊,我隨便定義的)

{ "name":"div", "width":"100", "height":"100", "background":"red"}

通過 JavaScript Runtime 和 端(Android/iOS) 通信,把這個消息傳回去。

端拿到了消息,發現要創建一個 100*100 的叫做 div 的東西,沒有 div 啊!這就需要端上提前埋好代碼,比如 Android 里有 FrameLayout,那么就有類似的注冊代碼

// 偽代碼register("div", FrameLayout.class);

然后端就知道了,oh!我需要創建一個長100寬100的正方形。

首先,這是框架設計提前思考好的,究竟要支持哪些基礎組件,比如 image 、text 等等。而且一般這里都會開個口子,讓開發者可以自己擴展組件,比如你需要一個橫滑列表,沒提供怎么辦?看看 div 怎么注冊的,按照它的過程注冊一個列表就好了。這也可以 PPT 吹成: 擴展跨端框架 ,其實 門檻比自定義 View 還要低 。

前面說了 JavaScript Engine,這里咋又來了個 Runtime?

JavaScript Engine 能做什么?

什么都做不了,只能解析執行 js 代碼

那么問題來了,我怎么去 描述 我寫的 js 代碼代表的 視圖 呢?其實不用描述,js 代碼只要在 內存中 維護好一個樹形結構就好了,就是一個 Object,因為實體在具體的端上,怎么理解呢?

左邊只要在內存中維護好這樣一個樹形結構就好了,傳遞給客戶端時,轉為

{ "name":"div", "children":[ { "name":"image" }, { "name":"div", "children":[] } // 等等 ]}

端上拿到消息,創建視圖為右圖中的結構即可。

如何維護好這個模型呢?調用什么 js 的方法發送消息呢?怎么給這些個 div 加上 css 來描述它的大小形狀呢?等等更復雜的一系列的前端問題,都需要 寫代碼 來實現。

所以一般都會有個 買粉絲re.js 或者 framework.js 類似的一堆 js 代碼,就是用來處理這些事情,而這些代碼同樣依靠 JavaScript Engine 來執行。

從而所謂的 JavaScript Runtime ,我覺得可以單純的理解為 JavaScript Engine 自身的代碼跑起來后的環境,也可以理解為 買粉絲re.js 等被跨端框架所需要的、包含了各種邏輯的前端代碼被加載運行后的環境。

當你用這些跨端框架的時候,你會發現他們只支持 css 子集 ,而且布局方式基本都是 flexbox(一種布局模型) 。

那么比如你寫了一個橫著容納了三個小方塊的大方塊,你的前端 css 代碼肯定要寫成, flex-diretion:row ,那么拋給端上的消息可能如下:

{ "name":"div", "attribute":{ // 使用布局 "flex-diretion":"row" }, "children":[ { "name":"div" }, { "name":"div" }, { "name":"div" } ]}

端上拿到這個消息,都不知道 flex-direction 是什么。當然,你可以自己寫一個解析庫來解,但是 Yoga 幫你做了這件事!

所以 RN 使用的是 Yoga 布局引擎(支持 flexbox,也是 Facebook 搞的)。

Weex 似乎一開始是用的 Yoga,后來自己寫了一套?

這個地方就出現了一個名詞 Layout Engine ,它就是幫我們處理各種布局參數的,然后幫我們算好每個視圖的坐標,然后端上拿到坐標后設置對應的視圖的坐標,一個井井有條的視圖便展示了出來。如果你覺得你寫的布局解析算法超越了 Yoga 等等,那么你完全可以自己寫一套。

比如從 JavaScript Runtime 處理完各種屬性了,要渲染視圖了!傳了一段 JSON 給端。

端上手指點了一下這個視圖,那也要封裝成一個消息傳遞給 JavaScript Runtime,然后觸發你之前寫的 js 的監聽代碼,比如點擊后彈一個彈窗,那就又要封裝一個調用彈窗方法的消息給端。

就是這樣來來回回。

所以兩邊都有自己的消息隊列。

而且當你做動畫還想監聽動畫過程的時候,肯定在短時間內發送了大量消息,這些過程肯定是 需要優化 的。

并且!據我個人用 Weex 的經驗,有的 flexbox 屬性兩端都不統一(可能是 Weex 的 Bug,畢竟 KPI 項目,都不維護了)

我記得當時還開玩笑說,用了 Weex 終于領悟了跨端的真諦:

if(platform === 'Andoird') { // 差異化邏輯} else if(platform === 'iOS') { // 差異化邏輯}

跨端的代價就是,你 本以為 真的可以一套代碼兩端跑,后來發現真的有點做夢了(連 H5 有時候 Andoird/iOS 都不一致,因為用的內核都不是一個),代碼里有不少的 if-else。

所以經過上面的一系列科普,一個跨端框架成了這樣:

這其中一般是需要一個客戶端、一個前端、一個懂 JavaScript Engine 會 C/C 的來分別開發。

我雖然沒開發過,但是感覺會有很多問題。

比如 JavaScript Runtime 在另一個進程的話,跨進程通信?

比如消息通信過于頻繁是不是就會有各種連鎖反應,掉幀啊、事件響應不及時、動畫不流暢啊,怎么優化?

其實我本身一直自詡喜歡研究原理,但是直至今日我也沒真的一行行看過跨端框架的源碼,我知道的這些也未必是對的,只是之前做過 Weex 的一些工作稍微研究了一下,還是挺慚愧的。

既然你自稱喜歡研究原理,為什么不看呢?

鏈接:買粉絲s://juejin.買粉絲/post/6944289729990885389

相關問答:相關問答:手機端和電腦端各是什么?

電腦端和手機端,實際上說的就是平臺問題。

當我們使用電腦的時候,電腦基本使用的操作平臺是windows,或者蘋果等常用操作系統。

而手機上用的平臺,如安卓,蘋果的IOS,當年諾基亞的塞班,黑莓的系統,都叫做手機端。

那么怎么定義手機端和電腦端呢,我們可以這么理解,如果用電腦操作系統的設備,即便是平板電腦,你也可以理解成是電腦端。

如微軟平板電腦surface,他的定位是平板也是電腦,

我們很多的平板,多數使用的是安卓系統,蘋果的當然就是IOS,但是平板使用基本使用的移動平臺,也就可以看成是手機端。

但是,如果這個移動設備的平臺使用的是電腦的操作系統的時候,他所使用的平臺,也就成了電腦端。

產品經理必修課(6):用戶體驗

用戶體驗到底是什么概念呢?發布于2012年的ISO 9241-210標準將用戶體驗定義為“人們對于針對使用或期望使用的產品、系統或者服務的認知印象和回應”。這個概念當然比較嚴謹了,但不夠直觀。好的用戶體驗可以囊括很多產品的特性,讓用戶覺得滿意。

互聯網知名的信息構架專家、Semantic Studios總裁 Peter Morville曾經提到,他認為用戶體驗包含7個模塊,可以用蜂窩模型來展現。

模型中的內容包括:

• 有用性。面對的用戶需求是真實的。

• 可用性。功能可以很好地滿足用戶需求。

• 滿意度。涉及情感設計的方面,比如圖形、品牌和形象等。

• 可找到。用戶能找到他們需求的東西。

• 可獲得。用戶能夠方便地完成操作,達到目的。

• 可靠性。讓用戶產生信任。

• 價值。產品要為投資人產生價值。

Steve Krug在《點石成金》(Don’t make me think)這本書里,提到的用戶體驗包括以下幾個方面:

• 有用性:能否幫助人們完成一些必需的事務?

• 可學習:人們能否明白如何使用它?

• 可記憶:人們每次使用的時候,是否都需要重新學習?

• 有效:它們能完成任務嗎?

• 高效:它們是否只需花費適當的時間和努力就能完成任務?

• 合乎期望:是人們想要的嗎?

著名的用戶研究專家《用戶體驗設計》的作者Whitney Quesenbery提出了5E原則,認為用戶體驗包含五個方面,如圖6-2所示。

• 有效性:實際可以等同于可用性或者有用性,就是這個產品能不能起到作用。

• 效率:產品應該是能提高使用者的效率的。

• 易學習:學習成本低。

• 容錯:防止用戶犯錯,以及修復錯誤的能力。

• 吸引力:從交互和視覺上讓用戶舒適并樂意使用。

當然,最出名的還是我們在前面提到的《用戶體驗要素》里的五層模型。這種分層方法比較全面,從策略層到視覺層非常清晰。

通過這些描述我們就不難看出,其實用戶體驗關注的就是讓產品友好地滿足用戶的需求,或者反過來說讓用戶通過你的產品滿足需求時足夠方便、舒適和快捷。

跟用戶研究一樣,用戶體驗的內容也是包羅萬象。而我見過的比較細致、個人比較喜歡的用戶體驗評價方法是 Web易用性大師 Jakob Nielsen提出的一些可用性的標準,也被稱為“尼爾森十大可用性原則”。無論怎樣的用戶體驗方法都可以使用這種可用性原則進行檢驗。

所以下面就從這個角度出發,探討在這個框架下,我們要在用戶體驗方面達到的目標。Jakob Nielsen是從Web設計的角度來提出的可用性原則,以下根據目前移動互聯網的特點,經過了一定的改動,增加了“恢復現場原則”,并在最后補充了關于文案撰寫的一些建議。

保證界面的內容可見、狀態可見、變化可見。任何需要出現的信息都應當在該出現的地方出現。有時在設計的時候未必能想到,但當你作為用戶時卻經常會有“哦?這里不應該有介紹嗎?不應該有提醒嗎?”這樣的疑惑。

有些看起來是特別基本的要求,但很多產品都做不到。用戶找不到信息、不知道當前的情況、不明白發生了什么,這些都是不符合可見原則的例子。

比如,很多產品的空白頁面就是圖6-3(a)所示的樣子。

“我在哪兒呢?這里為什么是白花花的?這里是做什么用的?我能做什么?”都沒有告訴用戶。即使知道功能的用戶也會疑惑:這到底是沒有加載完,還是已經加載完了?頁面為什么是空的?我究竟該不該等待?等等。

而好的空白頁如圖6-3(b)所示。這個頁面的變化很顯著。它明確地告訴了你:這里是做什么的,現在為什么是空白的,而且提供了讓頁面不再空白的途徑,也就是告訴用戶現在可以做什么——點擊按鈕馬上就可以關注別人。

再比如,Facebook的加載頁面就不是白花花的一片,而是一張偽縮略圖,如圖6-4所示。這樣用戶的感知就會非常不同,清楚當前正在加載并且大致了解到會加載什么東西。

讓功能操作符合用戶的使用場景。其實在已經之前提到了場景在需求分析中的意義。場景在功能設計中同樣很有價值。我們可以知道,功能做成什么樣子更符合用戶的使用環境和方式。

如果第一次看到滴滴出行司機版的界面你可能會覺得有點奇怪,如圖6-5所示。

這跟我們日常所見的App交互模式區別很大,文字很大,間距也很奇怪,幾個按鈕的位置安排得讓人不舒服,頁面的利用率也不高。

但一結合場景思考,原因就很清楚了。用滴滴出行的司機在使用手機時都在行駛途中或者行駛間隙,同時大部分手機不是在手持狀態,而是放在架子上的。在這樣的場景下,就要保證最重要的幾點:字體夠大、信息簡潔可以讓人快速識別;交互的觸發點都沒有貼在一起,可以降低操作的誤觸率。

所以在做設計時,不要主觀臆斷好壞,而是放到場景下做思考。

用戶要能對當前的情況很好地了解和掌控,足夠自由。在很多特殊的、有很多可能性的功能界面要注意可控原則。用戶需要自己能夠把控產品運行的狀態。比如典型的視頻播放界面,如果只有播放和暫停,而沒有快進和拖動,那么可以想象體驗會有多糟糕。再比如所有的界面都應該有方便的退出操作。

在 iPhone出現的時候,Home鍵可以算作是史無前例的發明,完美符合了可控原則。無論在什么地方、遇到什么問題,當不知道該怎么辦時,只需要按下 Home鍵,就回到桌面了。這樣對很多像我們父母那個年代的用戶,就不必在用的時候會時不時擔心焦慮,不知道該怎么退出、怎么返回了,遇到任何困惑,一鍵就可以返回到桌面,很有安全感。

用戶需要在同一個產品中接受同一套規范或者邏輯。

許多產品經理會忽視產品邏輯的一致性。在功能、交互和視覺上不考慮邏輯一致性、不考慮使用同樣的規范會導致用戶的學習成本急劇增加。另外,也會讓已經使用某個功能養成習慣的用戶,在別的功能上突然不知所措。

比如,在社交產品中,關注你的人會被稱為“粉絲”,在另一個頁面又變成了“關注者”;在一些提醒對話框中,確定按鈕有的時候在左側,有的時候又在右側;在工具類操作中,紅色有時候表示正確,有時候又表示警告和提醒,等等。

之前我看到過一個例子是某打車軟件的支付寶綁定提醒。在App界面上,文案寫的是“回復驗證碼,即可綁定賬號。”然而確認綁定時發來的短信里卻是“您的驗證碼是 0235,將此輸入應用程序,確認賬號。”估計所有用戶都會疑惑:那么我到底是要輸到哪里呢?

要盡量用足夠的提醒和設計,讓用戶不要混淆、犯錯和發呆。

防錯、防呆原則已經是日本工業界成熟的質量檢驗方法了,由豐田體系的創建人新江滋生提出。防錯和防呆本意并不是說,針對經常犯錯的用戶和比較傻的用戶設計功能,而是說防止讓用戶遇到會犯錯、會發呆的情況。

前面提到過,好的產品經理要能夠以小白用戶角度看問題。在判斷你的設計是不是真的順暢、讓用戶不費勁地使用,就是要以小白用戶的角度看問題。

做提醒和解釋的時候會看起來很傻。這點東西都不懂嗎?但說這句話的前提是在設計者對產品和功能足夠熟悉的情況下。對于新用戶來說,很多事情并不清楚,如果不做好防錯、防呆,那么用起來會經常卡殼。

特別典型的例子是如圖6-6所示的提醒框。

我估計絕大部分人看到之后都會有點莫名其妙,會覺得“你在說什么?”“然后呢?”“你別不管我了啊,我該怎么辦?”

某國產工具在這種情況下就寫的足夠清楚,并且提供了解決方案的按鈕,如圖6-7所示。

圖6-8也是一個非常容易造成困惑的例子。在這個日歷中,不可用的日期和非當前月的日期,居然都是用灰色表示的(1~6號其實是不可用的日期)。這樣用戶也會茫然,要理解很久才能明白過來。

在需要記憶某些信息時,產品功能要幫助用戶記憶。

這個原則是基于一個更基本的原則:任何時候都應盡量幫助用戶解決可能發生的問題。當你在淘寶買完東西、在美團訂完餐之后,肯定不希望自己在腦海里再回憶一遍所有的訂單內容,再點確認按鈕吧?

比如,我買了好幾件衣服,我是希望在結賬前再確認一遍的,所以淘寶是這樣做的,如圖6-9所示。

再比如,在蘋果的Mac端“照片”應用里,刪除照片時不是直接提醒“要刪除嗎?”而是如圖6-10所示,對話框中提示照片的數量,并且說明當前操作的內容,方便用戶再做確認。

界面足夠簡單、內容易讀。

這個原則有兩點要求,第一,產品的所有文案都應當簡易、可讀性強。第二,要讓界面足夠清晰,以便于用戶快速發現自己想要的信息。

有的產品做得特別花哨,界面里什么都有,看起來酷炫,但用戶卻連哪個是按鈕都分辨不出來,這就是得不償失了。

另外,易讀性還要考慮用戶使用產品的視覺軌跡,排版不要混亂。這在Web上應該更明顯一些,在現在的大屏手機上也很重要。

如圖6-11所示,這是某運營商的官方應用,整個界面很花哨,剛打開的時候,下方的那些圖標和廣告位還都會快速宣傳。同時,上方的登錄提醒也很不清晰,也沒有明顯的登錄按鈕提醒(有些讀者可能看得出,點擊空白頭像就是登錄)。所以即便是平時嘗試過了很多App的產品經理,都一下子不太清楚該怎么操作。

向用戶提醒犯錯的可能,并提供給用戶挽回錯誤的方法。

要在用戶可能犯錯的時候進行提醒,越嚴重的錯,提醒級別就越高。比如當你要還原iPhone的手機設置時,需要先輸入密碼,如圖6-12所示。

然后會有紅色的醒目提醒,如圖6-13所示。

而挽回錯誤最典型的方法就是文本編輯里的撤銷功能了。有一些產品也會提供操作上的撤銷功能,比如在 Gmail中刪除某個郵件后,頂部會出現一條停留幾秒鐘的提示通知,通知中提供了撤銷的按鈕,用戶可以快速點擊來取消剛才的刪除操作,如圖6-14所示。

在任何時候,考慮到用戶需要得到幫助的情況并予以提示。

正常操作時,或者說用戶掌握充分知識和信息時,提示當然是沒有必要的。但實際情況是,任何用戶在任何時候、任何場景下都有可能產生疑問,需要得到幫助。

除了在產品里放一個幾乎不會有人點進去看的幫助文檔之外,最好的方法就是在當下進行提醒。

比如,我之前玩過的一款游戲,在任務頁面會有醒目的“幫助”按鈕,點開有詳細的提醒,如圖6-15所示,防止出現玩家看到任務時不知道該做什么的情況。

用戶在使用時,要方便、高效地完成任務。

在使用搜狗輸入法里的Emoji表情輸入時,可以看到它們都是按照最近使用來排序的。這樣常用的表情往往都排在前面,可以快速找到。

在用買粉絲的“+”功能時,如果不久前曾經拍過照,那么照片會自動浮現在按鈕上方。這個功能設計得很巧妙,用戶在這種情況下的確很有可能正要選擇這張照片,所以不需要打開相冊選擇就可以直接發送出去,堪稱高效。

適應用戶的碎片化使用習慣,在各種切換和退出返回時要能有恢復現場的能力。

實時保存內容是在有編輯功能的產品中非常重要的,比如知乎網頁版在編輯頁面時會隔一小段時間就自動保存一次,因為臨時狀況意外退出后,再到草稿箱中還能找到。如圖6-18所示。

iOS在處理應用間臨時的切換時提供了很方便的返回功能,點擊左上角就可以回到剛剛所在的應用界面,這讓很多碎片化的操作得以順暢進行,如圖6-19所示。

大家平時都遇到過但估計很少有人會留意,買粉絲內置瀏覽器有記錄上次閱讀位置的功能。如果你在讀某個買粉絲文章,讀到一半回到聊天頁面說幾句話,再返回這篇文章時還是會回到離開時的位置。

而在新浪微博App中看某個人微博時,如果跳出再回去,又回到了微博列表的頂部。在這種情況下用戶可能每次都會有想摔手機的沖動。

未來產品會越來越多,大家對信息接收的方式也不會滿足于整塊兒的形式,而是會變成以信息流、碎片化的方式為主。所以保護現場將是每個產品都要考慮的原則。

雖然產品經理接觸的文案有限,但往往都是較為關鍵的部分。比如給某個功能起名字,可能直接影響到用戶對功能的認知,以及使用功能的方法。作為產品經理,應該對文案有著足夠的關注。在錘子科技工作的時候,我們對短短十幾字的文案,可能會來回討論幾十個版本。如果是一個重要功能的名字,甚至可能會經歷連綿幾個月的糾結。

對于文案的話,有幾條建議。

在進行文藝創作時,名字當然越有趣、越有個性比較好,但在給產品、功能和某些地方的提示進行描述時卻是大忌。作為產品設計者,我們應該讓用戶理解產品含義,而不只是讓用戶感受到我們的趣味。

像蘋果公司的OSX提供的整盤克隆備份功能,有很多可選的更有科技感的名字,但他們選定的是時光機器(Time Machine),任何人都對這個功能的效果有了特別具體的感知,大家清楚使用這個功能就可以讓電腦恢復到過去某個時刻的狀態。

而有的產品把自己的各種功能和功能項的稱呼都起了特殊的名字。比如積分叫 X幣,商城叫集市,購物車叫竹籃等,都對用戶的認知造成了困擾,增加了很多學習成本。MIUI有一個“神隱模式”,有很多朋友都不懂這是什么功能,也就從來沒有嘗試過。

這里也提一句,盡量避免使用網絡流行語。網絡熱詞流行過去之后,可能很快就被遺忘了。過段時間,就會沒人覺得新鮮,再久一些大概都沒人能記起其真實含義了。

在簡約易讀原則里簡單提到了文案呈現的清晰簡潔,這里想強調的是字數能減則減,直到再減就不能表達清楚意思為止。

我們看到過這樣的產品提示文案,“確認要刪除選中的25張照片嗎?刪除后照片將永久銷毀、不能恢復,請慎重選擇,點擊下方確認按鈕即可刪除。”這就像產品經理花了10秒鐘就隨手寫下來、懶得去想第二遍的“文案”。其實后面那些廢話完全可以刪掉,更合適的寫法應該是“要刪除這25張照片嗎?它們將不能恢復。”用戶自然知道要去點擊按鈕。

在某些情況下,一長串文案也不如一個簡單的符號有效。比如“√”用來指代“已經成功”或者“順利完成”的意思就方便許多,也容易理解。

“網絡異常,請檢查設置。”這就是最糟糕但卻很常見的一種文案。首先,網絡異常是產品服務器的網絡異常還是用戶這邊的網絡異常?檢查設置是要看產品里的設置、網絡設置,還是系統設置?這種不清不楚的文案,不會有什么效果。

QQ的默認驗證消息文案至今都沒怎么變過,如圖 6-20所示。對話框中的“我是……”就存在著歧義——到底是要寫清楚申請添加好友的申請人是誰,還是寫明被申請人是誰?

大家都知道白居易的一則軼事,他每寫一首詩都要先給不識字的老奶奶讀一遍,老奶奶說聽不懂,他就繼續改。我們寫的產品文案也應該如此,找一個并不熟悉產品內情的人,讓他看這些文案,看不懂的就不停地改,這樣最終就是最直白又通俗易懂的版本了。

在錘子科技,我們都會找一個對數碼產品不感興趣的同事來幫忙審閱文案;在小米科技,這事兒據說是拜托樓下的保安來完成的。

本文提到的原則以及關于文案的建議,可以作為檢驗來配合各位完成產品設計,但用戶體驗“路漫漫其修遠兮”,大家要一起求索。

關于用戶體驗,我有個非常深的感觸,就是任何功能都還有變得更好的余地。所以任何時候,我都不敢自稱設計出了無懈可擊的作品,對任何設計出的方案,只要有時間精力都要不斷去研究和思考,讓產品越來越好,讓用戶越來越滿意。積沙成塔、集腋成裘,好的產品不是依靠某個神奇的idea就能所向披靡的,好的產品往往都是在任何細節都無可挑剔。

• 任何你覺得可能會“不太舒服”的地方,在市場上很可能會讓成千上萬的用戶“很不舒服”。

• 任何你覺得已經夠完善的方案,仍然會有優化空間。

知乎頁面為什么經常加載很慢?

因為這個平臺的訪問量很大。所以導致經常加載很慢。

有時候打開一個鏈接非常之慢,大量評論展開更是無法忍受。有時頁面刷新完了,點任何連接都沒有響應。或者說,任何一個網站很卡,都不大應該說是其后端的某個語言導致的(雖然寫的很爛確實會導致卡頓,但你的問的這個肯定不是這個原因)。

對于這類訪問量很大,同時又大量文本內容的網站,會大量使用Cache,也就是說直接從內存取數據不再頻繁訪問數據庫,從這個層面基本各個語言都不會差太多,甚至HTML頁面也都是cache出來的。

就是不要進入頁面的時候把Ajax請求一口氣全發出去,而是先等用戶進入頁面(比如8個請求的時候),然后頁面基本信息渲染完畢后再依次發送其他Ajax請求。終于明白為什么上不了YouTube了,我還想補充一下,php也是垃圾啊,facebook那么大的網站,用php做的,根本上不去嘛。

首先,說Python慢,這是和編譯語言比,比如與C、C++、ava比在動態語言中,它并不慢,它比Ruby要快,它和Perl性能相當。如果選擇動態語言的話,Python并不是很慢。另一方面,如果做網站開發,語言的不是速度的瓶頸,比如現在用Python寫的程序全部用C寫。程序當然會快一點,但是改變不是很大。

Web網站一般會有很多對IO的操作,比如對數據庫的訪問,對硬盤的訪問響應用戶的請求,80%,90%你的時間都花在IO上,語言的速度,相對而言,不是那么重要。也可以這樣說,網站的性能主要取決于架構設計的是否合理。因為網站需要響應大量的并發的請求,如果你的設計的不好,即使你用C寫的,也可能無法應付。

很赞哦!(4)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:黑龙江省牡丹江穆棱市

工作室:小组

Email:[email protected]