整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          大前端時代,如何做好 C 端業務下的 React S

          大前端時代,如何做好 C 端業務下的 React SSR?

          eact 在中后臺業務里已經很好落地了,但對于 C 端(給用戶使用的端,比如 PC/H5)業務有其特殊性,對性能要求比較苛刻,且有 SEO 需求。另外團隊層面也希望能夠統一技術棧,小伙伴們希望成長,那么如何能夠完成既要、也要、還要呢?

          本次分享主要圍繞 C 端業務下得 React SSR 實踐,會講解各種 SSR 方案,包括 Next.js 同構開發,并以一次優化的過程作為實例進行講解。其實這些鋪墊都是在工作中做的 Web 框架的設計而衍生出來的總結。這里先賣個關子,自研框架基于 Umi 框架并支持 SSR 的相關內容留到廣州 QCon上講,感興趣的同學可以來 5 月的QCon 全球軟件開發大會廣州站聊。下面開始正題。

          曾和小弟討論什么是 SSR?他開始以為 React SSR 就是 SSR,這是不完全對的,忽略了 Server-side Render 的本質。其實從早期的 cgi,到 PHP、ASP,jsp 等 server page,這些動態網頁技術都是服務器端渲染的。而 React SSR 更多是強調基于 React 技術棧進行的服務器端渲染,是服務器端渲染的分類之一,本文會以 React SSR 為主進行講解。

          1、為什么要上 SSR?

          對于 SSR,大家的認知大概是以下 3 個方面。

          ? SEO:強需求,被搜索引擎收錄是網站的基本能力。

          ? C 端性能:至少要保證首屏渲染效率,如果秒開率都無法保證,那么用戶體驗是極差的。

          ? 統一技術棧:目前團隊以 React 為主,無論從團隊成長,還是個人成長角度,統一技術棧的好處都是非常明顯的。

          誠然,以上都是大家想用 SSR 的原因,但對筆者來說,SSR 的意義遠不止如此。在技術架構升級的過程中,如果能夠同時帶給團隊和小伙伴成長,才是兩全其美的選擇。目前我負責優酷 PC/H5 業務,在優酷落地 Node.js,目前在做 React SSR 相關整合工作。玉伯曾講過在 All in Mobile 的時代的尷尬——對于多端來說是毀滅性的災難。押寶移動端在當時是正確的選擇,但在今天獲客成本過高,且移動端增速不足,最好的選擇就是多端在產品細節上做

          PK,PC/H5 業務的生機也正在于此。

          然而歷史包袱如此的重,有幾方面原因。1)頁面年久失修;2)移動端在 All in Mobile 時代并沒有給多端提供技術支持,PC/H5 是掉隊的,需要補齊 App 端的基本能力;3)技術棧老舊,很多頁面還是采用 jQuery 開發的,對于團隊來說,這才是最痛苦的事兒。

          其實所有公司都是類似的,都是用有限資源做事,希望最少的投入帶來最大化的產出。可以說,通過整合 SSR 一舉三得,將 Node.js 和 React 一同落地,順便將基礎框架也落地升級,這樣的投入產出是比較高的。

          2、從 CSR 到 SSR 演進之路

          SSR 看起來很簡單,如果細分一下,還是略微負責的,下面和我一起看一下從 CSR 到 SSR 演進之路。

          客戶端渲染 (CSR)

          客戶端渲染是目前最簡單的開發方式,以 React 為例,CSR 里所有邏輯,數據獲取、模板編譯、路由等都是在瀏覽器做的。

          Webpack 在工程化與構建方便提供了足夠多便利,除了提供 Loader 和 Plugin 機制外,還將所有構建相關步驟都進行了封裝,甚至連模塊按需加載都內置,還具備 Tree-shaking 等能力,外加 Node cluster 利用多核并行構建。很明顯這是非常方便的,對前端意義重大的。開發者只需要關注業務模塊即可。


          常見做法是本地通過 Webpack 打包出 bundle.js,嵌入到簡單的 HTML 模板里,然后將 HTML 和 bundle.js 都發布到 CDN 上。這樣開發方式是目前最常見的,對于做一些內部使用的管理系統是夠的。


          CSR 缺點也是非常明顯的,首屏性能無法保障,畢竟 React 全家桶基礎庫就很大,外加業務模塊,縱使按需加載,依然很難保證秒開的。

          為了優化 CSR 性能,業界有很多最佳實踐。在 2018 年,筆者以為 React 最成功的項目是 CRA(create-react-app),支付寶開發的 Umi 其實也是類似的。他們通過內置 Webpack 和常見 Webpack 中間件,解決了 Webpack 過于分散的問題。通過約定目錄,統一開發者的開發習慣。

          與此同時,也產生了很多與時俱進的最佳實踐。使用 react-router 結合 react-loadable,更優雅的做 dynamic import。在頁面中切換路由時按需加載,在 Webpack 中做過代碼分割,這是極好的實踐。


          以前是打包 bundle 是非常大的,現在以路由為切分標準,按需加載,效率自然是高的。


          Umi 基于 react-router 又進步增強了,約定頁面有布局的概念。

          復制代碼

          export default {
           routes: [
           { path: '/', component: './a' },
           { path: '/list', component: './b', Routes: ['./routes/PrivateRoute.js'] },
           { path: '/users', component: './users/_layout',
           routes: [
           { path: '/users/detail', component: './users/detail' },
           { path: '/users/:id', component: './users/id' }
           ]
           },
           ],
          };
          

          這樣做的好處,就有點模板引擎中 include 類似的效果。布局提效也是極其明顯的。為了演示優化后的效果,這里以 Umi 為例。它首先會加載 index 頁面,找到 index 布局,先加載布局,然后再加載 index 頁面里的組件。下圖加了斷點,你可以很清楚的看出加載過程。


          在 create-react-app(cra)和 Umi 類似,都是通過約定,隱藏具體實現細節,讓開發者不需要關注構建。在未來,類似的封裝還會有更多的封裝,偏于應用層面。筆者以為前端開發成本在降低,未來有可能規模化的,因為框架一旦穩定,就有大量培訓跟進,導致規模化開發。這是把雙刃劍,能滿足企業開發和招人的問題,但也在創新探索領域上了枷鎖。

          預渲染 (Prerending)

          SPA(單頁面應用) 的主要內容都依賴于 JavaScript(bundle.js) 的執行,當首頁 HTML 下載下來的時候,并不是完整的頁面,而是瀏覽器里加載 HTML 并 JavaScript 文件才能完成渲染。用戶在訪問的時候體驗會很好,但是對于搜索引擎是不好收錄的,因為它們不能執行 JavaScript,這種場景下預渲染 (Prerending) 就派上用場了,它可以幫忙把頁面渲染完成之后再返回給爬蟲工具,我們的頁面也就能被解析到了。

          CSR 是由 bundle.js 來控制渲染的,所以它外層的 HTML 都很薄。對于首屏渲染來說,如果能夠先展示一部分布局內容,然后在走 CSR 的其他加載,效果會更好。另外業內有太多類似的事件了,比如用 less 寫 css,coffee 寫 js,用 markdown 寫博客,都是需要編譯一次才能使用的。比如 Jekyll/Hexo 等著名項目,它們都非常好用。那么基于 React 技術,也必然會做預處理的,Gatsby/Next.js 都有類似的功能。將 React 組建編譯成 HTML,可以編譯全部,也可以只編譯布局,對于頁面性能來說,預渲染是非常簡單的提升手段。其原理 JSX 模板和 Webpack stats 結合,進行預編譯。

          ? 編譯全部:純靜態頁面。

          ? 只編譯布局:對于 SPA 類項目是非常好,當然多頁應用也可以只編譯布局的。

          生成純 HTML,可以直接放到 CDN 上,這是簡單的靜態渲染。如果不直接生成 HTML,由 Node.js 來接管,那么就可以轉換為簡單的 SSR。

          無論 CSR 還是靜態渲染,都不得不面對數據獲取問題。如果 bundle.js 加載完成,Ajax 再獲取的話,整個過程還要增加 50ms 以上的交互時間。如果預先能夠得到數據,肯定是更好的。


          類似上圖中的數據,放在 Node.js 層去獲取,并注入到頁面,是服務器端渲染最常用的手段,當然,服務器端遠不止這么簡單。

          服務器端(SSR)

          純服務器渲染其實很簡單,就是服務器向瀏覽器寫入 HTML。典型的 CGI 或 ASP、PHP、JSP 這些都算,其核心原理就是模板 + 數據,最終編譯為 HTML 并寫入到瀏覽器。

          第一種方式是直接將 HTML 寫入到瀏覽器,具體如下。


          上圖中的 renderToString 是 react SSR 的 API,可以理解成將 React 組件編譯成 HTML 字符串,通俗點,可以理解 React 就是當模板使用。在服務器向瀏覽器寫入的第一個字節,就是 TTFB 時間,然后網絡傳輸時間,然后瀏覽器渲染,一般關注首屏渲染。如果一次將所有 HTML 寫入到瀏覽器,可能會比較大,在編譯 React 組件和網絡傳輸時間上會比較長,渲染時間也會拉長。

          第二種方式是就采用 Bigpipe 進行分塊傳輸,雖然 Bigpipe 是一個相對比較”古老“的技術,但在實戰中還是非常好用的。在 Node.js 里,默認 res.write 就支持分塊傳輸,所以使用 Node.js 做 Bigpipe 是非常合適的,在去哪兒的 PC 業務里就大量使用這種方式。

          以上 2 種方法都是服務器渲染,在沒有客戶端 bundle.js 助力的情況下,第一種情況除了首屏后懶加載外,客戶端能做的事兒不多。第二種情況下,還是有手段可以用的,比如在分塊里寫入腳本,可以做的的事情還是很多的。

          復制代碼

           res.write("<script>alert('something')</script>")
          

          漸進混搭法(Progressive Rehydration)

          漸進混搭法是將 CSR 和 SSR 一起使用的方式。SSR 負責接口請求和首屏渲染,并客戶端準備數據或配合完成某些生命周期的操作。


          首先,在服務器端生成布局文件,用于首屏渲染,在布局文件里會嵌入 bundle.js。當頁面加載 bundle.js 成功后,客戶端渲染就開始了。通常客戶端渲染過程都會在 domReady 之前,所以優化效果是極其明顯的。

          Bigpipe 可以使用在分塊里寫入腳本,在 React SSR 里也可以使用 renderToNodeStream 搞定。React 16 現在支持直接渲染到節點流。渲染到流可以減少你的內容的第一個字節(TTFB)的時間,在文檔的下一部分生成之前,將文檔的開頭至結尾發送到瀏覽器。當內容從服務器流式傳輸時,瀏覽器將開始解析 HTML 文檔。渲染到流的另一個好處是能夠響應。 實際上,這意味著如果網絡被備份并且不能接受更多的字節,則渲染器會獲得信號并暫停渲染,直到堵塞清除。這意味著您的服務器使用更少的內存,并更加適應 I / O 條件,這兩者都可以幫助您的服務器處于具有挑戰性的條件。

          最簡單的示例,你只需要 stream.pipe(res, { end: false })。

          復制代碼

          // 服務器端
          // using Express
          import { renderToNodeStream } from "react-dom/server"
          import MyPage from "./MyPage"
          app.get("/", (req, res)=> {
           res.write("<!DOCTYPE HTML><HTML><head><title>My Page</title></head><body>");
           res.write("<div id='content'>"); 
           const stream=renderToNodeStream(<MyPage/>);
           stream.pipe(res, { end: false });
           stream.on('end', ()=> {
           res.write("</div></body></HTML>");
           res.end();
           });
          });
          

          當 MyPage 組件的 HTML 片段寫到瀏覽器里,你需要通過 hydrate 進行綁定。

          復制代碼

          // 瀏覽器端
          import { hydrate } from "react-dom"
          import MyPage from "./MyPage"
          hydrate(<MyPage/>, document.getElementById("content"))
          

          至此,你大概能夠了解 React SSR 的原理了。服務器編譯后的組件更多的是偏于 HTML 模板,而具體事件和 vdom 操作需要依賴前端 bundle.js 做,即前端 hydrate 時需要做的事兒。

          可是,如果有多個組件,需要寫入多次流呢?使用 renderToString 就簡單很多,普通模板的方式,流卻使得這種玩法變得很麻煩。

          React SSR 里還有一個新增 API:renderToNodeStream,結合 Stream 也能實現 Bigpipe 一樣的效果,而且可以有效的提高 TTFB 時間。

          偽代碼

          復制代碼

          const stream1=renderToNodeStream(<MyPage/>);
          const stream2=renderToNodeStream(<MyTab/>);
           
          res.write(stream1)
          res.write(stream2)
          res.end()
          



          如果每個 React 組件都用 renderToNodeStream 編譯,并寫入瀏覽器,那么流的優勢就極其明顯了,邊讀邊寫,都是內存操作,效率非常高。后端寫入一個 React 組件,前端就 hydrate 綁定一下,如此循環往復,其做法和 Bigpipe 如出一轍。

          Next.js 同構開發

          Node.js 成熟的標志是以 MEAN 架構開始替換 LAMP。在 MEAN 之后,很多關于同構的探索層出不窮,比如 Meteor,將同構進程的非常徹底,使用 JavaScript 搞定前后端,開創性的提出了 Realtime、Date on the Wire、Database Everywhere、Latency Compensation,零部署等特性,其核心還是圍繞 Full Stack Reactivity 做的,這里不展開。簡言之,當數據發生改變的時候,所有依賴該數據的地方自動發生相應的改變。本身這些概念是很牛的,參與的開發者也都很牛,但問題是過于超前了。熟悉 Node.js 又熟悉前端的人那時候還沒那么多,所以前期開發是非常快的,但一旦遇到問題,調試和解決的成本高,過程是非常難受的。所以至今發布了 Meteor 1.8 也是不溫不火的情況。

          Next.js 是一個輕量級的 React 應用框架。這里需要強調一下,它不只是 React 服務端渲染框架。它幾乎覆蓋了 CSR 和 SSR 的絕大部分場景。Next.js 自己實現的路由,然后 react-loadable 進行按照路由進行代碼分割,整體效果是非常不錯的。Next.js 約定組件寫法,在 React 組件上,增加靜態的 getInitialProps 方法,用于 API 請求處理之用。這樣做,相當于將 API 和渲染分開,API 獲得的結果作為 props 傳給 React 組件,可以說,這種設計確實很贊,可圈可點。

          Nextjs 式的一鍵開啟 CSR 和 SSR,比如下面這段代碼。

          復制代碼

          import React from 'react'
          import Link from 'next/link'
          import 'isomorphic-unfetch'
           
          export default class Index extends React.Component {
           static async getInitialProps () {
           // eslint-disable-next-line no-undef
           const res=await fetch('https://api.github.com/repos/zeit/next.js')
           const json=await res.json()
           return { stars: json.stargazers_count }
           }
           
           render () {
           return (
           
           <div>
           <p>Next.js has {this.props.stars} </p>
           <Link prefetch href='/preact'>
           <a>How about preact?</a>
           </Link>
           </div>
           
           )
           }
          }
           
           
          

          在 scr/pages/*.js 都是遵守文件名即 path 的做法。內部使用 react-router 封裝。在執行過程中

          • loadGetInitialProps(),獲得執行 getInitialProps 靜態方法的返回值 props
          • 將 props 傳給 src/pages/*.js 里標準 react 組件的 props

          優點

          1. 靜態方法,不用創建對象即可直接執行。
          2. 利用組建自身的 props 傳值,與狀態無關,簡單方便。
          3. SSR 和 CSR 代碼是一份,便于維護

          Next.js 的做法成為行業最佳實踐并不為過,通過簡單的用法,可有效的提高首屏渲染,但對于復雜度較高的情況是很難覆蓋的。畢竟頁面里用到的 API 不會那么理想,后端支持力度也是有限的,另外前端自己組合 API 并不是每個團隊都有這樣的能力,那么要解此種情況就只有 2 個選擇:1)在 SSR 里實現,2)自建 API 中間層。

          自建 API 中間層是最好的方式,但如果不方便,集成在 SSR 里也是可以的。利用 Bigpipe 和 React 做好 SSR 組合,能夠完成更強大的能力。限于篇幅,具體實踐留在 QCon 全球軟件開發大會(廣州站)上分享吧。

          3、性能問題

          用 SSR 最大的問題是場景區分,如果區分不好,還是非常容易有性能問題的。上面 5 種渲染方式里,預渲染里可以使用服務器端路由,此時無任何問題,就當普通的靜態托管服務就好,如果在遞進一點,你可以把它理解成是 Web 模板渲染。這里重點講一下混搭法和純 SSR。

          混搭法通常只有簡單請求,能玩的事情有限。一般是 Node.js 請求接口,然后渲染首屏,在正常情況性能很好的,TTFB 很好,整體 rt 也很短,使用于簡單的場景。此時最怕 API 組裝,如果是幾個 API 組合在一起,然后在返回首屏,就會導致 rt 很長,性能下降的非常明顯。當然,也可以解,你需要加緩存策略,減少不必要的網絡請求,將結果放到 Redis 里。另外將一些個性化需求,比如千人千面的推薦放到頁面中做懶加載。

          如果是純服務器渲染,那么要求會更加苛刻,有時 rt 有 10 幾秒,甚至更長,此時要保證 QPS 還是有很大難度的。除了合并接口,對接口進行緩存,還能做的就是對頁面模塊進行分級處理,從布局,核心展示模塊,以及其他模塊。

          除了上面這些業務方法外,剩下的就是 Node.js 自身的性能調優了。比如內存溢出,耗時函數定位等,cpu 采樣等,推薦使用成熟的 alinode 和 node-clinic。畢竟 Node.js 專項性能調優模塊過多,不如直接用這種套裝方案。

          4、未來

          Node.js 在大前端布局里意義重大,除了基本構建和 Web 服務外,這里我還想講 2 點。首先它打破了原有的前端邊界,之前應用開發只分前端和 API 開發。但通過引入 Node.js 做 BFF 這樣的 API Proxy 中間層,使 API 開發也成了前端的工作范圍,讓后端同學專注于開發 RPC 服務,很明顯這樣明確的分工是極好的。其次,在前端開發過程中,有很多問題不依賴服務器端是做不到的,比如場景的性能優化,在使用 React 后,導致 bundle 過大,首屏渲染時間過長,而且存在 SEO 問題,這時候使用 Node.js 做 SSR 就是非常好的。

          當然,前端開發使用 Node.js 還是存在一些成本,要了解運維等技能,會略微復雜一些,不過也有解決方案,比如 Servlerless 就可以降級運維成本,又能完成前端開發。直白點講,在已有 Node.js 拓展的邊界內,降級運維成本,提高開發的靈活性,這一定會是一個大趨勢。

          未來,API Proxy 層和 SSR 都真正的落在 Servlerless,對于前端的演進會更上一層樓。向前是 SSR 渲染,先后是 API 包裝,攻防兼備,提效利器,自然是趨勢。

          尾理論 : 網絡時代興起的一種新理論,由于成本和效率的因素,當商品儲存流通展示的場地和渠道足夠寬廣,商品生產成本急劇下降以至于個人都可以進行生產,并且商品的銷售成本急劇降低時,幾乎任何以前看似需求極低的產品,只要有賣,都會有人買。這些需求和銷量不高的產品所占據的共同市場份額,可以和主流產品的市場份額相比,甚至更大。

          長尾效應,“頭”(head)和“尾”(tail)是兩個統計學名詞。正態曲線中間的突起部分叫“頭”;兩邊相對平緩的部分叫“尾”。從人們需求的角度來看,大多數的需求會集中在頭部,而這部分我們可以稱之為流行,而分布在尾部的需求是個性化的,零散的小量的需求。而這部分差異化的、少量的需求會在需求曲線上面形成一條長長的“尾巴”,而所謂長尾效應就在于它的數量上,將所有非流行的市場累加起來就會形成一個比流行市場還大的市場。

          馬太效應:(Matthew Effect),指強者愈強、弱者愈弱、好的愈好,壞的愈壞,多的愈多,少的愈少的現象

          羊群效應:也稱從眾效應,指人們經常受到多數人影響,從而跟從大眾的思想或行為,也被稱為“從眾效應”。人們會追隨大眾所同意的,將自己的意見默認否定,且不會主觀上思考事件的意義。羊群效應是訴諸群眾謬誤的基礎。

          霍桑效應:指那些意識到自己正在被別人觀察的個人具有改變自己行為的傾向。

          TMT:數字新媒體,或叫TMT(Technology,Media,Telecom)產業。TMT是電信、媒體和科技三個英文單詞的縮寫的第一個字頭,整合在一起,實際是未來電信、媒體科技(互聯網),包括信息技術這樣一個融合趨勢所產生的大的背景,這就是TMT產業。

          PDCA:這是一種用于持續改進產品的框架,計劃(Plan)+執行(Do)+檢查(Check)+處理(Act),在初期確定發展目標和達到發展目標所需的關鍵任務,然后按照計劃執行,并不斷檢查計劃的執行情況,并給予及時的處理意見。

          用戶任務的閉環:指的是一系列幫助用戶完成任務的環節,這些環節可以應對任務可能出現的各種情況。

          MVP:是指的Minimum Viable Product,最小可行產品,即用最低的成本實現一個盡可能展示核心概念的產品,產品團隊可以通過它收集到盡可能多的用戶反饋和數據,從而評估這個產品能帶來的效益。

          CRUD:創建(Create)、檢索(Retrieve)、更新(Update)、刪除(Delete),有時候也簡稱“增刪改”這是面向對象設計中最常用的4個基本方法。說來這是數據庫里的必備的知識,但作為互聯網公司的產品經理,這也是經常會提起的功能點。

          現金牛產品:是指利潤率超高的產品,并且利潤占公司總利潤的很大比例,比如魔獸世界,一度占據九城90%的收入,曾經是九城最重要的現金牛。有一些平臺產品本身就是最大的現金牛產品,比如百度的搜索,既是平臺又是現金牛。

          平臺產品:就是能通過自身的資源優勢拉動其他產品的產品。平臺產品具有強大的生命力和拉動能力,如果成功,往往是一家公司的基石。例如QQ、百度、Google、微軟等。

          ARPU : (Average Revenue Per User)即每用戶平均收入,用于衡量電信運營商和互聯網公司業務收入的指標。

          CPC : 網絡中最常見的一種廣告形式,它是英文單詞Cost Per Click的縮寫意思就是每次點擊付費廣告

          SPAM:互聯網上到處散布垃圾廣告消息的現象。在搜索引擎上的Spam通常也稱為作弊。搜索引擎營銷中所說的SPAM是專門針對那些欺騙搜索引擎的信息。搜索引擎垃圾技術是利用不道德的技巧去提高自己搜索引擎上的排名。不誠實的網站管理員就是利用這樣的手段去欺騙搜索引擎從而獲得較高的排名。

          病毒式營銷:源于英文詞匯viralmarketing。常用于進行網站推廣、品牌推廣等。利用的是用戶口碑傳播的原理,在互聯網上,這種“口碑傳播”更為方便,可以像病毒一樣迅速蔓延,因此病毒性營銷成為一種高效的信息傳播方式,而且,由于這種傳播是用戶之間自發進行的,因此幾乎是不需要費用的網絡營銷手段。

          BRD:Business Requirements Document (商業需求文檔)
          是基于商業目標或價值所描述的產品需求內容文檔(報告)。其核心的用途就是用于產品在投入研發之前,由企業高層作為決策評估的重要依據。其內容涉及市場分析,銷售策略,盈利預測等,通常是供決策層們討論的演示文檔,一般比較短小精煉,沒有產品細節。
          針對人群:一般都是針對
          老版或CEO或者項目總負責人

          MRD:Market Requirements Document (市場需求文檔)
          該文檔在產品項目過程中屬于“過程性”文檔。是市場部門的產品經理或者市場經理編寫的一個產品的說明需求的文檔。該文檔在產品項目過程中屬于“過程性”文檔。該文檔是產品項目由“準備”階段進入到“實施”階段的第一文檔,其作用就是“對年度產品中規劃的某個產品進行市場層面的說明”,這個文檔的質量好壞直接影響到產品項目的開展,并直接影響到公司產品戰略意圖的實現。該文檔在產品項目中是一個“承上啟下”的作用,“向上”是對不斷積累的市場數據的一種整合和記錄,“向下”是對后續工作的方向說明和工作指導。
          針對人群:一般都是商務、運營、市場人員

          PRD:Product Requirements Document (產品需求文檔)
          該文檔是產品項目由“概念化”階段進入到“圖紙化”階段的最主要的一個文檔,其作用就是“對MRD中的內容進行指標化和技術化”,這個文檔的質量好壞直接影響到研發部門是否能夠明確產品的功能和性能。
          針對人群:一般都是項目組、開發組、測試組、策劃組、體驗組人員

          FSD:Functional Specifications Document (功能詳細說明文檔)
          功能詳細說明。有一點像“概要設計”,在BRD、MRD和PRD的基礎上,這步就開始往開發銜接了,產品UI、業務邏輯的細節都要確定,細化文檔并保持更新。相應的,有很多內容,比如表結構設計,要由項目經理來編寫了。

          C2C:Consumer to Consumer(顧客對顧客)
          消費者個人間的電子商務行為。比如一個消費者有一臺電腦,通過網絡進行交易,把它出售給另外一個消費者,此種交易類型就稱為C2C電子商務。
          例如:淘寶網 拍拍網 易趣網

          B2B:Business to Business(商家對商家) 模式:垂直,綜合,自建,關聯
          指企業與企業之間通過專用網絡或Internet,進行數據信息的交換、傳遞,開展交易活動的商業模式。它將企業內部網和企業的產品及服務,通過 B2B 網站或移動客戶端與客戶緊密結合起來,通過網絡的快速反應,為客戶提供更好的服務,從而促進企業的業務發展。

          O2O:Online to Offline(線上線下電子商務)
          將線下的商務機會與互聯網結合,讓互聯網成為線下交易的平臺,這個概念最早來源于美國。O2O的概念非常廣泛,既可涉及到線上,又可涉及到線下,可以通稱為O2O。主流商業管理課程均對O2O這種新型的商業模式有所介紹及關注。
          例如:百度 阿里 騰訊

          P2P:person to person (個人對個人)
          P2P金融指個人與個人間的小額借貸交易,一般需要借助電子商務專業網絡平臺幫助借貸雙方確立借貸關系并完成相關交易手續。借款者可自行發布借款信息,包括金額、利息、還款方式和時間,實現自助式借款;借出者根據借款人發布的信息,自行決定借出金額,實現自助式借貸
          例:人人貸

          B2C:Business to Consumer(商家對個人)
          “商對客”是電子商務的一種模式,也就是通常說的直接面向消費者銷售產品和服務商業零售模式。
          企業例如:阿里巴巴

          UCD:User Centered Design(以用戶為中心的設計)
          在進行產品設計、開發、維護時從用戶的需求和用戶的感受出發,圍繞用戶為中心進行產品設計、開發及維護,而不是讓用戶去適應產品。無論產品的使用流程、產品的信息架構、人機交互方式等,以UCD為核心的設計都時刻高度關注并考慮用戶的使用習慣、預期的交互方式、視覺感受等方面。

          UX:User Experience Design(用戶體驗)
          UX設計指以用戶體驗為中心的設計。UX設計師研究和評估一個系統的用戶體驗,關注
          該系統的易用性,價值體現,實用性,高效性等。

          UI:User Interface(用戶界面)
          泛指用戶的操作界面,包含移動APP,網頁,智能穿戴設備等。
          UI設計主要指界面的樣式,美觀程度。而使用上,對軟件的人機交互、操作邏輯、界面美觀的整體設計則是同樣重要的另一個門道。

          UGC:User Generated Content(用戶原創內容)
          它并不是某一種具體的業務,而是一種用戶使用互聯網的新方式,即由原來的以下載為主變成下載和上傳并重。
          例如:豆瓣網 優酷土豆 WIKI

          CLI:Command-line Interface(命令行界面)
          是指可在用戶提示符下鍵入可執行指令的界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令后,予以執行。
          (LINUX的命令行界面就是典型的CLI)。

          GUI:Graphical User Interface(圖形用戶界面)
          采用圖形方式顯示的計算機操作用戶界面。
          與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。然而這界面若要通過在顯示屏的特定位置,以”各種美觀而不單調的視覺消息“提示用戶”狀態的改變“,勢必得比簡單的消息呈現花上更多的計算能力。

          NUI:Natural User Interface(自然用戶界面)
          一種更加簡單、更加直觀、更加自然的程序–Project Natal 。

          UED:User Experience Design(用戶體驗設計師)
          UED是進行產品策劃的主力之一,他們用自己的知識、經驗、設計能力拿出設計方案。UED不只是互聯網專家,還是行業專家。能夠用自己的互聯網知識來設計出行業專家想實現的操作,而付諸
          商業營銷。

          SEO:Search Engine Optimization(搜索引擎優化)
          SEO是指通過對網站進行站內優化和修復(網站Web結構調整、網站內容建設、網站代碼優化和編碼等)和站外優化,從而提高網站的網站關鍵詞排名以及公司產品的曝光度。
          (SEO這個大家可以去唐杰的個人博客站看。他應該是90后這一代中最早接觸互聯網的,也是90后從事這個行業的第一批人。而他在轉產品時就是學習的SEO。他的博客里面也有很多關于產品的。我感覺受益良多,大家有想的可以去看看。互聯網產品經理@唐杰)

          SNS:Social Networking Services(社會性網絡服務)
          指社交網絡服務,包括了社交軟件和社交網站。也指社交現有已成熟普及的信息載體,如短信SMS服務。SNS的另一種常用解釋:全稱Social Networking Site,即“社交網站”或“社交網”。SNS也指Social Network Software,社交網絡軟件,是一個采用分布式技術,通俗地說是采用P2P(Peer to Peer)技術,構建的下一代基于個人的網絡基礎軟件。

          KPI:Key Performance Indicator(關鍵績效指標)
          通過對組織內部流程的輸入端、輸出端的關鍵參數進行設置、取樣、計算、分析,衡量流程績效的一種目標
          量化管理指標,是把企業的戰略目標分解為可操作的工作目標的工具,是企業績效管理的基礎。KPI可以使部門主管明確部門的主要責任,并以此為基礎,明確部門人員的業績衡量指標。建立明確的切實可行的KPI體系,是做好績效管理的關鍵。關鍵績效指標是用于衡量工作人員工作績效表現的量化指標,是績效計劃的重要組成部分。

          IM:Instant Messaging(即時通信)
          目前Internet上最為流行的通訊方式,各種各樣的即時通訊軟件也層出不窮;服務提供商也提供了越來越豐富的通訊服務功能。 不容置疑,Internet已經成為真正的信息高速公路。從實際工程應用角度出發,以計算機網絡原理為指導,結合當前網絡中的一些常用技術,編程實現基于C/S架構的網絡聊天工具是切實可行的。

          一個實時通信系統,允許兩人或多人使用網絡實時的傳遞文字消息、文件、語音與視頻交流。 例如:信鴿、視高科技的視高可視協同辦公平臺、263EM、群英CC2010、通軟聯合的GoCom、騰訊公司的RTX、IBM的Lotus Sametime、點擊科技的GKE、中國互聯網辦公室的imo、中國移動的企業飛信、華夏易聯的e-Link、擎旗的UcStar等

          JD:Job Descriptions(職位描述、職位界定)
          對經過職位分析得到的關于某一特定職位的職責和工作內容進行的一種書面記錄其成果叫工作說明書(job description),日文中工作描述就是給工作畫像,是把工作所具有的一些特征用白描的手法寫下來。
          它主要包括八項具體內容信息:
          職務基本信息,職務目的,管理權限,工作關系,責任范圍與影響程度,工作業績衡量標準,任職的基本要求和高績效的要求,薪資收入標準與變化的條件與要求等。

          LBS:Location Based Service(基于位置的服務)
          是指通過電信移動運營商的無線電通訊網絡或外部定位方式,獲取移動終端用戶的位置信息,在GIS平臺的支持下,為用戶提供相應服務的一種增值業務
          意指與定位相關的各類服務系統,簡稱”定位服務”。

          PV:page view(頁面瀏覽量)
          通常是衡量一個網絡新聞頻道或網站甚至一條網絡新聞的主要指標。網頁瀏覽數是評價網站流量最常用的指標之一,簡稱為PV。監測網站PV的變化趨勢和分析其變化原因是很多站長定期要做的工作。 Page Views中的Page一般是指普通的html網頁,也包含php、jsp等動態產生的html內容。來自瀏覽器的一次html內容請求會被看作一個PV,逐漸累計成為PV總數。

          UV:unique visitor(網站獨立訪客)
          指通過互聯網訪問、瀏覽這個網頁的自然人。
          對于使用真實IP上網的用戶,UV和IP的數值是相同的
          IP是一個反映網絡虛擬地址對象的概念,UV是一個反映實際使用者的概念,每個UV相對于每個IP,更加準確地對應一個實際的瀏覽者。使用UV作為統計量,可以更加準確
          了解單位時間內實際上有多少個訪問者來到了相應的頁面。

          DAU:Daily Active User(日活躍用戶量)
          常用于反映網站、互聯網應用或網絡游戲的運營情況。DAU通常統計一日(統計日)之內,登錄或使用了某個產品的用戶數(去除重復登錄的用戶),這與流量統計工具里的訪客(UV)概念相似。

          RSS:Really Simple Syndication(簡易信息聚合)
          一種RSS基于XML標準,在互聯網上被廣泛采用的內容包裝和投遞協議。RSS(Really Simple Syndication)是一種描述和同步網站內容的格式,是使用最廣泛的XML應用。
          RSS目前廣泛用于網上新聞頻道。
          SS和Atom是一種信息聚合的技術,都是為了提供一種更為方便、高效的互聯網信息的發布和共享,用更少的時間分享更多的信息。

          SDK:Software Development Kit(軟件開發工具包)
          一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件時的開發工具的集合。

          OTA:Online Travel Agent(在線旅行社)
          旅游消費者通過網絡向旅游服務提供商預定旅游產品或服務,并通過網上支付或者線下付費,即各旅游主體可以通過網絡進行產品營銷或產品銷售

          VP:Vice President (副總裁)
          副總統、副總裁、副總監等職位,泛指所有的高層副級人物。

          AVP:Assistant Vice President (副總裁助理)
          副總裁助理,協助加強業務線日常運營管理,協助主管副總裁完成流程優化、績效管理、質量與風險管理等工作的協調和推進

          HRD:Human Resource Director (人力資源總監)
          目前很多公司設立了HRD的職位,其實說白了就是人力資源總監/主管HRD(Human Resource Director)。

          COO:Chief Operating Officer(運營總監)
          又稱首席運營官。該職位要全面負責公司的市場運作和管理;參與公司整體策劃,健全公司各項制度,完善公司運營管理;推動公司銷售業務,推廣公司產品,組織完成公司整體業務計劃;建立公司內部信息系統,推進公司財務、行政、人力資源的管理;負責協調各部門工作,建立有效的團隊協作機制;維持并開拓各方面的外部關系;管理并激勵所屬部門的工作績效。

          CMO:Chief Marketing Officer (市場總監)
          指企業中負責市場運營工作的高級管理人員,又稱作市場部經理、營銷總監。

          PM:Product Manager(產品經理)、Production Manager(生產經理)、Project Manager(項目經理)
          項目的管理者,在有限的資源約束下,運用系統的觀點、方法和理論,對項目涉及的全部工作進行有效地管理。即從項目的投資決策開始到項目結束的全過程進行計劃、組織、指揮、協調、控制和評價,以實現項目的目標。

          URL:Uniform Resoure Locator(統一資源定位器)
          統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。
          (說白了就是鏈接、URL鏈接)

          SKU:Stock Keeping Unit(庫存量單位)
          即庫存進出計量的基本單元,可以是以件,盒,托盤等為單位。
          SKU這是對于大型連鎖超市DC(配送中心)物流管理的一個必要的方法。現在已經被引申為產品統一編號的簡稱,每種產品均對應有唯一的SKU號。

          SPU:Standard Product Unit (標準化產品單元)
          是商品信息聚合的最小單位,是一組可復用、易檢索的標準化信息的集合,該集合描述了一個產品的特性。通俗點講,屬性值、特性相同的商品就可以稱為一個SPU。

          ROI:Return On Investment(投資回報率)
          通過投資而應返回的價值,即企業從一項投資活動中得到的經濟回報。

          ERP:Enterprise Resource Planning(企業資源計劃)
          由美國 Gartner Group 公司于1990年提出。企業資源計劃是 MRP II(企業制造資源計劃)下一代的制造業系統和資源計劃軟件。

          關注公眾號:PMP項目管理之家、才聚項目管理PMP暨NPDP考試中心

          北京一騎當千網絡科技傾力打造的全新Q版策略手游《群英天下》,將于9月28日上午10點正式在安卓平臺全面開啟不刪檔測試。

          《群英天下》以Q版畫風打造融合策略、戰斗、卡牌、養成等多種玩法于一體的多元化游戲體驗,作為策略手游玩法新思路的開拓者,《群英天下》在創造了豐富宏觀策略玩法體系的基礎上,將微觀戰場極具視覺沖擊力的戰斗指揮體驗也融入游戲的核心玩法當中。玩家在《群英天下》中,不但能作為運籌帷幄的主公在大戰略玩法上燒腦,更能統領三軍真正進入戰場,化身發號施令的三軍統帥帶領將士們走向勝利。

          [聲勢浩大的激萌戰場]

          首先《群英天下》讓人眼前一亮的莫過于微觀戰斗中兩軍對壘的宏大戰斗場景。或注重大戰略體驗或注重戰場對戰體驗,而二者只能選其一是傳統策略手游長期以來飽受詬病的問題。《群英天下》在面對策略手游固有弊病的問題上力主革新,提出“戰斗指揮”和“戰略體驗”并重的新方案。

          在《群英天下》的戰斗系統中,玩家毫無疑問將作為戰局走向的主導因素進入戰場當中,所有將領都需要在玩家的號令之下才能發揮全部實力,通過對敵我戰場態勢的洞察,決定何時何地讓將領們施放技能,先讓敵方的哪位將領光榮領盒飯等等。以及在《群英天下》引人入勝的攻城戰斗中,強有力的攻城重武器將加入戰場開啟一場更為震撼的攻城作戰,充分發揮各個位置將領的作用,保護己方攻城武器攻擊順利,讓輔助將領守護好陣營的后排支援火力,都是攻城最終能否成功的關鍵。

          [多元融合的策略體驗]

          策略玩法作為游戲的核心所在,《群英天下》力圖為玩家帶來一場多元融合的多元化策略玩法新體驗。在微觀戰場中玩家策略的重要性自是不必多言,而在宏觀的策略體驗上,也遠非調兵遣將,排布陣型那么單調。

          游戲的卡牌、養成等玩法都將作為構成策略體驗的重要一環,《群英天下》跳出時間對游戲背景的限制,以中國古典神話為代入,玩家以時間穿越者的身份進入游戲當中。時間尺度上的自由為游戲帶來了囊括各個歷史時期的海量傳奇將領,而海量傳奇將領又擁有各自的基礎屬性和將領技能,這不但意味著每位將領擅長的作戰位置的多樣,更為玩家的策略體驗提供了無限的創造空間,如何巧妙地搭配這些傳奇將領,讓他們彼此協同構成一個空前強大的整體,如何利用戰前偵察的情報針對敵方陣型派出最具針對性的強大軍團,以及如何運用好游戲的養成系統,讓團戰中最具性價比的將領優先得到迅速的提升等等,策略、戰斗、卡牌、養成等元素環環相扣開啟多元玩法有機融合的全新多元化游戲體驗。

          手游行業的媒體老師們提前體驗了這款游戲,他們體驗完之后就說了一句話!

          騰訊視頻:https://v.qq.com/x/page/q0721olxh00.html

          優酷視頻:http://v.youku.com/v_show/id_XMzg0MDA5NjAwMA==。html

          flash代碼:http://player.youku.com/player.php/sid/XMzg0MDA5NjAwMA==/v.swf

          9月28日上午10點,《群英天下》已準備好迎接全體安卓平臺的主公們執掌帥印!

          97973手游網聲明:97973手游網登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述。


          主站蜘蛛池模板: 视频一区精品自拍| 制服美女视频一区| 亚洲片一区二区三区| 亚洲综合无码一区二区| 国产精品一区二区av不卡| 天天视频一区二区三区| 中文精品一区二区三区四区| 人妻少妇一区二区三区| 亚洲一区视频在线播放| 另类国产精品一区二区| 亚洲无圣光一区二区 | 亚洲一区二区三区久久久久| 国产裸体舞一区二区三区| 日韩免费一区二区三区在线| 国产人妖视频一区二区 | 蜜臀Av午夜一区二区三区| 中文字幕精品一区| 国产一区二区四区在线观看| 无码人妻一区二区三区在线水卜樱| 性色AV一区二区三区天美传媒| 日本一区二区在线播放| 亚洲日本一区二区三区| 日韩精品无码中文字幕一区二区 | 99精品一区二区三区无码吞精| 无码人妻精品一区二区三区在线| V一区无码内射国产| 久久精品国产亚洲一区二区三区 | 亚洲视频一区网站| 亚洲一区二区三区四区在线观看| 午夜影视日本亚洲欧洲精品一区| 亚洲AV综合色区无码一区| 国产精品熟女一区二区| 亚洲一区二区三区亚瑟| 无码国产精品一区二区免费I6| 国产精品无码一区二区三区在| 精品国产免费一区二区| 久久精品国产一区二区三区| 日韩精品在线一区二区| 色窝窝免费一区二区三区| 国产成人精品视频一区| 国精产品一区二区三区糖心|