亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

網(wǎng)站內容管理系統后臺 設計

網(wǎng)站內容管理系統后臺 設計

最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2022-09-24 15:06 ? 來(lái)自相關(guān)話(huà)題

  最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生
  ??作者簡(jiǎn)介:一位熱愛(ài)將邏輯思維轉化為代碼的技術(shù)博主
  作者主頁(yè):【主頁(yè)-獲取更多優(yōu)質(zhì)源碼】
  Web前端最終作品:【已完成項目?jì)?yōu)秀實(shí)戰案例(1000套)】
  程序員一個(gè)有趣的告白方法:【HTML七夕情人節告白網(wǎng)頁(yè)制作(110套)】
  超酷的Echarts大屏可視化源碼:【Echarts大屏展示大數據平臺可視化(150套)】
  HTML+CSS+JS示例代碼:[?HTML+CSS+JS示例代碼(炫酷特效網(wǎng)頁(yè)代碼)持續更新中...]
  免費實(shí)用的網(wǎng)絡(luò )前端學(xué)習指南:
  作者簡(jiǎn)介:歷任研發(fā)工程師、技術(shù)組長(cháng)、教學(xué)主任; 2016年和2020年被評為CSDN十大博客之星。十年寒冰,難冷熱血;許多年過(guò)去了,變化之后,事情是非對錯。然而,對技術(shù)的探索和追求從未停止。堅持原創(chuàng ),熱心分享,不忘初心,繼往開(kāi)來(lái)!
  文章目錄
  一、?網(wǎng)站標題
  ?學(xué)生管理系統網(wǎng)頁(yè)設計、OA管理系統、后臺管理模板、智能停車(chē)系統等設計制作網(wǎng)站.
  二、??網(wǎng)站說(shuō)明
  ?HTML網(wǎng)頁(yè)設計,采用DIV+CSS布局,有多個(gè)頁(yè)面,布局干凈,內容豐富,主題清晰,首頁(yè)采用CSS布局更豐富,色彩鮮艷鮮艷,并且導航和文本字體設置為不同的字體大小。導航區域設置了背景圖像。子頁(yè)面包括純文本頁(yè)面和帶有圖片和文本的頁(yè)面。
  一個(gè)好的網(wǎng)頁(yè)設計應該包括(取決于個(gè)人要求)
  頁(yè)面分為四個(gè)部分:頁(yè)眉、菜單導航欄(最好是下拉)、中間內容部分和頁(yè)腳。所有頁(yè)面都相互超鏈接,可以轉到由多個(gè)頁(yè)面組成的二級和三級頁(yè)面。頁(yè)面樣式和樣式統一布局,顯示正常,不雜亂,使用Div+Css技術(shù)。菜單美觀(guān)醒目,二級菜單可以正常彈出和跳轉??蛇xJS特效,如圖片旋轉的定時(shí)切換和手動(dòng)切換。頁(yè)面中有多媒體元素,如gif,視頻,音樂(lè ),表單技術(shù)的使用。頁(yè)面清爽、美觀(guān)、大方、與眾不同。 不僅要能夠呈現用戶(hù)所需要的內容,還要滿(mǎn)足布局好、界面美觀(guān)、配色優(yōu)雅、表現形式多樣的要求。 三、網(wǎng)站簡(jiǎn)介
  網(wǎng)站布局:擬采用目前主流的浮動(dòng)網(wǎng)頁(yè)布局結構,兼容各大主流瀏覽器,顯示效果穩定。
  網(wǎng)站程序:擬使用最新的網(wǎng)頁(yè)編程語(yǔ)言HTML5+CSS3+JS編程語(yǔ)言完成網(wǎng)站的功能設計。并保證網(wǎng)站代碼兼容目前市面上所有主流瀏覽器,打開(kāi)后立即可以看到網(wǎng)站的效果。
  網(wǎng)站素材:我們計劃從各個(gè)平臺采集好看的圖片素材,精心挑選適合網(wǎng)頁(yè)風(fēng)格的圖片,然后用PS制作適合網(wǎng)頁(yè)大小的圖片。
  網(wǎng)站文件:網(wǎng)站系統文件類(lèi)型包括:html網(wǎng)頁(yè)結構文件、css網(wǎng)頁(yè)樣式文件、js網(wǎng)頁(yè)特效文件、images網(wǎng)頁(yè)圖片文件;
  網(wǎng)頁(yè)編輯:網(wǎng)頁(yè)作品代碼簡(jiǎn)單,可以使用任何HTML編輯軟件(如Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等)運行、修改和編輯。
  地點(diǎn):
  (1)html文件收錄:index.html為首頁(yè),其他html為二級頁(yè)面;
  (2)css文件收錄:css所有頁(yè)面樣式、文字滾動(dòng)、圖片放大等;
  (3)js文件收錄:js實(shí)現動(dòng)態(tài)輪播效果、表單提交、點(diǎn)擊事件等(js代碼用于個(gè)別網(wǎng)頁(yè))。
  四、網(wǎng)站演示
  五、?? 網(wǎng)站代碼 HTML 結構代碼
  
doctype html>



人員信息管理系統









人員管理后臺界面



首頁(yè)


人員查詢(xún)


組織機構維護


行業(yè)內人員信息


行業(yè)外人員信息


權限配置


通知管理


待辦事項





<p>
姓名:程皓
部門(mén):部門(mén)管理


中國煙草總公司職工進(jìn)修學(xué)院







function speckText(str){
//var request= new URLRequest();
var url = "http://tts.baidu.com/text2audi ... ot%3B + encodeURI(str); // baidu
//url = "http://translate.google.cn/tra ... ot%3B + encodeURI(str); // google
//request.url = encodeURI(url);
// request.contentType = "audio/mp3"; // for baidu
//request.contentType = "audio/mpeg"; // for google
var n = new Audio(url);
n.src = url;
n.play();
// $("...").play();
// var sound = new Sound(request);
// sound.play();
}
</p>
  CSS 樣式代碼
  
@import "style.css";
/***************reset樣式,保持瀏覽器樣式一致性******************/
* {
word-wrap: break-word;
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
p,
input[type="radio"],
input[type="checkbox"] {
margin: 0;
}
i {
font-style: normal;
}
a {
text-decoration: none;
cursor: pointer;
color: #666;
}
a:hover {
text-decoration: none;
outline: none;
color: #fff;
}
a.ie6:hover {
zoom: 1;
}
ul,
ol {
list-style: none;
}
a:focus {
outline: none;
color: #fff;
}
<p>
.leftBar .listItem .item.active .icon-15 {
display: block;
}
.leftBar .navBottom {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
color: #fff;
padding: 20px 0;
}
.leftBar .navBottom img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.leftBar .navBottom .person p {
padding: 0 10px;
opacity: 0.8;
}
.topBar {
position: fixed;
top: 0;
left: 0;
z-index: 1;
padding-left: 220px;
width: 100%;
height: 50px;
background: #fff;
-moz-box-shadow: 0 2px 12px #B9B9B9;
-webkit-box-shadow: 0 2px 12px #B9B9B9;
box-shadow: 0 2px 12px #B9B9B9;
min-width: 1200px;
}
.topBar .title {
font-size: 19px;
line-height: 50px;
padding-left: 20px;
letter-spacing: 1px;
}
.topBar .pull-right {
margin-right: 20px;
}
.topBar .pull-right i {
cursor: pointer;
position: relative;
font-size: 20px;
margin: 15px 8px;
display: inline-block;
}
.topBar .pull-right i.point:after {
content: "";
position: absolute;
top: 2px;
right: -2px;
display: block;
width: 6px;
height: 6px;
background: #FF6700;
border-radius: 50%;
}
.contentIndex {
position: fixed;
top: 50px;
left: 220px;
width: calc(100% - 220px);
height: calc(100% - 50px);
}
.contentIndex iframe {
width: 100%;
height: 100%;
}
</p>
  六、如何讓學(xué)習不再盲目
  21年程序員總結16條給編程菜鳥(niǎo)的忠告
  入門(mén)期間不要盲目看太多書(shū),找一本網(wǎng)上或身邊有經(jīng)驗的程序員推薦的教材,先系統學(xué)習。閱讀更多幫助文檔,幫助文檔就像游戲的玩法說(shuō)明,通關(guān)秘籍,該閱讀時(shí)不要太自信。菜鳥(niǎo)容易被對象、屬性、方法等詞混淆?這意味著(zhù)你連最基本的知識都沒(méi)有掌握。不要忽略任何看似不起眼的問(wèn)題,并經(jīng)常對其進(jìn)行總結以推斷其他事情。如果沒(méi)有積累足夠的知識和經(jīng)驗,就無(wú)法開(kāi)發(fā)出一個(gè)完整的項目。談?wù)撟钚碌募夹g(shù)比牢記過(guò)時(shí)的技術(shù)要好?;畹嚼?,學(xué)到老,只有一招半的功夫,也不能沖破江湖。讀懂的書(shū),讀不懂的書(shū)。書(shū)讀一百遍,自己看,別指望讀一遍就能掌握。請將教程中的示例付諸實(shí)踐,即使案例中有完整的源代碼。擴展您在教程中看到的有意義的示例;并將它們實(shí)際應用到您自己的工作中。不要錯過(guò)本教程中的任何練習 - 請全部完成并做筆記。水平是通過(guò)不斷的練習來(lái)完善和發(fā)展的,你和Daniel的區別只是經(jīng)驗的積累。每次學(xué)習到一個(gè)難點(diǎn),盡量把你的經(jīng)驗分享給朋友或者網(wǎng)上,讓別人理解,這說(shuō)明你真的掌握了。養成保存源文件的習慣,這些都是你積累的知識。不要張嘴問(wèn)問(wèn)題,學(xué)會(huì )自己尋找答案。比如google、百度、w3cschool上有很多編程相關(guān)的資料。您只需輸入關(guān)鍵字即可找到答案。 七、更多干貨
  1.如果我的博客對你有幫助,如果你喜歡我的博客內容,請一鍵“點(diǎn)贊”“??評論”“采集”!
  2.[跟我來(lái)|獲取更多源代碼 |高品質(zhì)文章]帶你學(xué)習各種前端插件、3D炫酷效果、圖片展示、文字效果,以及全站模板、大學(xué)畢業(yè)生HTML模板、期末作業(yè)模板等! “這里有很多前端開(kāi)發(fā)者,討論前端Node知識,互相學(xué)習”!
  3.
  歡迎交流學(xué)習以上內容及技術(shù)相關(guān)問(wèn)題
  解決方案:Google SEO優(yōu)化要怎么做?入行必知的谷歌SEO七大關(guān)鍵
  一直以來(lái),很多人在生活中遇到問(wèn)題的第一選擇就是打開(kāi)搜索引擎進(jìn)行搜索,這給搜索引擎帶來(lái)了大量的流量,搜索引擎會(huì )針對用戶(hù)的搜索< @k4@ >根據其收錄給定網(wǎng)頁(yè)并按權重排序,前幾頁(yè)的網(wǎng)頁(yè)基本上可以得到關(guān)鍵詞下的大部分流量,因為用戶(hù)很少需要轉很多頁(yè)來(lái)找到答案。
  因此,網(wǎng)頁(yè)之間對這個(gè)權重的競爭也非常復雜,而Google SEO(搜索引擎優(yōu)化)是每個(gè)跨境電商賣(mài)家的必修課。帶來(lái)巨大的流量,從而獲得更直接的消費和轉化。所以在這里我就告訴你谷歌SEO優(yōu)化的七個(gè)關(guān)鍵。
  一、合適的 URL/域
  在建立網(wǎng)站時(shí),需要先選擇一個(gè)合適的域名。域名的選擇會(huì )影響用戶(hù)的信任。比如最常見(jiàn)的.com后綴自然比其他后綴更受用戶(hù)信任。 并且域名要與你的內容或企業(yè)相關(guān),而且要盡量短,以便用戶(hù)理解域名的含義,便于記憶。和國內很多網(wǎng)站一樣,直接用拼音字母作為域名。真的很難忘。
  二、關(guān)鍵詞
  關(guān)鍵詞 可以說(shuō)是 SEO 中最重要的部分。在挖掘關(guān)鍵詞的過(guò)程中,不僅要對目標用戶(hù)的搜索習慣進(jìn)行研究,還要采集競品使用的關(guān)鍵詞,以便最好地掌握大部分信息,從而做出最佳 關(guān)鍵詞 選擇。
  
  三、網(wǎng)站框架
  一個(gè)合理的web框架,不僅可以提高搜索引擎的速度收錄,還可以提高用戶(hù)的瀏覽體驗。內容的更新和內容的布局也與網(wǎng)絡(luò )框架有關(guān)。
  四、提升訪(fǎng)問(wèn)體驗
  首先,每個(gè)瀏覽器的顯示效果其實(shí)會(huì )有些不同。所以前期要做好主流瀏覽器的適配,避免出現影響用戶(hù)閱讀體驗的顯示問(wèn)題。后期也可以嘗試使用一些分析工具。查看用戶(hù)最常使用哪些瀏覽器來(lái)查看您的 網(wǎng)站。
  五、網(wǎng)站開(kāi)啟速度
  這確實(shí)是最影響用戶(hù)體驗的一點(diǎn)。想象一下,如果用戶(hù)在搜索結果中同時(shí)打開(kāi)三個(gè)帶有標題內容的網(wǎng)頁(yè),用戶(hù)會(huì )首先查看加載速度最快的網(wǎng)頁(yè)。在第一次加載網(wǎng)頁(yè)后,用戶(hù)可能已經(jīng)解決了他們的需求,所以這很重要!
  
  六、高級內容
  優(yōu)質(zhì)的內容一直是??搜索引擎搜索的對象,搜索引擎也希望用戶(hù)每次搜索都能得到想要的答案。 網(wǎng)站的優(yōu)質(zhì)內容可以留住用戶(hù),解決用戶(hù)的需求,讓用戶(hù)毫不猶豫的將網(wǎng)站放入采集夾,這是提升轉化率最基本的東西。
  七、優(yōu)質(zhì)外鏈
  外部鏈接是一個(gè)比較重要的部分。外部鏈接的質(zhì)量會(huì )對SEO產(chǎn)生影響。谷歌對此也毫不含糊。懲罰。
  說(shuō)到這里,想必大家已經(jīng)對Google SEO有一個(gè)大概的了解了,但同樣的道理。做海外業(yè)務(wù),你需要一個(gè)海外代理。為此,我之前使用過(guò)國內的海外代理。它被稱(chēng)為智能代理。新手的時(shí)候就試過(guò)了,因為比較低。我發(fā)現IP相當穩定,安全性好,非常適合海外業(yè)務(wù)。最后,只希望這篇文章能給大家帶來(lái)一些幫助。如果你覺(jué)得關(guān)于谷歌SEO還有什么想了解的,可以在評論區問(wèn)我! 查看全部

  最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生
  ??作者簡(jiǎn)介:一位熱愛(ài)將邏輯思維轉化為代碼的技術(shù)博主
  作者主頁(yè):【主頁(yè)-獲取更多優(yōu)質(zhì)源碼】
  Web前端最終作品:【已完成項目?jì)?yōu)秀實(shí)戰案例(1000套)】
  程序員一個(gè)有趣的告白方法:【HTML七夕情人節告白網(wǎng)頁(yè)制作(110套)】
  超酷的Echarts大屏可視化源碼:【Echarts大屏展示大數據平臺可視化(150套)】
  HTML+CSS+JS示例代碼:[?HTML+CSS+JS示例代碼(炫酷特效網(wǎng)頁(yè)代碼)持續更新中...]
  免費實(shí)用的網(wǎng)絡(luò )前端學(xué)習指南:
  作者簡(jiǎn)介:歷任研發(fā)工程師、技術(shù)組長(cháng)、教學(xué)主任; 2016年和2020年被評為CSDN十大博客之星。十年寒冰,難冷熱血;許多年過(guò)去了,變化之后,事情是非對錯。然而,對技術(shù)的探索和追求從未停止。堅持原創(chuàng ),熱心分享,不忘初心,繼往開(kāi)來(lái)!
  文章目錄
  一、?網(wǎng)站標題
  ?學(xué)生管理系統網(wǎng)頁(yè)設計、OA管理系統、后臺管理模板、智能停車(chē)系統等設計制作網(wǎng)站.
  二、??網(wǎng)站說(shuō)明
  ?HTML網(wǎng)頁(yè)設計,采用DIV+CSS布局,有多個(gè)頁(yè)面,布局干凈,內容豐富,主題清晰,首頁(yè)采用CSS布局更豐富,色彩鮮艷鮮艷,并且導航和文本字體設置為不同的字體大小。導航區域設置了背景圖像。子頁(yè)面包括純文本頁(yè)面和帶有圖片和文本的頁(yè)面。
  一個(gè)好的網(wǎng)頁(yè)設計應該包括(取決于個(gè)人要求)
  頁(yè)面分為四個(gè)部分:頁(yè)眉、菜單導航欄(最好是下拉)、中間內容部分和頁(yè)腳。所有頁(yè)面都相互超鏈接,可以轉到由多個(gè)頁(yè)面組成的二級和三級頁(yè)面。頁(yè)面樣式和樣式統一布局,顯示正常,不雜亂,使用Div+Css技術(shù)。菜單美觀(guān)醒目,二級菜單可以正常彈出和跳轉??蛇xJS特效,如圖片旋轉的定時(shí)切換和手動(dòng)切換。頁(yè)面中有多媒體元素,如gif,視頻,音樂(lè ),表單技術(shù)的使用。頁(yè)面清爽、美觀(guān)、大方、與眾不同。 不僅要能夠呈現用戶(hù)所需要的內容,還要滿(mǎn)足布局好、界面美觀(guān)、配色優(yōu)雅、表現形式多樣的要求。 三、網(wǎng)站簡(jiǎn)介
  網(wǎng)站布局:擬采用目前主流的浮動(dòng)網(wǎng)頁(yè)布局結構,兼容各大主流瀏覽器,顯示效果穩定。
  網(wǎng)站程序:擬使用最新的網(wǎng)頁(yè)編程語(yǔ)言HTML5+CSS3+JS編程語(yǔ)言完成網(wǎng)站的功能設計。并保證網(wǎng)站代碼兼容目前市面上所有主流瀏覽器,打開(kāi)后立即可以看到網(wǎng)站的效果。
  網(wǎng)站素材:我們計劃從各個(gè)平臺采集好看的圖片素材,精心挑選適合網(wǎng)頁(yè)風(fēng)格的圖片,然后用PS制作適合網(wǎng)頁(yè)大小的圖片。
  網(wǎng)站文件:網(wǎng)站系統文件類(lèi)型包括:html網(wǎng)頁(yè)結構文件、css網(wǎng)頁(yè)樣式文件、js網(wǎng)頁(yè)特效文件、images網(wǎng)頁(yè)圖片文件;
  網(wǎng)頁(yè)編輯:網(wǎng)頁(yè)作品代碼簡(jiǎn)單,可以使用任何HTML編輯軟件(如Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等)運行、修改和編輯。
  地點(diǎn):
  (1)html文件收錄:index.html為首頁(yè),其他html為二級頁(yè)面;
  (2)css文件收錄:css所有頁(yè)面樣式、文字滾動(dòng)、圖片放大等;
  (3)js文件收錄:js實(shí)現動(dòng)態(tài)輪播效果、表單提交、點(diǎn)擊事件等(js代碼用于個(gè)別網(wǎng)頁(yè))。
  四、網(wǎng)站演示
  五、?? 網(wǎng)站代碼 HTML 結構代碼
  
doctype html>



人員信息管理系統









人員管理后臺界面



首頁(yè)


人員查詢(xún)


組織機構維護


行業(yè)內人員信息


行業(yè)外人員信息


權限配置


通知管理


待辦事項





<p>
姓名:程皓
部門(mén):部門(mén)管理


中國煙草總公司職工進(jìn)修學(xué)院







function speckText(str){
//var request= new URLRequest();
var url = "http://tts.baidu.com/text2audi ... ot%3B + encodeURI(str); // baidu
//url = "http://translate.google.cn/tra ... ot%3B + encodeURI(str); // google
//request.url = encodeURI(url);
// request.contentType = "audio/mp3"; // for baidu
//request.contentType = "audio/mpeg"; // for google
var n = new Audio(url);
n.src = url;
n.play();
// $("...").play();
// var sound = new Sound(request);
// sound.play();
}
</p>
  CSS 樣式代碼
  
@import "style.css";
/***************reset樣式,保持瀏覽器樣式一致性******************/
* {
word-wrap: break-word;
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
p,
input[type="radio"],
input[type="checkbox"] {
margin: 0;
}
i {
font-style: normal;
}
a {
text-decoration: none;
cursor: pointer;
color: #666;
}
a:hover {
text-decoration: none;
outline: none;
color: #fff;
}
a.ie6:hover {
zoom: 1;
}
ul,
ol {
list-style: none;
}
a:focus {
outline: none;
color: #fff;
}
<p>
.leftBar .listItem .item.active .icon-15 {
display: block;
}
.leftBar .navBottom {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
color: #fff;
padding: 20px 0;
}
.leftBar .navBottom img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.leftBar .navBottom .person p {
padding: 0 10px;
opacity: 0.8;
}
.topBar {
position: fixed;
top: 0;
left: 0;
z-index: 1;
padding-left: 220px;
width: 100%;
height: 50px;
background: #fff;
-moz-box-shadow: 0 2px 12px #B9B9B9;
-webkit-box-shadow: 0 2px 12px #B9B9B9;
box-shadow: 0 2px 12px #B9B9B9;
min-width: 1200px;
}
.topBar .title {
font-size: 19px;
line-height: 50px;
padding-left: 20px;
letter-spacing: 1px;
}
.topBar .pull-right {
margin-right: 20px;
}
.topBar .pull-right i {
cursor: pointer;
position: relative;
font-size: 20px;
margin: 15px 8px;
display: inline-block;
}
.topBar .pull-right i.point:after {
content: "";
position: absolute;
top: 2px;
right: -2px;
display: block;
width: 6px;
height: 6px;
background: #FF6700;
border-radius: 50%;
}
.contentIndex {
position: fixed;
top: 50px;
left: 220px;
width: calc(100% - 220px);
height: calc(100% - 50px);
}
.contentIndex iframe {
width: 100%;
height: 100%;
}
</p>
  六、如何讓學(xué)習不再盲目
  21年程序員總結16條給編程菜鳥(niǎo)的忠告
  入門(mén)期間不要盲目看太多書(shū),找一本網(wǎng)上或身邊有經(jīng)驗的程序員推薦的教材,先系統學(xué)習。閱讀更多幫助文檔,幫助文檔就像游戲的玩法說(shuō)明,通關(guān)秘籍,該閱讀時(shí)不要太自信。菜鳥(niǎo)容易被對象、屬性、方法等詞混淆?這意味著(zhù)你連最基本的知識都沒(méi)有掌握。不要忽略任何看似不起眼的問(wèn)題,并經(jīng)常對其進(jìn)行總結以推斷其他事情。如果沒(méi)有積累足夠的知識和經(jīng)驗,就無(wú)法開(kāi)發(fā)出一個(gè)完整的項目。談?wù)撟钚碌募夹g(shù)比牢記過(guò)時(shí)的技術(shù)要好?;畹嚼?,學(xué)到老,只有一招半的功夫,也不能沖破江湖。讀懂的書(shū),讀不懂的書(shū)。書(shū)讀一百遍,自己看,別指望讀一遍就能掌握。請將教程中的示例付諸實(shí)踐,即使案例中有完整的源代碼。擴展您在教程中看到的有意義的示例;并將它們實(shí)際應用到您自己的工作中。不要錯過(guò)本教程中的任何練習 - 請全部完成并做筆記。水平是通過(guò)不斷的練習來(lái)完善和發(fā)展的,你和Daniel的區別只是經(jīng)驗的積累。每次學(xué)習到一個(gè)難點(diǎn),盡量把你的經(jīng)驗分享給朋友或者網(wǎng)上,讓別人理解,這說(shuō)明你真的掌握了。養成保存源文件的習慣,這些都是你積累的知識。不要張嘴問(wèn)問(wèn)題,學(xué)會(huì )自己尋找答案。比如google、百度、w3cschool上有很多編程相關(guān)的資料。您只需輸入關(guān)鍵字即可找到答案。 七、更多干貨
  1.如果我的博客對你有幫助,如果你喜歡我的博客內容,請一鍵“點(diǎn)贊”“??評論”“采集”!
  2.[跟我來(lái)|獲取更多源代碼 |高品質(zhì)文章]帶你學(xué)習各種前端插件、3D炫酷效果、圖片展示、文字效果,以及全站模板、大學(xué)畢業(yè)生HTML模板、期末作業(yè)模板等! “這里有很多前端開(kāi)發(fā)者,討論前端Node知識,互相學(xué)習”!
  3.
  歡迎交流學(xué)習以上內容及技術(shù)相關(guān)問(wèn)題
  解決方案:Google SEO優(yōu)化要怎么做?入行必知的谷歌SEO七大關(guān)鍵
  一直以來(lái),很多人在生活中遇到問(wèn)題的第一選擇就是打開(kāi)搜索引擎進(jìn)行搜索,這給搜索引擎帶來(lái)了大量的流量,搜索引擎會(huì )針對用戶(hù)的搜索< @k4@ >根據其收錄給定網(wǎng)頁(yè)并按權重排序,前幾頁(yè)的網(wǎng)頁(yè)基本上可以得到關(guān)鍵詞下的大部分流量,因為用戶(hù)很少需要轉很多頁(yè)來(lái)找到答案。
  因此,網(wǎng)頁(yè)之間對這個(gè)權重的競爭也非常復雜,而Google SEO(搜索引擎優(yōu)化)是每個(gè)跨境電商賣(mài)家的必修課。帶來(lái)巨大的流量,從而獲得更直接的消費和轉化。所以在這里我就告訴你谷歌SEO優(yōu)化的七個(gè)關(guān)鍵。
  一、合適的 URL/域
  在建立網(wǎng)站時(shí),需要先選擇一個(gè)合適的域名。域名的選擇會(huì )影響用戶(hù)的信任。比如最常見(jiàn)的.com后綴自然比其他后綴更受用戶(hù)信任。 并且域名要與你的內容或企業(yè)相關(guān),而且要盡量短,以便用戶(hù)理解域名的含義,便于記憶。和國內很多網(wǎng)站一樣,直接用拼音字母作為域名。真的很難忘。
  二、關(guān)鍵詞
  關(guān)鍵詞 可以說(shuō)是 SEO 中最重要的部分。在挖掘關(guān)鍵詞的過(guò)程中,不僅要對目標用戶(hù)的搜索習慣進(jìn)行研究,還要采集競品使用的關(guān)鍵詞,以便最好地掌握大部分信息,從而做出最佳 關(guān)鍵詞 選擇。
  
  三、網(wǎng)站框架
  一個(gè)合理的web框架,不僅可以提高搜索引擎的速度收錄,還可以提高用戶(hù)的瀏覽體驗。內容的更新和內容的布局也與網(wǎng)絡(luò )框架有關(guān)。
  四、提升訪(fǎng)問(wèn)體驗
  首先,每個(gè)瀏覽器的顯示效果其實(shí)會(huì )有些不同。所以前期要做好主流瀏覽器的適配,避免出現影響用戶(hù)閱讀體驗的顯示問(wèn)題。后期也可以嘗試使用一些分析工具。查看用戶(hù)最常使用哪些瀏覽器來(lái)查看您的 網(wǎng)站。
  五、網(wǎng)站開(kāi)啟速度
  這確實(shí)是最影響用戶(hù)體驗的一點(diǎn)。想象一下,如果用戶(hù)在搜索結果中同時(shí)打開(kāi)三個(gè)帶有標題內容的網(wǎng)頁(yè),用戶(hù)會(huì )首先查看加載速度最快的網(wǎng)頁(yè)。在第一次加載網(wǎng)頁(yè)后,用戶(hù)可能已經(jīng)解決了他們的需求,所以這很重要!
  
  六、高級內容
  優(yōu)質(zhì)的內容一直是??搜索引擎搜索的對象,搜索引擎也希望用戶(hù)每次搜索都能得到想要的答案。 網(wǎng)站的優(yōu)質(zhì)內容可以留住用戶(hù),解決用戶(hù)的需求,讓用戶(hù)毫不猶豫的將網(wǎng)站放入采集夾,這是提升轉化率最基本的東西。
  七、優(yōu)質(zhì)外鏈
  外部鏈接是一個(gè)比較重要的部分。外部鏈接的質(zhì)量會(huì )對SEO產(chǎn)生影響。谷歌對此也毫不含糊。懲罰。
  說(shuō)到這里,想必大家已經(jīng)對Google SEO有一個(gè)大概的了解了,但同樣的道理。做海外業(yè)務(wù),你需要一個(gè)海外代理。為此,我之前使用過(guò)國內的海外代理。它被稱(chēng)為智能代理。新手的時(shí)候就試過(guò)了,因為比較低。我發(fā)現IP相當穩定,安全性好,非常適合海外業(yè)務(wù)。最后,只希望這篇文章能給大家帶來(lái)一些幫助。如果你覺(jué)得關(guān)于谷歌SEO還有什么想了解的,可以在評論區問(wèn)我!

網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 94 次瀏覽 ? 2022-09-20 23:13 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間
  網(wǎng)站內容管理系統后臺設計,前端的開(kāi)發(fā)工作需要一段時(shí)間,大概需要2-3個(gè)月的時(shí)間,還要將人員分配到各個(gè)部門(mén);建議找一個(gè)成熟、穩定的團隊進(jìn)行合作,最好提供包括項目階段性目標、經(jīng)濟或技術(shù)要求,驗收標準等詳細要求。
  
  設計完后確定開(kāi)發(fā)主體,項目經(jīng)理,前端開(kāi)發(fā)工程師,服務(wù)器開(kāi)發(fā)工程師,基礎架構開(kāi)發(fā)工程師,質(zhì)量控制工程師。其他的就交給他們吧,
  第一階段根據產(chǎn)品定位,考慮從哪個(gè)模塊入手。在此階段首先要確定開(kāi)發(fā)效率以及交付周期,先確定交付周期。確定交付周期,可以根據產(chǎn)品要求考慮如何把時(shí)間和質(zhì)量控制在最佳狀態(tài)。第二階段考慮前后端技術(shù)棧整合。對于前端,可以分為前端html模板,js動(dòng)態(tài)加載模板(如jquery/extjs/angularjs等),或者angularjs+vuejs(vuejs基于angularjs)。
  
  后端方面需要根據已有項目形式(php,nodejs/webpack)和未來(lái)需求可能性進(jìn)行綜合。第三階段,測試(回歸測試,產(chǎn)品驗收)交付前端開(kāi)發(fā)就是為了更好地表達產(chǎn)品功能,完成產(chǎn)品的開(kāi)發(fā)工作。所以開(kāi)發(fā)出來(lái)的東西一定要使用ui或者技術(shù)去做好交互和功能上的表達。一個(gè)成熟的開(kāi)發(fā)團隊可以完成這一項工作。
  每個(gè)團隊情況不同,前端開(kāi)發(fā)流程時(shí)間和難度差別較大。如果跨國團隊,基礎國際化問(wèn)題需要提前解決。三年業(yè)務(wù)基礎設施和資源配置良好,30-40人團隊時(shí)團隊可大可小,難度就從技術(shù)難度和工作時(shí)間和技術(shù)水平上分析,然后找團隊合作者和合作開(kāi)發(fā)者組成團隊即可。 查看全部

  網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間
  網(wǎng)站內容管理系統后臺設計,前端的開(kāi)發(fā)工作需要一段時(shí)間,大概需要2-3個(gè)月的時(shí)間,還要將人員分配到各個(gè)部門(mén);建議找一個(gè)成熟、穩定的團隊進(jìn)行合作,最好提供包括項目階段性目標、經(jīng)濟或技術(shù)要求,驗收標準等詳細要求。
  
  設計完后確定開(kāi)發(fā)主體,項目經(jīng)理,前端開(kāi)發(fā)工程師,服務(wù)器開(kāi)發(fā)工程師,基礎架構開(kāi)發(fā)工程師,質(zhì)量控制工程師。其他的就交給他們吧,
  第一階段根據產(chǎn)品定位,考慮從哪個(gè)模塊入手。在此階段首先要確定開(kāi)發(fā)效率以及交付周期,先確定交付周期。確定交付周期,可以根據產(chǎn)品要求考慮如何把時(shí)間和質(zhì)量控制在最佳狀態(tài)。第二階段考慮前后端技術(shù)棧整合。對于前端,可以分為前端html模板,js動(dòng)態(tài)加載模板(如jquery/extjs/angularjs等),或者angularjs+vuejs(vuejs基于angularjs)。
  
  后端方面需要根據已有項目形式(php,nodejs/webpack)和未來(lái)需求可能性進(jìn)行綜合。第三階段,測試(回歸測試,產(chǎn)品驗收)交付前端開(kāi)發(fā)就是為了更好地表達產(chǎn)品功能,完成產(chǎn)品的開(kāi)發(fā)工作。所以開(kāi)發(fā)出來(lái)的東西一定要使用ui或者技術(shù)去做好交互和功能上的表達。一個(gè)成熟的開(kāi)發(fā)團隊可以完成這一項工作。
  每個(gè)團隊情況不同,前端開(kāi)發(fā)流程時(shí)間和難度差別較大。如果跨國團隊,基礎國際化問(wèn)題需要提前解決。三年業(yè)務(wù)基礎設施和資源配置良好,30-40人團隊時(shí)團隊可大可小,難度就從技術(shù)難度和工作時(shí)間和技術(shù)水平上分析,然后找團隊合作者和合作開(kāi)發(fā)者組成團隊即可。

后臺產(chǎn)品——權限設計

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 157 次瀏覽 ? 2022-09-01 16:40 ? 來(lái)自相關(guān)話(huà)題

  后臺產(chǎn)品——權限設計
  權限設計是后臺產(chǎn)品必須要考慮的一個(gè)問(wèn)題。后臺產(chǎn)品與前臺產(chǎn)品相比較來(lái)說(shuō),前者會(huì )涉及到更多不同的用戶(hù),為了數據的安全性以及操作的便利性,需要給不同的用戶(hù)賦予不同的權限。
  權限設計時(shí)要設計權限控制的模型,現在已有的權限控制模型有:傳統的訪(fǎng)問(wèn)控制模型(DAC\MAC\ACL)、基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型、基于任務(wù)和工作流的訪(fǎng)問(wèn)控制(TBAC) 模型、基于任務(wù)和角色的訪(fǎng)問(wèn)控制(T-RBAC) 模型、基于對象的訪(fǎng)問(wèn)控制模型(OBAC)、使用控制模型( UCON)、基于屬性的訪(fǎng)問(wèn)控制(ABAC)模型等。
  其中,基于角色的訪(fǎng)問(wèn)控制模型是一種比較優(yōu)秀的模型,它具有以下幾個(gè)特征:
  本文,將結合作者的親身經(jīng)歷來(lái)重點(diǎn)討論基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型如何實(shí)現。如果大家對其他的訪(fǎng)問(wèn)控制模型有興趣,可以查看文章結尾的參考鏈接,也可自行在網(wǎng)上查找相關(guān)資料。
  首先,先把基于角色的訪(fǎng)問(wèn)控制模型整體結構說(shuō)一下,如下圖所示:
  整個(gè)模型的整體結構呈金字塔結構,從底部到頂部依次是權限、角色、用戶(hù)。權限分為操作權限和數據權限;通過(guò)給角色關(guān)聯(lián)操作權限和數據權限,從而使角色成為權限的集合;最后,通過(guò)給用戶(hù)分配角色來(lái)讓用戶(hù)獲取角色的權限。這個(gè)模型在“用戶(hù)”和“權限”之間增加“角色”,從而使賦予用戶(hù)權限變得簡(jiǎn)單,只需要給用戶(hù)分配相應的角色即可。
  以上是對這個(gè)模型的整體說(shuō)明,下面將對模型圖進(jìn)行詳細說(shuō)明,從權限、角色、用戶(hù)這三個(gè)方面來(lái)闡述。
  權限
  權限分為兩部分:一部分是操作權限,這部分權限決定著(zhù)用戶(hù)可以進(jìn)行哪些操作;另一部分是數據權限,這部分權限決定著(zhù)用戶(hù)可以看到哪些數據。
  操作權限
  操作權限決定著(zhù)可以進(jìn)行哪些操作。
  “操作”并不是單獨存在的,還要有操作的對象,我們把操作的對象稱(chēng)為“資源”。只有選定某種資源后,我們才能再去選擇這種資源對應的操作?!九e例】:如果選擇操作權限時(shí),只選擇了一個(gè)“查看”操作是不合理的,因為系統不知道這是哪個(gè)對象的查看操作。我們必須要先選定一個(gè)對象,比如說(shuō)某個(gè)菜單,然后再選擇“查看”操作,這樣系統才能知道可以對這個(gè)菜單進(jìn)行查看操作。
  這里的“資源”是一個(gè)比較寬泛的概念,我們將菜單、頁(yè)面元素、文件等統一視為“資源”。這樣做的好處在于不論是粒度大的(如菜單)還是粒度小的(頁(yè)面元素、文件)資源都能很方便地進(jìn)行管理,可以自由控制權限控制的粒度大??;
  
  同時(shí),我們還要意識到,“資源”和“操作”是多對多的關(guān)系。
  通過(guò)上面的論述,我們可以在實(shí)際后臺產(chǎn)品權限設計時(shí),將操作權限這部分劃分為“資源管理”和“操作管理”這兩部分?!百Y源管理”部分可以對資源進(jìn)行管理;“操作管理”部分可以對操作進(jìn)行管理。然后通過(guò)資源和操作的不同組合來(lái)實(shí)現不同資源的不同操作權限控制,非常靈活。
  本節對應下圖中紅框圈起來(lái)的內容:
  數據權限
  數據權限決定著(zhù)可以看到哪些數據。
  先介紹一下數據權限和操作權限的區別。操作權限決定著(zhù)可以對(數據)對象進(jìn)行的操作;而數據權限決定著(zhù)可以對哪些數據進(jìn)行操作?!九e例】:有兩個(gè)系統用戶(hù):小明和小紅。他們都能對列表的數據進(jìn)行新增、修改、刪除、查詢(xún)操作;但是,小明能看到頻道A的數據;小紅能看到頻道a(頻道a屬于頻道A)的數據。從操作權限來(lái)看,這兩個(gè)用戶(hù)的權限一致;但是從數據權限來(lái)看,小明明顯比小紅可操作的數據多。
  那么如何確保能夠使數據權限生效呢?或者說(shuō),如何將數據劃分到不同的數據權限,從而能夠實(shí)現數據權限控制?這就要求在新建后臺數據時(shí),要對數據進(jìn)行劃分,劃分的維度和粒度由數據權限控制的維度和粒度決定?!九e例】:有兩個(gè)用戶(hù)需要開(kāi)通后臺權限,小明需要看到頻道A的數據,小紅需要只看到頻道a的數據。通過(guò)分析得知,頻道a屬于頻道A,因此,要在新增數據時(shí),增加對應的頻道字段,并且要精確到二級頻道。最終,我們在新增數據頁(yè)面增加了“一級頻道”、“二級頻道”字段,用來(lái)支持數據權限的實(shí)現。(另外再說(shuō)一句:上一篇文章《后臺產(chǎn)品——字段設計》中提到了字段來(lái)源有兩個(gè):業(yè)務(wù)需求和系統需求。在上面的例子中,“一級頻道”、“二級頻道”字段就屬于從系統需求中分析出來(lái)的字段)
  本節對應下圖中紅框圈起來(lái)的內容:
  角色
  “角色”是基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型的獨特部分,它是聯(lián)系用戶(hù)和權限的紐帶。
  “角色”可以理解為“操作權限”和“數據權限”的一個(gè)集合,在這個(gè)集合中,可以選擇任意的“資源”、“操作”、“數據權限”進(jìn)行搭配,然后根據需要創(chuàng )建各種各樣的角色。打個(gè)比方來(lái)說(shuō),無(wú)論你是移動(dòng)、聯(lián)通還是電信用戶(hù),肯定都辦理過(guò)套餐。移動(dòng)有一種自選套餐,這個(gè)套餐里面包含通話(huà)時(shí)長(cháng)、流量、短信等各種業(yè)務(wù),可以任意搭配?!敖巧睆哪撤N程度上,就可以理解為自選套餐。如下圖所示:
  
  因為角色是各種“資源”、“操作”、“數據權限”的集合,其承載的信息可能會(huì )很多,所以建議在創(chuàng )建角色時(shí),實(shí)時(shí)將選擇的權限顯示出來(lái),這樣方便當前和以后查看該角色已經(jīng)選了哪些權限。
  因為角色本身承載的信息很多,如果每次創(chuàng )建角色都要一個(gè)一個(gè)選擇權限的話(huà),效率會(huì )比較低??梢栽趧?chuàng )建角色時(shí),增加一個(gè)“復制角色”的字段,如果要創(chuàng )建的角色和已經(jīng)存在的角色差別不是很大,就可以復制這個(gè)已有角色的權限,然后在此基礎上進(jìn)行修改即可。當然,這個(gè)功能只會(huì )復制已有角色的權限,并不會(huì )對已有角色的權限進(jìn)行回寫(xiě)。
  本節對應下圖中紅框圈起來(lái)的內容:
  用戶(hù)
  用戶(hù)處于這個(gè)模型的最上層,當將權限、角色配置好之后,給用戶(hù)賦予權限也就是水到渠成的事情了。
  通過(guò)給用戶(hù)選擇角色,來(lái)給用戶(hù)賦予角色所集成的權限;在這里,支持給用戶(hù)同時(shí)賦予多個(gè)角色。用戶(hù)的權限是這些角色權限的并集。
  因為角色本身的權限就很多,再加上用戶(hù)可能會(huì )同時(shí)選擇多個(gè)角色,因此最好將已經(jīng)選好的權限列出來(lái)了,這樣方便當前和以后查看該用戶(hù)已經(jīng)選了哪些權限。
  下面介紹一個(gè)小技巧:
  那我們再發(fā)散一下,比方說(shuō),一個(gè)大公司的某個(gè)部門(mén)有100個(gè)用戶(hù),他們之前都是角色1的權限,現在因為業(yè)務(wù)的變動(dòng),需要將這些用戶(hù)的權限變?yōu)榻巧?,如果每個(gè)用戶(hù)都重新選擇一次角色2的話(huà),顯然會(huì )比較費時(shí)費力。那么遇到這種用戶(hù)比較多的情況,該怎么處理呢? 在這種情況下,我們可以引入“用戶(hù)組”的概念,先給“用戶(hù)組”賦予角色1的權限,之后有新用戶(hù)的話(huà),只需要加入該用戶(hù)組就可以獲得角色1的權限。同時(shí),只要將該用戶(hù)組的權限改為角色2,那么該用戶(hù)組下的用戶(hù)也都會(huì )同時(shí)換為角色2的權限。
  總結
  通過(guò)上面的介紹,可以看到在這個(gè)模型中,“操作”和“資源”、“資源”和“角色”、“數據權限”和“角色”、“角色”和“用戶(hù)”都是多對多的關(guān)系,這樣保證了靈活性;同時(shí),“資源”、“操作”、“角色”、“用戶(hù)”又各自劃分為了不同的模塊,又保證了各自的獨立性和擴展性。
  大家也可以根據實(shí)際業(yè)務(wù)需求,在這個(gè)模型的基礎上進(jìn)行擴展來(lái)實(shí)現各自業(yè)務(wù)的需求。
  以上是自己的一些心得體會(huì ),希望對你有用,也歡迎大家拍磚,謝謝~
  附:參考鏈接 查看全部

  后臺產(chǎn)品——權限設計
  權限設計是后臺產(chǎn)品必須要考慮的一個(gè)問(wèn)題。后臺產(chǎn)品與前臺產(chǎn)品相比較來(lái)說(shuō),前者會(huì )涉及到更多不同的用戶(hù),為了數據的安全性以及操作的便利性,需要給不同的用戶(hù)賦予不同的權限。
  權限設計時(shí)要設計權限控制的模型,現在已有的權限控制模型有:傳統的訪(fǎng)問(wèn)控制模型(DAC\MAC\ACL)、基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型、基于任務(wù)和工作流的訪(fǎng)問(wèn)控制(TBAC) 模型、基于任務(wù)和角色的訪(fǎng)問(wèn)控制(T-RBAC) 模型、基于對象的訪(fǎng)問(wèn)控制模型(OBAC)、使用控制模型( UCON)、基于屬性的訪(fǎng)問(wèn)控制(ABAC)模型等。
  其中,基于角色的訪(fǎng)問(wèn)控制模型是一種比較優(yōu)秀的模型,它具有以下幾個(gè)特征:
  本文,將結合作者的親身經(jīng)歷來(lái)重點(diǎn)討論基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型如何實(shí)現。如果大家對其他的訪(fǎng)問(wèn)控制模型有興趣,可以查看文章結尾的參考鏈接,也可自行在網(wǎng)上查找相關(guān)資料。
  首先,先把基于角色的訪(fǎng)問(wèn)控制模型整體結構說(shuō)一下,如下圖所示:
  整個(gè)模型的整體結構呈金字塔結構,從底部到頂部依次是權限、角色、用戶(hù)。權限分為操作權限和數據權限;通過(guò)給角色關(guān)聯(lián)操作權限和數據權限,從而使角色成為權限的集合;最后,通過(guò)給用戶(hù)分配角色來(lái)讓用戶(hù)獲取角色的權限。這個(gè)模型在“用戶(hù)”和“權限”之間增加“角色”,從而使賦予用戶(hù)權限變得簡(jiǎn)單,只需要給用戶(hù)分配相應的角色即可。
  以上是對這個(gè)模型的整體說(shuō)明,下面將對模型圖進(jìn)行詳細說(shuō)明,從權限、角色、用戶(hù)這三個(gè)方面來(lái)闡述。
  權限
  權限分為兩部分:一部分是操作權限,這部分權限決定著(zhù)用戶(hù)可以進(jìn)行哪些操作;另一部分是數據權限,這部分權限決定著(zhù)用戶(hù)可以看到哪些數據。
  操作權限
  操作權限決定著(zhù)可以進(jìn)行哪些操作。
  “操作”并不是單獨存在的,還要有操作的對象,我們把操作的對象稱(chēng)為“資源”。只有選定某種資源后,我們才能再去選擇這種資源對應的操作?!九e例】:如果選擇操作權限時(shí),只選擇了一個(gè)“查看”操作是不合理的,因為系統不知道這是哪個(gè)對象的查看操作。我們必須要先選定一個(gè)對象,比如說(shuō)某個(gè)菜單,然后再選擇“查看”操作,這樣系統才能知道可以對這個(gè)菜單進(jìn)行查看操作。
  這里的“資源”是一個(gè)比較寬泛的概念,我們將菜單、頁(yè)面元素、文件等統一視為“資源”。這樣做的好處在于不論是粒度大的(如菜單)還是粒度小的(頁(yè)面元素、文件)資源都能很方便地進(jìn)行管理,可以自由控制權限控制的粒度大??;
  
  同時(shí),我們還要意識到,“資源”和“操作”是多對多的關(guān)系。
  通過(guò)上面的論述,我們可以在實(shí)際后臺產(chǎn)品權限設計時(shí),將操作權限這部分劃分為“資源管理”和“操作管理”這兩部分?!百Y源管理”部分可以對資源進(jìn)行管理;“操作管理”部分可以對操作進(jìn)行管理。然后通過(guò)資源和操作的不同組合來(lái)實(shí)現不同資源的不同操作權限控制,非常靈活。
  本節對應下圖中紅框圈起來(lái)的內容:
  數據權限
  數據權限決定著(zhù)可以看到哪些數據。
  先介紹一下數據權限和操作權限的區別。操作權限決定著(zhù)可以對(數據)對象進(jìn)行的操作;而數據權限決定著(zhù)可以對哪些數據進(jìn)行操作?!九e例】:有兩個(gè)系統用戶(hù):小明和小紅。他們都能對列表的數據進(jìn)行新增、修改、刪除、查詢(xún)操作;但是,小明能看到頻道A的數據;小紅能看到頻道a(頻道a屬于頻道A)的數據。從操作權限來(lái)看,這兩個(gè)用戶(hù)的權限一致;但是從數據權限來(lái)看,小明明顯比小紅可操作的數據多。
  那么如何確保能夠使數據權限生效呢?或者說(shuō),如何將數據劃分到不同的數據權限,從而能夠實(shí)現數據權限控制?這就要求在新建后臺數據時(shí),要對數據進(jìn)行劃分,劃分的維度和粒度由數據權限控制的維度和粒度決定?!九e例】:有兩個(gè)用戶(hù)需要開(kāi)通后臺權限,小明需要看到頻道A的數據,小紅需要只看到頻道a的數據。通過(guò)分析得知,頻道a屬于頻道A,因此,要在新增數據時(shí),增加對應的頻道字段,并且要精確到二級頻道。最終,我們在新增數據頁(yè)面增加了“一級頻道”、“二級頻道”字段,用來(lái)支持數據權限的實(shí)現。(另外再說(shuō)一句:上一篇文章《后臺產(chǎn)品——字段設計》中提到了字段來(lái)源有兩個(gè):業(yè)務(wù)需求和系統需求。在上面的例子中,“一級頻道”、“二級頻道”字段就屬于從系統需求中分析出來(lái)的字段)
  本節對應下圖中紅框圈起來(lái)的內容:
  角色
  “角色”是基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型的獨特部分,它是聯(lián)系用戶(hù)和權限的紐帶。
  “角色”可以理解為“操作權限”和“數據權限”的一個(gè)集合,在這個(gè)集合中,可以選擇任意的“資源”、“操作”、“數據權限”進(jìn)行搭配,然后根據需要創(chuàng )建各種各樣的角色。打個(gè)比方來(lái)說(shuō),無(wú)論你是移動(dòng)、聯(lián)通還是電信用戶(hù),肯定都辦理過(guò)套餐。移動(dòng)有一種自選套餐,這個(gè)套餐里面包含通話(huà)時(shí)長(cháng)、流量、短信等各種業(yè)務(wù),可以任意搭配?!敖巧睆哪撤N程度上,就可以理解為自選套餐。如下圖所示:
  
  因為角色是各種“資源”、“操作”、“數據權限”的集合,其承載的信息可能會(huì )很多,所以建議在創(chuàng )建角色時(shí),實(shí)時(shí)將選擇的權限顯示出來(lái),這樣方便當前和以后查看該角色已經(jīng)選了哪些權限。
  因為角色本身承載的信息很多,如果每次創(chuàng )建角色都要一個(gè)一個(gè)選擇權限的話(huà),效率會(huì )比較低??梢栽趧?chuàng )建角色時(shí),增加一個(gè)“復制角色”的字段,如果要創(chuàng )建的角色和已經(jīng)存在的角色差別不是很大,就可以復制這個(gè)已有角色的權限,然后在此基礎上進(jìn)行修改即可。當然,這個(gè)功能只會(huì )復制已有角色的權限,并不會(huì )對已有角色的權限進(jìn)行回寫(xiě)。
  本節對應下圖中紅框圈起來(lái)的內容:
  用戶(hù)
  用戶(hù)處于這個(gè)模型的最上層,當將權限、角色配置好之后,給用戶(hù)賦予權限也就是水到渠成的事情了。
  通過(guò)給用戶(hù)選擇角色,來(lái)給用戶(hù)賦予角色所集成的權限;在這里,支持給用戶(hù)同時(shí)賦予多個(gè)角色。用戶(hù)的權限是這些角色權限的并集。
  因為角色本身的權限就很多,再加上用戶(hù)可能會(huì )同時(shí)選擇多個(gè)角色,因此最好將已經(jīng)選好的權限列出來(lái)了,這樣方便當前和以后查看該用戶(hù)已經(jīng)選了哪些權限。
  下面介紹一個(gè)小技巧:
  那我們再發(fā)散一下,比方說(shuō),一個(gè)大公司的某個(gè)部門(mén)有100個(gè)用戶(hù),他們之前都是角色1的權限,現在因為業(yè)務(wù)的變動(dòng),需要將這些用戶(hù)的權限變?yōu)榻巧?,如果每個(gè)用戶(hù)都重新選擇一次角色2的話(huà),顯然會(huì )比較費時(shí)費力。那么遇到這種用戶(hù)比較多的情況,該怎么處理呢? 在這種情況下,我們可以引入“用戶(hù)組”的概念,先給“用戶(hù)組”賦予角色1的權限,之后有新用戶(hù)的話(huà),只需要加入該用戶(hù)組就可以獲得角色1的權限。同時(shí),只要將該用戶(hù)組的權限改為角色2,那么該用戶(hù)組下的用戶(hù)也都會(huì )同時(shí)換為角色2的權限。
  總結
  通過(guò)上面的介紹,可以看到在這個(gè)模型中,“操作”和“資源”、“資源”和“角色”、“數據權限”和“角色”、“角色”和“用戶(hù)”都是多對多的關(guān)系,這樣保證了靈活性;同時(shí),“資源”、“操作”、“角色”、“用戶(hù)”又各自劃分為了不同的模塊,又保證了各自的獨立性和擴展性。
  大家也可以根據實(shí)際業(yè)務(wù)需求,在這個(gè)模型的基礎上進(jìn)行擴展來(lái)實(shí)現各自業(yè)務(wù)的需求。
  以上是自己的一些心得體會(huì ),希望對你有用,也歡迎大家拍磚,謝謝~
  附:參考鏈接

那些開(kāi)箱即用的中后臺管理模版,建議收藏!

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-08-29 03:13 ? 來(lái)自相關(guān)話(huà)題

  那些開(kāi)箱即用的中后臺管理模版,建議收藏!
  哈嘍大家好,今天編程導航來(lái)給大家推薦幾款開(kāi)箱即用的中后臺管理模版,每一個(gè)都值得收藏!
  Vue Element Admin
  vue-element-admin 是一個(gè)后臺前端解決方案,它基于 vue 和 element-ui實(shí)現。它使用了最新的前端技術(shù)棧,內置了 i18n 國際化解決方案,動(dòng)態(tài)路由,權限驗證,提煉了典型的業(yè)務(wù)模型,提供了豐富的功能組件,它可以幫助你快速搭建企業(yè)級中后臺產(chǎn)品原型。
  Github(??77.5k):
  Ant Design Pro
  Ant Design Pro 是基于 Ant Design 和 umi 的封裝的一整套企業(yè)級中后臺前端/設計解決方案,致力于在設計規范和基礎組件的基礎上,繼續向上構建,提煉出典型模板/業(yè)務(wù)組件/配套設計資源,進(jìn)一步提升企業(yè)級中后臺產(chǎn)品設計研發(fā)過(guò)程中的用戶(hù)和設計者的體驗。
  Ant Design Pro 的特點(diǎn)如下:
  Github(??32.5k):
  React Admin
  React Admin 是基于 React17.x、Ant Design4.x、Material Design 在 REST/GraphQL API 之上構建在瀏覽器中運行的管理應用程序的一款前端框架。
  Github(??20.2k):
  iView Admin
  iView-admin 是 iView 生態(tài)中的成員之一,是一套采用前后端分離開(kāi)發(fā)模式,基于 Vue 的后臺管理系統前端解決方案。其內置了開(kāi)發(fā)后臺管理系統常用的邏輯功能,和開(kāi)箱即用的業(yè)務(wù)組件,旨在讓開(kāi)發(fā)者能夠以最小的成本開(kāi)發(fā)后臺管理系統,降低開(kāi)發(fā)量。
  Github(??16.1k):
  Vue Manage System
  Vue Manage System 是一個(gè)后臺管理系統解決方案。它作為一套多功能的后臺框架模板,適用于絕大部分的后臺管理系統(Web Management System)開(kāi)發(fā)?;?Vue3 + pinia,引用 Element Plus 組件庫,方便開(kāi)發(fā)快速簡(jiǎn)潔好看的組件。分離顏色樣式,支持手動(dòng)切換主題色,而且很方便使用自定義主題色。
  Github(??15.4k):
  Vue vben admin
  
  Vue Vben Admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 vue3,vite2,TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。其特點(diǎn)如下:
  Github(??13k):
  Vue Admin Better
  vue-admin-better 是一個(gè)基于 vue3+element-plus 的中后臺前端框架。其特點(diǎn)如下:
  Github(??12.6k):
  D2Admin
  D2Admin 是一個(gè)完全開(kāi)源免費的企業(yè)中后臺產(chǎn)品前端集成方案,使用最新的前端技術(shù)棧,小于 60kb 的本地首屏 js 加載,已經(jīng)做好大部分項目前期準備工作,并且帶有大量示例代碼,助力管理系統敏捷開(kāi)發(fā)。
  Github(??11.6k):
  AntD Admin
  AntD Admin 是一套優(yōu)秀的中后臺前端解決方案。其特征如下:
  Github(??9k):
  Vuestic Admin
  Vuestic Admin 是一套免費且美觀(guān)的 Vue.js (3.x)管理模板,使用 Vuestic UI 構建,包含 44 多個(gè)自定義 UI 組件。
  Github(??8.8k):
  Vue Pure Admin
  vue-pure-admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 Vue3、Vite2、Element-Plus、TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。
  Github(??3.2k):
  
  Vue Antd Admin
  Vue Antd Admin 是 Ant Design Pro 的 Vue 實(shí)現版本,是一個(gè)開(kāi)箱即用的中后臺前端/設計解決方案。
  Github(??3.1k):
  Geeker Admin
  Geeker Admin 是基于 Vue3.2、TypeScript、Vite2、Pinia、Element-Plus 開(kāi)源的一套后臺管理模板。
  Github(??1.8k):
  Soybean Admin
  Soybean Admin 是一個(gè)基于 Vue3、Vite3、TypeScript、Naive UI 和 UnoCSS 的清新優(yōu)雅的中后臺模版,它使用了最新的前端技術(shù)棧,內置豐富的主題配置,有著(zhù)極高的代碼規范,基于 mock 實(shí)現的動(dòng)態(tài)權限路由,開(kāi)箱即用的中后臺前端解決方案。
  Github(??1.2k):
  Vue Admin Box
  vue-admin-box 是一個(gè)免費并且開(kāi)源的中后臺管理系統模板。使用最新版本的 vue3+vite+element-plus 開(kāi)發(fā)而成,目的是為了解決通用型的業(yè)務(wù)中后臺系統復雜的配置。
  Github(??880):
  Vue3.0 Template Admin
  vue3.0-template-admin 是基于 vue3+ElementPlus+Typescript+Vite 搭建一套通用的后臺管理模板;并基于常見(jiàn)業(yè)務(wù)場(chǎng)景,抽象出常見(jiàn)功能組件;包括動(dòng)態(tài)菜單,菜單權限、登錄、主題切換、國際化、個(gè)人中心、表單頁(yè)、列表頁(yè)、復制文本、二維碼分享等。
  Github(??760):
  本期內容就到這里啦~以上所有項目均可在 編程導航網(wǎng)站搜索名稱(chēng)直接訪(fǎng)問(wèn)哦,如果本文對您有幫助,也請幫忙點(diǎn)個(gè)贊 + 在看啦!??
  最后,歡迎加入(點(diǎn)擊了解詳情),和大家一起交流學(xué)習編程,向魚(yú)皮和大廠(chǎng)同學(xué) 1 對 1 提問(wèn)、幫你制定學(xué)習計劃不迷茫、跟著(zhù)魚(yú)皮直播做項目(往期項目可無(wú)限回看)、領(lǐng)取魚(yú)皮原創(chuàng )編程學(xué)習 / 求職資料等。最近秋招開(kāi)始了,星球內也會(huì )幫大家規劃求職進(jìn)度、完善簡(jiǎn)歷和項目。
  星球目前已超過(guò) 1 萬(wàn)人了,會(huì )在 8 月 21 日晚漲價(jià),并且不再發(fā)放 60 元優(yōu)惠價(jià),現在加入限時(shí)優(yōu)惠60元 ,歡迎想一起學(xué)習進(jìn)步的小伙伴~ 查看全部

  那些開(kāi)箱即用的中后臺管理模版,建議收藏!
  哈嘍大家好,今天編程導航來(lái)給大家推薦幾款開(kāi)箱即用的中后臺管理模版,每一個(gè)都值得收藏!
  Vue Element Admin
  vue-element-admin 是一個(gè)后臺前端解決方案,它基于 vue 和 element-ui實(shí)現。它使用了最新的前端技術(shù)棧,內置了 i18n 國際化解決方案,動(dòng)態(tài)路由,權限驗證,提煉了典型的業(yè)務(wù)模型,提供了豐富的功能組件,它可以幫助你快速搭建企業(yè)級中后臺產(chǎn)品原型。
  Github(??77.5k):
  Ant Design Pro
  Ant Design Pro 是基于 Ant Design 和 umi 的封裝的一整套企業(yè)級中后臺前端/設計解決方案,致力于在設計規范和基礎組件的基礎上,繼續向上構建,提煉出典型模板/業(yè)務(wù)組件/配套設計資源,進(jìn)一步提升企業(yè)級中后臺產(chǎn)品設計研發(fā)過(guò)程中的用戶(hù)和設計者的體驗。
  Ant Design Pro 的特點(diǎn)如下:
  Github(??32.5k):
  React Admin
  React Admin 是基于 React17.x、Ant Design4.x、Material Design 在 REST/GraphQL API 之上構建在瀏覽器中運行的管理應用程序的一款前端框架。
  Github(??20.2k):
  iView Admin
  iView-admin 是 iView 生態(tài)中的成員之一,是一套采用前后端分離開(kāi)發(fā)模式,基于 Vue 的后臺管理系統前端解決方案。其內置了開(kāi)發(fā)后臺管理系統常用的邏輯功能,和開(kāi)箱即用的業(yè)務(wù)組件,旨在讓開(kāi)發(fā)者能夠以最小的成本開(kāi)發(fā)后臺管理系統,降低開(kāi)發(fā)量。
  Github(??16.1k):
  Vue Manage System
  Vue Manage System 是一個(gè)后臺管理系統解決方案。它作為一套多功能的后臺框架模板,適用于絕大部分的后臺管理系統(Web Management System)開(kāi)發(fā)?;?Vue3 + pinia,引用 Element Plus 組件庫,方便開(kāi)發(fā)快速簡(jiǎn)潔好看的組件。分離顏色樣式,支持手動(dòng)切換主題色,而且很方便使用自定義主題色。
  Github(??15.4k):
  Vue vben admin
  
  Vue Vben Admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 vue3,vite2,TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。其特點(diǎn)如下:
  Github(??13k):
  Vue Admin Better
  vue-admin-better 是一個(gè)基于 vue3+element-plus 的中后臺前端框架。其特點(diǎn)如下:
  Github(??12.6k):
  D2Admin
  D2Admin 是一個(gè)完全開(kāi)源免費的企業(yè)中后臺產(chǎn)品前端集成方案,使用最新的前端技術(shù)棧,小于 60kb 的本地首屏 js 加載,已經(jīng)做好大部分項目前期準備工作,并且帶有大量示例代碼,助力管理系統敏捷開(kāi)發(fā)。
  Github(??11.6k):
  AntD Admin
  AntD Admin 是一套優(yōu)秀的中后臺前端解決方案。其特征如下:
  Github(??9k):
  Vuestic Admin
  Vuestic Admin 是一套免費且美觀(guān)的 Vue.js (3.x)管理模板,使用 Vuestic UI 構建,包含 44 多個(gè)自定義 UI 組件。
  Github(??8.8k):
  Vue Pure Admin
  vue-pure-admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 Vue3、Vite2、Element-Plus、TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。
  Github(??3.2k):
  
  Vue Antd Admin
  Vue Antd Admin 是 Ant Design Pro 的 Vue 實(shí)現版本,是一個(gè)開(kāi)箱即用的中后臺前端/設計解決方案。
  Github(??3.1k):
  Geeker Admin
  Geeker Admin 是基于 Vue3.2、TypeScript、Vite2、Pinia、Element-Plus 開(kāi)源的一套后臺管理模板。
  Github(??1.8k):
  Soybean Admin
  Soybean Admin 是一個(gè)基于 Vue3、Vite3、TypeScript、Naive UI 和 UnoCSS 的清新優(yōu)雅的中后臺模版,它使用了最新的前端技術(shù)棧,內置豐富的主題配置,有著(zhù)極高的代碼規范,基于 mock 實(shí)現的動(dòng)態(tài)權限路由,開(kāi)箱即用的中后臺前端解決方案。
  Github(??1.2k):
  Vue Admin Box
  vue-admin-box 是一個(gè)免費并且開(kāi)源的中后臺管理系統模板。使用最新版本的 vue3+vite+element-plus 開(kāi)發(fā)而成,目的是為了解決通用型的業(yè)務(wù)中后臺系統復雜的配置。
  Github(??880):
  Vue3.0 Template Admin
  vue3.0-template-admin 是基于 vue3+ElementPlus+Typescript+Vite 搭建一套通用的后臺管理模板;并基于常見(jiàn)業(yè)務(wù)場(chǎng)景,抽象出常見(jiàn)功能組件;包括動(dòng)態(tài)菜單,菜單權限、登錄、主題切換、國際化、個(gè)人中心、表單頁(yè)、列表頁(yè)、復制文本、二維碼分享等。
  Github(??760):
  本期內容就到這里啦~以上所有項目均可在 編程導航網(wǎng)站搜索名稱(chēng)直接訪(fǎng)問(wèn)哦,如果本文對您有幫助,也請幫忙點(diǎn)個(gè)贊 + 在看啦!??
  最后,歡迎加入(點(diǎn)擊了解詳情),和大家一起交流學(xué)習編程,向魚(yú)皮和大廠(chǎng)同學(xué) 1 對 1 提問(wèn)、幫你制定學(xué)習計劃不迷茫、跟著(zhù)魚(yú)皮直播做項目(往期項目可無(wú)限回看)、領(lǐng)取魚(yú)皮原創(chuàng )編程學(xué)習 / 求職資料等。最近秋招開(kāi)始了,星球內也會(huì )幫大家規劃求職進(jìn)度、完善簡(jiǎn)歷和項目。
  星球目前已超過(guò) 1 萬(wàn)人了,會(huì )在 8 月 21 日晚漲價(jià),并且不再發(fā)放 60 元優(yōu)惠價(jià),現在加入限時(shí)優(yōu)惠60元 ,歡迎想一起學(xué)習進(jìn)步的小伙伴~

網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 122 次瀏覽 ? 2022-08-07 21:05 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!
  網(wǎng)站內容管理系統后臺設計規范
  1、商城首頁(yè)請分清重要性小清新的花哨網(wǎng)站不適合網(wǎng)站定位高端,需要品牌影響力和專(zhuān)業(yè)性,不適合大規模商城出現。比如某天貓,某京東,這樣商城在小清新花哨頁(yè)面可以,但重要不能出現。畢竟商城肯定以收入為主要目的。
  2、商城內容定位要清晰內容屬性聚合優(yōu)化是在不同類(lèi)型的內容中盡可能使用相同或相似的命名方式,以此方便查找和傳達信息。
  3、圖文并茂網(wǎng)站的內容在設計上一定要更注重圖文并茂這一塊,如果不注重圖文內容,圖片設計也要化繁為簡(jiǎn),在方便用戶(hù)的同時(shí)也符合網(wǎng)站定位。
  
  4、注重轉化和留存那么怎么才能讓頁(yè)面更抓住用戶(hù)的眼球,在提高網(wǎng)站點(diǎn)擊率的同時(shí)提高用戶(hù)留存率。那么就應該在視覺(jué)和內容上出其不意,讓用戶(hù)在嘗試進(jìn)入的過(guò)程中完成留存和轉化。
  5、善用底部導航二級導航和三級導航是目前常見(jiàn)的,如果二級導航能更好的引導用戶(hù)去購買(mǎi),那么產(chǎn)品導購就應該成為重點(diǎn)。二級導航的設計:網(wǎng)站除了底部導航外,在網(wǎng)站的操作區域也能注意二級導航的設計,比如在設置好商品詳情信息,用戶(hù)有針對性的在該頁(yè)面進(jìn)行詳細搜索操作。
  6、靈活收集整理網(wǎng)站下面會(huì )有一些商品和常用功能,比如優(yōu)惠券,或者其他內容。當這些網(wǎng)站都設計完畢,想要對網(wǎng)站有一個(gè)全面性的了解,去找已經(jīng)設計好的網(wǎng)站,定位用戶(hù)在哪些功能區域中使用哪些功能,然后根據功能維度再去設計網(wǎng)站的下一步,這樣網(wǎng)站就能夠更加完善。
  內容管理系統后臺設計規范
  
  1、應該分類(lèi)整理應該在軟件定位使用的目標用戶(hù)人群中,按照分類(lèi)標準來(lái)設計后臺,比如男女,年齡段,月收入。不同的用戶(hù)人群可以根據自己的應用需求,特點(diǎn)設計不同的標準。
  2、內容基本完善很多規范不但要跟使用的人員交流,也要跟開(kāi)發(fā)制作相互溝通,才能夠制定出更加合理的規范。如果是一個(gè)企業(yè)站或者各地分公司也要經(jīng)常去核對有沒(méi)有錯別字,平臺頁(yè)面有沒(méi)有模板,內容是否在頁(yè)面中正確的匹配內容。
  3、不同商品或者商品詳情中收納商品基本信息或者商品基本常識收納。
  4、顯示出商品動(dòng)態(tài)和統計分析多個(gè)商品或者商品詳情頁(yè)面中,列出每個(gè)商品或者商品列表中商品的動(dòng)態(tài)和統計分析。每個(gè)商品在消費者購買(mǎi)和退換貨等操作過(guò)程中動(dòng)態(tài)與統計信息。如果整站或者商品存在大量庫存,你就需要給整站或者所有的商品加載出庫存的信息統計,例如銷(xiāo)售數據和動(dòng)態(tài)等信息,千萬(wàn)不要把信息或者人員信息整個(gè)放在一個(gè)頁(yè)面中,更不要設置一個(gè)“顯示”或者“隱藏”按鈕。
  5、商品詳情應該有天貓、京東等大型網(wǎng)站的圖片,能夠給消費者一個(gè)整體感, 查看全部

  網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!
  網(wǎng)站內容管理系統后臺設計規范
  1、商城首頁(yè)請分清重要性小清新的花哨網(wǎng)站不適合網(wǎng)站定位高端,需要品牌影響力和專(zhuān)業(yè)性,不適合大規模商城出現。比如某天貓,某京東,這樣商城在小清新花哨頁(yè)面可以,但重要不能出現。畢竟商城肯定以收入為主要目的。
  2、商城內容定位要清晰內容屬性聚合優(yōu)化是在不同類(lèi)型的內容中盡可能使用相同或相似的命名方式,以此方便查找和傳達信息。
  3、圖文并茂網(wǎng)站的內容在設計上一定要更注重圖文并茂這一塊,如果不注重圖文內容,圖片設計也要化繁為簡(jiǎn),在方便用戶(hù)的同時(shí)也符合網(wǎng)站定位。
  
  4、注重轉化和留存那么怎么才能讓頁(yè)面更抓住用戶(hù)的眼球,在提高網(wǎng)站點(diǎn)擊率的同時(shí)提高用戶(hù)留存率。那么就應該在視覺(jué)和內容上出其不意,讓用戶(hù)在嘗試進(jìn)入的過(guò)程中完成留存和轉化。
  5、善用底部導航二級導航和三級導航是目前常見(jiàn)的,如果二級導航能更好的引導用戶(hù)去購買(mǎi),那么產(chǎn)品導購就應該成為重點(diǎn)。二級導航的設計:網(wǎng)站除了底部導航外,在網(wǎng)站的操作區域也能注意二級導航的設計,比如在設置好商品詳情信息,用戶(hù)有針對性的在該頁(yè)面進(jìn)行詳細搜索操作。
  6、靈活收集整理網(wǎng)站下面會(huì )有一些商品和常用功能,比如優(yōu)惠券,或者其他內容。當這些網(wǎng)站都設計完畢,想要對網(wǎng)站有一個(gè)全面性的了解,去找已經(jīng)設計好的網(wǎng)站,定位用戶(hù)在哪些功能區域中使用哪些功能,然后根據功能維度再去設計網(wǎng)站的下一步,這樣網(wǎng)站就能夠更加完善。
  內容管理系統后臺設計規范
  
  1、應該分類(lèi)整理應該在軟件定位使用的目標用戶(hù)人群中,按照分類(lèi)標準來(lái)設計后臺,比如男女,年齡段,月收入。不同的用戶(hù)人群可以根據自己的應用需求,特點(diǎn)設計不同的標準。
  2、內容基本完善很多規范不但要跟使用的人員交流,也要跟開(kāi)發(fā)制作相互溝通,才能夠制定出更加合理的規范。如果是一個(gè)企業(yè)站或者各地分公司也要經(jīng)常去核對有沒(méi)有錯別字,平臺頁(yè)面有沒(méi)有模板,內容是否在頁(yè)面中正確的匹配內容。
  3、不同商品或者商品詳情中收納商品基本信息或者商品基本常識收納。
  4、顯示出商品動(dòng)態(tài)和統計分析多個(gè)商品或者商品詳情頁(yè)面中,列出每個(gè)商品或者商品列表中商品的動(dòng)態(tài)和統計分析。每個(gè)商品在消費者購買(mǎi)和退換貨等操作過(guò)程中動(dòng)態(tài)與統計信息。如果整站或者商品存在大量庫存,你就需要給整站或者所有的商品加載出庫存的信息統計,例如銷(xiāo)售數據和動(dòng)態(tài)等信息,千萬(wàn)不要把信息或者人員信息整個(gè)放在一個(gè)頁(yè)面中,更不要設置一個(gè)“顯示”或者“隱藏”按鈕。
  5、商品詳情應該有天貓、京東等大型網(wǎng)站的圖片,能夠給消費者一個(gè)整體感,

網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 108 次瀏覽 ? 2022-07-26 14:03 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口
  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口在系統上線(xiàn)之前設計好ppt上線(xiàn)之后自動(dòng)刷新頁(yè)面(ajax下),增加用戶(hù)體驗,維護的壓力就小很多;后臺的數據存儲數據量不是問(wèn)題;網(wǎng)站內容管理系統在網(wǎng)站上線(xiàn)后,除了1.2、1.3等針對特定內容使用了seo優(yōu)化外,沒(méi)有用第三方內容管理系統。因為自建內容管理系統成本不算低。
  
  google把特定內容投放到站點(diǎn),sem+ppc+googleadsense費用在5.5萬(wàn)一年,對于小網(wǎng)站來(lái)說(shuō),根本不劃算。buybg選擇通過(guò)刷新頁(yè)面拉新,先刷新自建站點(diǎn),使用原有資源支撐facebook,instagram等。沒(méi)有用第三方內容管理系統,我們認為技術(shù)是問(wèn)題,不是價(jià)格的問(wèn)題,而是對產(chǎn)品本身的認知不夠。
  經(jīng)過(guò)細細研究,還是要回歸到網(wǎng)站內容管理系統上,才是保障用戶(hù)體驗最本質(zhì)的事情。網(wǎng)站內容管理系統為什么會(huì )經(jīng)常搞得人煩死人:一般我們的網(wǎng)站內容管理系統都是基于xml格式,通過(guò)js來(lái)控制各個(gè)元素通過(guò)js來(lái)控制ajax文件通過(guò)js來(lái)控制網(wǎng)站各個(gè)內容互動(dòng)服務(wù)器維護管理邏輯給后端提供的配置sdk,集中管理程序升級(維護產(chǎn)品)各個(gè)站點(diǎn)對產(chǎn)品的操作邏輯,不給后端內容刷新緩存區域,增加大量的工作量不能實(shí)現2個(gè)網(wǎng)站互通我們使用了國內第一款阿里云的云集內容管理系統,讓任何網(wǎng)站可以同時(shí)存在于阿里云、騰訊云、facebook等等,相互無(wú)縫對接。
  
  這樣既方便進(jìn)行統一管理,又無(wú)需加班搶設備二是避免額外增加產(chǎn)品功能應用這里要提醒大家是,我們的產(chǎn)品一般不會(huì )賣(mài)全球,常常會(huì )控制在幾個(gè)國家。對一般中小企業(yè)來(lái)說(shuō),集中管理的資源太多、工作量太大對于一般中小企業(yè)來(lái)說(shuō),這樣做太開(kāi)放,隨便在任何一個(gè)國家,一個(gè)權限范圍都有控制,一個(gè)系統就要投入大量的運維人員隨便百度一下云集內容管理系統,都有大量的免費下載版本或者收費版本。
  由于我們經(jīng)常使用的是阿里云的產(chǎn)品,使用阿里云的便捷性是業(yè)內最高的。接下來(lái)一定要考慮清楚,每個(gè)公司給錢(qián)的項目點(diǎn)不一樣,能賺多少錢(qián),能不能接受這個(gè)投入產(chǎn)出比。內容管理系統解決方案阿里云產(chǎn)品大網(wǎng)站“云集”內容管理系統解決方案阿里云產(chǎn)品小網(wǎng)站“阿里云逸智”內容管理系統解決方案騰訊云產(chǎn)品阿里云產(chǎn)品騰訊云產(chǎn)品下載版本說(shuō)明(后面有阿里云產(chǎn)品網(wǎng)站內容管理系統下載,無(wú)需下載)從項目經(jīng)理的角度看產(chǎn)品是商品,各位運營(yíng)、ui、測試、qa、產(chǎn)品經(jīng)理來(lái)看產(chǎn)品是供應商,每個(gè)人看到的都是同一品類(lèi)的商品,而且可能需要分化,不能混淆。云集產(chǎn)品在本地運行的時(shí)候,本地也會(huì )具備大量這類(lèi)資源。阿里云逸智產(chǎn)品在對接騰訊云的時(shí)候,也是在阿里。 查看全部

  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口
  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口在系統上線(xiàn)之前設計好ppt上線(xiàn)之后自動(dòng)刷新頁(yè)面(ajax下),增加用戶(hù)體驗,維護的壓力就小很多;后臺的數據存儲數據量不是問(wèn)題;網(wǎng)站內容管理系統在網(wǎng)站上線(xiàn)后,除了1.2、1.3等針對特定內容使用了seo優(yōu)化外,沒(méi)有用第三方內容管理系統。因為自建內容管理系統成本不算低。
  
  google把特定內容投放到站點(diǎn),sem+ppc+googleadsense費用在5.5萬(wàn)一年,對于小網(wǎng)站來(lái)說(shuō),根本不劃算。buybg選擇通過(guò)刷新頁(yè)面拉新,先刷新自建站點(diǎn),使用原有資源支撐facebook,instagram等。沒(méi)有用第三方內容管理系統,我們認為技術(shù)是問(wèn)題,不是價(jià)格的問(wèn)題,而是對產(chǎn)品本身的認知不夠。
  經(jīng)過(guò)細細研究,還是要回歸到網(wǎng)站內容管理系統上,才是保障用戶(hù)體驗最本質(zhì)的事情。網(wǎng)站內容管理系統為什么會(huì )經(jīng)常搞得人煩死人:一般我們的網(wǎng)站內容管理系統都是基于xml格式,通過(guò)js來(lái)控制各個(gè)元素通過(guò)js來(lái)控制ajax文件通過(guò)js來(lái)控制網(wǎng)站各個(gè)內容互動(dòng)服務(wù)器維護管理邏輯給后端提供的配置sdk,集中管理程序升級(維護產(chǎn)品)各個(gè)站點(diǎn)對產(chǎn)品的操作邏輯,不給后端內容刷新緩存區域,增加大量的工作量不能實(shí)現2個(gè)網(wǎng)站互通我們使用了國內第一款阿里云的云集內容管理系統,讓任何網(wǎng)站可以同時(shí)存在于阿里云、騰訊云、facebook等等,相互無(wú)縫對接。
  
  這樣既方便進(jìn)行統一管理,又無(wú)需加班搶設備二是避免額外增加產(chǎn)品功能應用這里要提醒大家是,我們的產(chǎn)品一般不會(huì )賣(mài)全球,常常會(huì )控制在幾個(gè)國家。對一般中小企業(yè)來(lái)說(shuō),集中管理的資源太多、工作量太大對于一般中小企業(yè)來(lái)說(shuō),這樣做太開(kāi)放,隨便在任何一個(gè)國家,一個(gè)權限范圍都有控制,一個(gè)系統就要投入大量的運維人員隨便百度一下云集內容管理系統,都有大量的免費下載版本或者收費版本。
  由于我們經(jīng)常使用的是阿里云的產(chǎn)品,使用阿里云的便捷性是業(yè)內最高的。接下來(lái)一定要考慮清楚,每個(gè)公司給錢(qián)的項目點(diǎn)不一樣,能賺多少錢(qián),能不能接受這個(gè)投入產(chǎn)出比。內容管理系統解決方案阿里云產(chǎn)品大網(wǎng)站“云集”內容管理系統解決方案阿里云產(chǎn)品小網(wǎng)站“阿里云逸智”內容管理系統解決方案騰訊云產(chǎn)品阿里云產(chǎn)品騰訊云產(chǎn)品下載版本說(shuō)明(后面有阿里云產(chǎn)品網(wǎng)站內容管理系統下載,無(wú)需下載)從項目經(jīng)理的角度看產(chǎn)品是商品,各位運營(yíng)、ui、測試、qa、產(chǎn)品經(jīng)理來(lái)看產(chǎn)品是供應商,每個(gè)人看到的都是同一品類(lèi)的商品,而且可能需要分化,不能混淆。云集產(chǎn)品在本地運行的時(shí)候,本地也會(huì )具備大量這類(lèi)資源。阿里云逸智產(chǎn)品在對接騰訊云的時(shí)候,也是在阿里。

幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 107 次瀏覽 ? 2022-07-25 16:34 ? 來(lái)自相關(guān)話(huà)題

  幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能
  點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書(shū)訊
  Python 長(cháng)期穩居編程語(yǔ)言排行的前五,不僅已經(jīng)成為數據分析、人工智能領(lǐng)域必不可少的工具,還被越來(lái)越多地公司用于網(wǎng)站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的編程語(yǔ)言之一。
  目前,市場(chǎng)上的Python基礎書(shū)很多了,那你在學(xué)完P(guān)ython基礎書(shū)后有沒(méi)有興趣用Python的Web框架Django來(lái)進(jìn)行網(wǎng)站開(kāi)發(fā)呢?
  本文將介紹商城系統后臺的需求分析、架構設計及數據庫設計。
  商城系統后臺,使用Django框架自帶的Admin后臺管理系統來(lái)實(shí)現。
  在創(chuàng )建好模型后,幾乎不寫(xiě)一行代碼即可快速開(kāi)發(fā)出商城系統的后臺功能。
  1
  商城系統后臺的設計分析
  商城系統后臺的設計分析,主要包含需求分析、架構設計和數據庫模型設計。
  1.需求分析
  商城系統后臺的功能如下圖所示。
  2.架構設計
  為實(shí)現商城系統后臺,采用Django框架作為服務(wù)器端的基礎框架,采用“HTML + CSS + JavaScript”搭建前端,數據庫采用MySQL,如下圖所示。
  3.數據庫模型設計
  準確了解用戶(hù)需求是整個(gè)系統設計的基礎,也是最困難、最耗費時(shí)間的一步。在了解清楚需求后,開(kāi)始進(jìn)行數據庫模型設計。模型設計分為邏輯模型設計和物理模型設計。
  從邏輯模型到物理模型,是一個(gè)從抽象到具體、不斷細化完善的過(guò)程。一般使用PowerDesign或者PDMan進(jìn)行數據庫的模型設計。
 ?。?)生成物理模型
  在PDMan中可以新增模型,設計商品分類(lèi)表和商品表,如下圖所示。商品分類(lèi)表和商品表是“一對多”關(guān)系。
  在模型設計完成后,可以導出DDL腳本,然后在指定數據庫中生成數據表。
 ?。?)反向生成Django模型
  在完成數據庫的物理模型設計后,可以根據物理模型反向生成Django模型。
  在VS Code終端控制臺中輸入如下命令:
  python manage.py inspectdb #輸出數據庫中的所有表到控制臺中python manage.py inspectdb > models.py #輸出到models.py文件中
  當數據表中字段很多時(shí),反向生成模型可以提高模型的編寫(xiě)效率。
  
  2
  使用Django自帶的Admin后臺管理系統
  使用Django的Admin后臺管理系統,不寫(xiě)一行代碼即可完成數據的增加、刪除、修改和查詢(xún)。只要定義好模型,Django就能生成一個(gè)具備增加、刪除、修改和查詢(xún)功能的應用。這也是Django之所以非常流行的一個(gè)很大原因。如果對軟件界面效果要求不高,或者只是臨時(shí)做個(gè)界面錄入信息,則可以采用這種方式。
  Django自帶的Admin后臺管理系統可用于對網(wǎng)站中的各個(gè)模塊進(jìn)行管理,比如文字、圖片、文件等的增加、刪除、修改和查詢(xún)。
  1.創(chuàng )建商城系統后臺項目
  新建一個(gè)項目myshop-back,接下來(lái)的操作都在該項目中完成。在該項目下創(chuàng )建一個(gè)apps目錄,用來(lái)放置所有的商城應用。
 ?。?)輸入如下命令創(chuàng )建應用。
  python manage.py startapp basic #基礎應用python manage.py startapp goods #商品應用python manage.py startapp users #用戶(hù)應用python manage.py startapp order #訂單應用
  創(chuàng )建完成后,將這4個(gè)應用目錄放到apps目錄下,如下圖所示。
  打開(kāi)本書(shū)配套資源中的“settings.py”,在INSTALLED_APPS列表中增加商城系統后臺的相關(guān)應用,如以下代碼所示。
  INSTALLED_APPS = [ … 'apps.basic', #注意寫(xiě)法 'apps.goods', #注意寫(xiě)法 'apps.order', #注意寫(xiě)法 'apps.users', #注意寫(xiě)法 …]
 ?。?)創(chuàng )建商品分類(lèi)模型和商品模型。
  打開(kāi)本書(shū)配套資源中的“apps/goods/models.py”,新增模型類(lèi)GoodsCategory和Goods,如以下代碼所示。
  …class GoodsCategory(BaseModel): id = models.AutoField(primary_key=True) name=models.CharField(max_length=50,verbose_name='分類(lèi)名稱(chēng)',default='') parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父類(lèi)",on_delete=models.DO_NOTHING,related_name="sub_cat") logo=models.ImageField(verbose_name="分類(lèi)logo圖片",upload_to= "uploads/goods_img/") is_nav=models.BooleanField(default=False,verbose_name='是否顯示在導航欄') sort=models.IntegerField(verbose_name='排序')<br /><br /> …<br /><br />class Goods(models.Model): STATUS=( (0,'正常'), (1,'下架'), ) name = models.CharField(max_length=50,verbose_name='商品名稱(chēng)', default='') category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分類(lèi)',on_delete=models.DO_NOTHING) market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市場(chǎng)價(jià)格') price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='實(shí)際價(jià)格') … status=models.IntegerField(default=0,choices=STATUS) …
  限于篇幅,其他模型不一一列出,讀者可以查閱本書(shū)配套資源中的代碼。接下來(lái)繼續配置Admin后臺管理系統。
  2.登錄Admin后臺管理系統
  在登錄Admin后臺管理系統前,需要創(chuàng )建一個(gè)管理員用戶(hù)。在VS Code終端界面輸入如下命令,之后根據命令提示輸入用戶(hù)名和密碼即可完成用戶(hù)的注冊。郵箱可以不用輸入。
  python manage.py createsuperuser
  接下來(lái)就可以登錄Admin后臺管理系統了。訪(fǎng)問(wèn)Admin后臺管理系統“:8000/admin/”,使用剛才創(chuàng )建的管理員用戶(hù)名和密碼進(jìn)行登錄,登錄后的界面如下圖所示。
  3.配置Admin后臺管理系統
  默認用戶(hù)模型和組模型會(huì )在A(yíng)dmin后臺管理系統中顯示出來(lái),其他的模型還需要在每個(gè)應用中設置相應的文件才能正常顯示。
 ?。?)設置apps.py文件
  打開(kāi)本書(shū)配套資源中的“goods/apps.py”,在其中添加如下代碼。
  from django.apps import AppConfigclass GoodsConfig(AppConfig): name = 'apps.goods' verbose_name="商品管理"
  這樣,“商品管理”會(huì )顯示在A(yíng)dmin后臺管理系統中的左側菜單導航中。
 ?。?)設置__init__.py文件
  
  打開(kāi)本書(shū)配套資源中的“goods/__init__.py”,在其中添加如下代碼。
  from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'
  __init__.py是應用的初始化文件。在該文件中設置default_app_config變量,用來(lái)指向apps.py文件中定義的AppConfig類(lèi)。
 ?。?)設置admin.py文件
  打開(kāi)本書(shū)配套資源中的“goods/admin.py”,在其中添加如下代碼。
  from django.contrib import adminfrom apps.goods.models import *@admin.register(GoodsCategory)class GoodsCategoryAdmin(admin.ModelAdmin): admin.site.site_title="我的特產(chǎn)商城后臺" admin.site.site_header="我的特產(chǎn)商城后臺" admin.site.index_title="商城平臺管理" #設置列表中顯示的字段 list_display=['name','logo','sort','create_time'] #搜索 search_fields=['name','parent_id'] #過(guò)濾 list_filter=['name','parent_id'] #設置日期選擇器 date_hierarchy='create_time' #設置每頁(yè)現實(shí)的數據量 list_per_page=10 #設置排序 ordering=['sort']@admin.register(Slide)class SlideAdmin(admin.ModelAdmin): #設置列表中顯示的字段 list_display=['goods_id','sort','images']
  上述代碼的實(shí)現過(guò)程如下。
 ?。?)自定義一個(gè)繼承自ModelAdmin的類(lèi)。該類(lèi)用來(lái)在A(yíng)dmin后臺管理系統中顯示模型。
 ?。?)使用裝飾器將模型類(lèi)Goods和GoodsAdmin關(guān)聯(lián)起來(lái),并注冊到Admin后臺管理系統中。
  admin.py用于將項目應用定義的模型獨享注冊,并綁定到Admin后臺管理系統中。注冊后,Admin后臺管理系統自動(dòng)擁有了該模型對應數據表的增加、刪除、修改和查詢(xún)功能。
  刷新Admin后臺管理系統界面,如下圖所示??梢钥吹皆谧髠鹊牟藛巍吧唐饭芾怼毕鲁霈F了商品信息、商品分類(lèi)和首頁(yè)輪播等二級菜單。
  單擊左側菜單中的“商品分類(lèi)”鏈接,右側會(huì )顯示商品分類(lèi)列表數據。商品分類(lèi)列表數據按照在代碼中定義的規則進(jìn)行顯示,如下圖所示。
  此外,還可以對商品分類(lèi)表和商品表進(jìn)行數據維護,如下三圖所示。
  感興趣的讀者可以動(dòng)手試試Django的Admin后臺管理系統中的其他功能。
  本文摘自《Django + Vue.js實(shí)戰派――Python Web開(kāi)發(fā)與運維》,更多精彩內容歡迎閱讀本書(shū)!
  限時(shí)五折
  掃碼查看本書(shū)詳情
  如果喜歡本文歡迎?在看丨留言丨分享至朋友圈?三連<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;clear: both;min-height: 1em;vertical-align: inherit;color: #ffffff;font-size: 14px;letter-spacing: 1px;">?熱文推薦??
  <br />
  一文理解分布式開(kāi)發(fā)中的服務(wù)治理<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  特斯拉為何使用.NET Core技術(shù)框架?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  后深度學(xué)習時(shí)代,推薦系統向何處去?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  全流程指導,從0開(kāi)始打造自己的API網(wǎng)關(guān)
  <br />
  <br /></p> 查看全部

  幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能
  點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書(shū)訊
  Python 長(cháng)期穩居編程語(yǔ)言排行的前五,不僅已經(jīng)成為數據分析、人工智能領(lǐng)域必不可少的工具,還被越來(lái)越多地公司用于網(wǎng)站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的編程語(yǔ)言之一。
  目前,市場(chǎng)上的Python基礎書(shū)很多了,那你在學(xué)完P(guān)ython基礎書(shū)后有沒(méi)有興趣用Python的Web框架Django來(lái)進(jìn)行網(wǎng)站開(kāi)發(fā)呢?
  本文將介紹商城系統后臺的需求分析、架構設計及數據庫設計。
  商城系統后臺,使用Django框架自帶的Admin后臺管理系統來(lái)實(shí)現。
  在創(chuàng )建好模型后,幾乎不寫(xiě)一行代碼即可快速開(kāi)發(fā)出商城系統的后臺功能。
  1
  商城系統后臺的設計分析
  商城系統后臺的設計分析,主要包含需求分析、架構設計和數據庫模型設計。
  1.需求分析
  商城系統后臺的功能如下圖所示。
  2.架構設計
  為實(shí)現商城系統后臺,采用Django框架作為服務(wù)器端的基礎框架,采用“HTML + CSS + JavaScript”搭建前端,數據庫采用MySQL,如下圖所示。
  3.數據庫模型設計
  準確了解用戶(hù)需求是整個(gè)系統設計的基礎,也是最困難、最耗費時(shí)間的一步。在了解清楚需求后,開(kāi)始進(jìn)行數據庫模型設計。模型設計分為邏輯模型設計和物理模型設計。
  從邏輯模型到物理模型,是一個(gè)從抽象到具體、不斷細化完善的過(guò)程。一般使用PowerDesign或者PDMan進(jìn)行數據庫的模型設計。
 ?。?)生成物理模型
  在PDMan中可以新增模型,設計商品分類(lèi)表和商品表,如下圖所示。商品分類(lèi)表和商品表是“一對多”關(guān)系。
  在模型設計完成后,可以導出DDL腳本,然后在指定數據庫中生成數據表。
 ?。?)反向生成Django模型
  在完成數據庫的物理模型設計后,可以根據物理模型反向生成Django模型。
  在VS Code終端控制臺中輸入如下命令:
  python manage.py inspectdb #輸出數據庫中的所有表到控制臺中python manage.py inspectdb > models.py #輸出到models.py文件中
  當數據表中字段很多時(shí),反向生成模型可以提高模型的編寫(xiě)效率。
  
  2
  使用Django自帶的Admin后臺管理系統
  使用Django的Admin后臺管理系統,不寫(xiě)一行代碼即可完成數據的增加、刪除、修改和查詢(xún)。只要定義好模型,Django就能生成一個(gè)具備增加、刪除、修改和查詢(xún)功能的應用。這也是Django之所以非常流行的一個(gè)很大原因。如果對軟件界面效果要求不高,或者只是臨時(shí)做個(gè)界面錄入信息,則可以采用這種方式。
  Django自帶的Admin后臺管理系統可用于對網(wǎng)站中的各個(gè)模塊進(jìn)行管理,比如文字、圖片、文件等的增加、刪除、修改和查詢(xún)。
  1.創(chuàng )建商城系統后臺項目
  新建一個(gè)項目myshop-back,接下來(lái)的操作都在該項目中完成。在該項目下創(chuàng )建一個(gè)apps目錄,用來(lái)放置所有的商城應用。
 ?。?)輸入如下命令創(chuàng )建應用。
  python manage.py startapp basic #基礎應用python manage.py startapp goods #商品應用python manage.py startapp users #用戶(hù)應用python manage.py startapp order #訂單應用
  創(chuàng )建完成后,將這4個(gè)應用目錄放到apps目錄下,如下圖所示。
  打開(kāi)本書(shū)配套資源中的“settings.py”,在INSTALLED_APPS列表中增加商城系統后臺的相關(guān)應用,如以下代碼所示。
  INSTALLED_APPS = [ … 'apps.basic', #注意寫(xiě)法 'apps.goods', #注意寫(xiě)法 'apps.order', #注意寫(xiě)法 'apps.users', #注意寫(xiě)法 …]
 ?。?)創(chuàng )建商品分類(lèi)模型和商品模型。
  打開(kāi)本書(shū)配套資源中的“apps/goods/models.py”,新增模型類(lèi)GoodsCategory和Goods,如以下代碼所示。
  …class GoodsCategory(BaseModel): id = models.AutoField(primary_key=True) name=models.CharField(max_length=50,verbose_name='分類(lèi)名稱(chēng)',default='') parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父類(lèi)",on_delete=models.DO_NOTHING,related_name="sub_cat") logo=models.ImageField(verbose_name="分類(lèi)logo圖片",upload_to= "uploads/goods_img/") is_nav=models.BooleanField(default=False,verbose_name='是否顯示在導航欄') sort=models.IntegerField(verbose_name='排序')<br /><br /> …<br /><br />class Goods(models.Model): STATUS=( (0,'正常'), (1,'下架'), ) name = models.CharField(max_length=50,verbose_name='商品名稱(chēng)', default='') category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分類(lèi)',on_delete=models.DO_NOTHING) market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市場(chǎng)價(jià)格') price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='實(shí)際價(jià)格') … status=models.IntegerField(default=0,choices=STATUS) …
  限于篇幅,其他模型不一一列出,讀者可以查閱本書(shū)配套資源中的代碼。接下來(lái)繼續配置Admin后臺管理系統。
  2.登錄Admin后臺管理系統
  在登錄Admin后臺管理系統前,需要創(chuàng )建一個(gè)管理員用戶(hù)。在VS Code終端界面輸入如下命令,之后根據命令提示輸入用戶(hù)名和密碼即可完成用戶(hù)的注冊。郵箱可以不用輸入。
  python manage.py createsuperuser
  接下來(lái)就可以登錄Admin后臺管理系統了。訪(fǎng)問(wèn)Admin后臺管理系統“:8000/admin/”,使用剛才創(chuàng )建的管理員用戶(hù)名和密碼進(jìn)行登錄,登錄后的界面如下圖所示。
  3.配置Admin后臺管理系統
  默認用戶(hù)模型和組模型會(huì )在A(yíng)dmin后臺管理系統中顯示出來(lái),其他的模型還需要在每個(gè)應用中設置相應的文件才能正常顯示。
 ?。?)設置apps.py文件
  打開(kāi)本書(shū)配套資源中的“goods/apps.py”,在其中添加如下代碼。
  from django.apps import AppConfigclass GoodsConfig(AppConfig): name = 'apps.goods' verbose_name="商品管理"
  這樣,“商品管理”會(huì )顯示在A(yíng)dmin后臺管理系統中的左側菜單導航中。
 ?。?)設置__init__.py文件
  
  打開(kāi)本書(shū)配套資源中的“goods/__init__.py”,在其中添加如下代碼。
  from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'
  __init__.py是應用的初始化文件。在該文件中設置default_app_config變量,用來(lái)指向apps.py文件中定義的AppConfig類(lèi)。
 ?。?)設置admin.py文件
  打開(kāi)本書(shū)配套資源中的“goods/admin.py”,在其中添加如下代碼。
  from django.contrib import adminfrom apps.goods.models import *@admin.register(GoodsCategory)class GoodsCategoryAdmin(admin.ModelAdmin): admin.site.site_title="我的特產(chǎn)商城后臺" admin.site.site_header="我的特產(chǎn)商城后臺" admin.site.index_title="商城平臺管理" #設置列表中顯示的字段 list_display=['name','logo','sort','create_time'] #搜索 search_fields=['name','parent_id'] #過(guò)濾 list_filter=['name','parent_id'] #設置日期選擇器 date_hierarchy='create_time' #設置每頁(yè)現實(shí)的數據量 list_per_page=10 #設置排序 ordering=['sort']@admin.register(Slide)class SlideAdmin(admin.ModelAdmin): #設置列表中顯示的字段 list_display=['goods_id','sort','images']
  上述代碼的實(shí)現過(guò)程如下。
 ?。?)自定義一個(gè)繼承自ModelAdmin的類(lèi)。該類(lèi)用來(lái)在A(yíng)dmin后臺管理系統中顯示模型。
 ?。?)使用裝飾器將模型類(lèi)Goods和GoodsAdmin關(guān)聯(lián)起來(lái),并注冊到Admin后臺管理系統中。
  admin.py用于將項目應用定義的模型獨享注冊,并綁定到Admin后臺管理系統中。注冊后,Admin后臺管理系統自動(dòng)擁有了該模型對應數據表的增加、刪除、修改和查詢(xún)功能。
  刷新Admin后臺管理系統界面,如下圖所示??梢钥吹皆谧髠鹊牟藛巍吧唐饭芾怼毕鲁霈F了商品信息、商品分類(lèi)和首頁(yè)輪播等二級菜單。
  單擊左側菜單中的“商品分類(lèi)”鏈接,右側會(huì )顯示商品分類(lèi)列表數據。商品分類(lèi)列表數據按照在代碼中定義的規則進(jìn)行顯示,如下圖所示。
  此外,還可以對商品分類(lèi)表和商品表進(jìn)行數據維護,如下三圖所示。
  感興趣的讀者可以動(dòng)手試試Django的Admin后臺管理系統中的其他功能。
  本文摘自《Django + Vue.js實(shí)戰派――Python Web開(kāi)發(fā)與運維》,更多精彩內容歡迎閱讀本書(shū)!
  限時(shí)五折
  掃碼查看本書(shū)詳情
  如果喜歡本文歡迎?在看留言分享至朋友圈?三連<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;clear: both;min-height: 1em;vertical-align: inherit;color: #ffffff;font-size: 14px;letter-spacing: 1px;">?熱文推薦??
  <br />
  一文理解分布式開(kāi)發(fā)中的服務(wù)治理<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  特斯拉為何使用.NET Core技術(shù)框架?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  后深度學(xué)習時(shí)代,推薦系統向何處去?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  全流程指導,從0開(kāi)始打造自己的API網(wǎng)關(guān)
  <br />
  <br /></p>

設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 89 次瀏覽 ? 2022-07-22 01:44 ? 來(lái)自相關(guān)話(huà)題

  設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用
  隨著(zhù)B端體驗設計的發(fā)展,表單類(lèi)頁(yè)面已經(jīng)形成了一定的設計模式,例如登錄頁(yè)面,場(chǎng)景比較明確、業(yè)務(wù)流程和設計模式都比較成熟了。
  業(yè)務(wù)型表單設計與業(yè)務(wù)強相關(guān)。既需要考慮交互帶來(lái)的用戶(hù)體驗,又要從業(yè)務(wù)角度出發(fā)滿(mǎn)足用戶(hù)的行為需求,相對比較復雜。不過(guò)也形成了一些固定的設計方法。今天我們先來(lái)看看「精簡(jiǎn)」策略。
  本文主要內容:
  表單是系統與用戶(hù)進(jìn)行溝通的語(yǔ)言,它應當符合雙方的認知邏輯。因此表單設計時(shí),需要解決「產(chǎn)品」和「用戶(hù)」2個(gè)方面的問(wèn)題:尤其是面對復雜表單,需要從這兩方面尋找到突破口。復雜表單通常包含多種業(yè)務(wù)場(chǎng)景,并且與其他業(yè)務(wù)存在關(guān)聯(lián)和嵌套,導致表單內容信息量較大。我們需要通過(guò)「刪除」、「組織」、「隱藏」、「轉移」4個(gè)交互設計原則,讓表單頁(yè)面更加簡(jiǎn)單、有效。
  ▎01刪除,實(shí)現表單輕量化前幾年,我們在銀行或者移動(dòng)營(yíng)業(yè)廳開(kāi)通一些新業(yè)務(wù)時(shí),都會(huì )填寫(xiě)表單,通常是密密麻麻一堆信息。但是實(shí)際需要填寫(xiě)的內容可能只有2~3項,業(yè)務(wù)人員會(huì )特意勾選出來(lái)給客戶(hù),其余的都是非必填項,或者是業(yè)務(wù)人員填寫(xiě)的。線(xiàn)上表單設計時(shí),沒(méi)有專(zhuān)門(mén)的業(yè)務(wù)人員指導,用戶(hù)更容易迷失。所以設計師或者產(chǎn)品經(jīng)理的首要任務(wù)就是盡可能地減少表單信息量,降低用戶(hù)的認知負荷。最近在做一個(gè)表單的優(yōu)化,業(yè)務(wù)方要求增加“入參”、“出參”兩個(gè)表格項,說(shuō)是用戶(hù)會(huì )看。與用戶(hù)溝通后,反饋也說(shuō)“會(huì )看一下”。但是在深度挖掘用戶(hù)場(chǎng)景后,發(fā)現用戶(hù)確實(shí)會(huì )查看這個(gè)信息,只不過(guò)不是在當前環(huán)節查看,而是在結果項中查看。所以我們最終去掉了這兩個(gè)信息量較大的表格內容,從而讓整個(gè)表單的信息量得到了明顯的下降。因此面對復雜長(cháng)表單,我們需要從需求入手,判斷是否有必要讓用戶(hù)提供如此多的復雜信息。
  ▎02組織,讓表單更加有層次當我們不得不面對復雜表單時(shí),如果采用簡(jiǎn)單內容平鋪,用戶(hù)看到的是滿(mǎn)屏的散點(diǎn)信息,造成信息識別困難,用戶(hù)一時(shí)間難以找到填寫(xiě)思路,反而增加用戶(hù)的心理負擔。因此信息的層次性,對于復雜表單至關(guān)重要。首先要從內容和視覺(jué)層面讓復雜信息變得清晰、規整,更加符合用戶(hù)的認知習慣。例如,可以利用分組標題、分割線(xiàn)、卡片,按照不同信息的類(lèi)別、屬性和相關(guān)性進(jìn)行區塊劃分。根據不同的布局和交互,主要有以下4種表單設計模式。
  1、順序表單表單分組后,可以按照業(yè)務(wù)邏輯順序鋪開(kāi)展示。用戶(hù)只要按順序填寫(xiě)就可以了。但是對于超長(cháng)表單,這種布局方式下,用戶(hù)無(wú)法全覽頁(yè)面信息。頁(yè)面上下滾動(dòng)、定位查找帶來(lái)的交互成本比較高。1)平鋪表單
  2)卡片表單
  
  因此順序表單更多地用在業(yè)務(wù)信息比較簡(jiǎn)單的場(chǎng)景中。2、錨點(diǎn)表單為了解決長(cháng)表單的定位效率問(wèn)題,可以在順序表單的基礎上增加錨點(diǎn)。另外錨點(diǎn)還可以幫助用戶(hù)快速了解表單所包含的內容模塊。
  根據錨點(diǎn)的布局,可以分為橫向錨點(diǎn)和縱向錨點(diǎn)兩類(lèi)。錨點(diǎn)需要吸頂方便用戶(hù)操作。本質(zhì)上來(lái)說(shuō),錨點(diǎn)表單是順序表單的優(yōu)化版本。
  3、標簽表單如果長(cháng)表單內容沒(méi)有依賴(lài)關(guān)系,還可以將表單拆分為幾個(gè)相互獨立的標簽內容,這就是標簽表單。
  不過(guò)標簽表單更強調內容的并列關(guān)系,常用于配置表單中,例如 MAC 或者 Windows 系統的配置彈窗。
  標簽表單在全新表單中應用較少。因為標簽表單容易造成內容遺漏,并且無(wú)法告知用戶(hù)哪些標簽已經(jīng)填寫(xiě),哪些標簽未填寫(xiě),或者無(wú)法清晰地展示校驗信息。來(lái)回切換標簽查看信息,也會(huì )影響效率,因此主要用于用戶(hù)有目的的配置行為中。4、步驟表單
  步驟表單是一種常見(jiàn)的表單拆分方式。通過(guò)節點(diǎn)將子表單串聯(lián)起來(lái),形成一個(gè)完整的業(yè)務(wù)閉環(huán)。例如阿里云的云服務(wù)器訂單流程,或者一些開(kāi)戶(hù)流程等。
  
  步驟表單有幾個(gè)特點(diǎn):1)過(guò)程串聯(lián)理論上來(lái)說(shuō),步驟表單有明顯的操作順序,用戶(hù)需要按照節點(diǎn)完成內容填寫(xiě),因此不會(huì )產(chǎn)生信息遺漏。當然也可以根據實(shí)際的業(yè)務(wù)場(chǎng)景,設置選填節點(diǎn)。但是總得來(lái)說(shuō),步驟表單更強調的是順序操作。2)業(yè)務(wù)引導性
  對于復雜業(yè)務(wù),步驟表單可以將分散在不同頁(yè)面中的獨立業(yè)務(wù)串聯(lián)起來(lái),在一定程度上具備新人教學(xué)功能,幫助用戶(hù)了解業(yè)務(wù)邏輯。減少用戶(hù)自定義操作時(shí)在不同頁(yè)面的跳轉,從而提供新人用戶(hù)的操作效率。例如系統配置向導類(lèi)的步驟表單。
  3)逆向操作
  由于步驟表單存在正向和逆向操作,因此設計時(shí)還需要考慮清楚逆向操作的設計邏輯。例如:4)節點(diǎn)的平衡性步驟表單可以分拆信息,化整為零。但是信息節點(diǎn)也不能過(guò)多,否則同樣會(huì )影響用戶(hù)的操作效率。所以要減少不必要的流程節點(diǎn)。最近在做設計時(shí),發(fā)現步驟表單最后一步是內容預覽。通過(guò)用戶(hù)調研發(fā)現,部分用戶(hù)會(huì )謹慎地預覽前面4步填寫(xiě)的內容。而另一部分用戶(hù)則認為,剛填寫(xiě)了內容不需要預覽,強制預覽的設計并不友好。該如何平衡設計呢?最終我們選擇了將預覽節點(diǎn)取消,將預覽功能調整到第4步,采用「預覽」按鈕的形式。既滿(mǎn)足了部分用戶(hù)預覽的需要,另一部分用戶(hù)也可以不做預覽,直接提交申請。所以步驟表單過(guò)程中的節點(diǎn)具有一定的強制性,需要謹慎對待,保證節點(diǎn)的合理有效。
  ▎03隱藏,讓表單更加靈活1、模塊隱藏表單實(shí)際上是任務(wù)信息的集合,為了具有更高的適配性,內容通常是多種場(chǎng)景的集合。而場(chǎng)景有高頻、低頻區分,對于高頻信息需要優(yōu)先展示,便于提高用戶(hù)的填寫(xiě)效率;對于低頻場(chǎng)景,可以隱藏弱化展示,從而降低整個(gè)表單的復雜度。例如我們常見(jiàn)的「高級配置」,通常在表單的底部默認收起展示。
  2、信息隱藏復雜表單中信息會(huì )出現多級信息共存的場(chǎng)景。這種場(chǎng)景下,復雜表單默認展示當前選項對應的子內容,隱藏其他選項的內容,從而提高信息的指向性。
  3、合理的組件形式比較典型的就是單選和下拉選擇器如何選擇。有人為了強調效率,一味地追求單選按鈕平鋪展示,認為單選更加直觀(guān),用戶(hù)不需要點(diǎn)擊下拉滾動(dòng)查看備選項。但是用戶(hù)同樣需要逐個(gè)瀏覽選擇,反而增加了整個(gè)頁(yè)面的信息量。所以單選框更多用在備選項較少的場(chǎng)景,如果備選項較多,建議優(yōu)先采用下拉選擇器,隱藏備選項。▎04轉移,擴展表單的異步空間1、信息轉移在表單設計時(shí),可以將部分二級信息轉移到彈窗、抽屜中,利用浮層空間拓展業(yè)務(wù)內容,根據用戶(hù)操作逐級加載出來(lái)。從而減少表單的信息量。例如下圖中,沒(méi)有將「所有配送區域及運費」直接展示出來(lái)供用戶(hù)選擇,而是放在了彈窗中,表單中只呈現最后的選擇結果。既簡(jiǎn)化了表單的內容,又讓選擇結果更加突出,方便用戶(hù)的查看和校驗。
  2、記憶轉移
  現在很多瀏覽器都增加了密碼存儲功能,減少用戶(hù)記憶成本。而在電商購物網(wǎng)站可以設定默認的收貨地址。系統自動(dòng)讀取調用,從而減少用戶(hù)的輸入操作。3、行為轉移現在越來(lái)越多的網(wǎng)站支持「手機短信驗證碼」免密注冊登錄方式,或者第三方登錄方式,或者手機端掃碼登錄。將原有的表單填寫(xiě)轉變?yōu)橄到y行為,從而降低用戶(hù)的行為成本。 查看全部

  設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用
  隨著(zhù)B端體驗設計的發(fā)展,表單類(lèi)頁(yè)面已經(jīng)形成了一定的設計模式,例如登錄頁(yè)面,場(chǎng)景比較明確、業(yè)務(wù)流程和設計模式都比較成熟了。
  業(yè)務(wù)型表單設計與業(yè)務(wù)強相關(guān)。既需要考慮交互帶來(lái)的用戶(hù)體驗,又要從業(yè)務(wù)角度出發(fā)滿(mǎn)足用戶(hù)的行為需求,相對比較復雜。不過(guò)也形成了一些固定的設計方法。今天我們先來(lái)看看「精簡(jiǎn)」策略。
  本文主要內容:
  表單是系統與用戶(hù)進(jìn)行溝通的語(yǔ)言,它應當符合雙方的認知邏輯。因此表單設計時(shí),需要解決「產(chǎn)品」和「用戶(hù)」2個(gè)方面的問(wèn)題:尤其是面對復雜表單,需要從這兩方面尋找到突破口。復雜表單通常包含多種業(yè)務(wù)場(chǎng)景,并且與其他業(yè)務(wù)存在關(guān)聯(lián)和嵌套,導致表單內容信息量較大。我們需要通過(guò)「刪除」、「組織」、「隱藏」、「轉移」4個(gè)交互設計原則,讓表單頁(yè)面更加簡(jiǎn)單、有效。
  ▎01刪除,實(shí)現表單輕量化前幾年,我們在銀行或者移動(dòng)營(yíng)業(yè)廳開(kāi)通一些新業(yè)務(wù)時(shí),都會(huì )填寫(xiě)表單,通常是密密麻麻一堆信息。但是實(shí)際需要填寫(xiě)的內容可能只有2~3項,業(yè)務(wù)人員會(huì )特意勾選出來(lái)給客戶(hù),其余的都是非必填項,或者是業(yè)務(wù)人員填寫(xiě)的。線(xiàn)上表單設計時(shí),沒(méi)有專(zhuān)門(mén)的業(yè)務(wù)人員指導,用戶(hù)更容易迷失。所以設計師或者產(chǎn)品經(jīng)理的首要任務(wù)就是盡可能地減少表單信息量,降低用戶(hù)的認知負荷。最近在做一個(gè)表單的優(yōu)化,業(yè)務(wù)方要求增加“入參”、“出參”兩個(gè)表格項,說(shuō)是用戶(hù)會(huì )看。與用戶(hù)溝通后,反饋也說(shuō)“會(huì )看一下”。但是在深度挖掘用戶(hù)場(chǎng)景后,發(fā)現用戶(hù)確實(shí)會(huì )查看這個(gè)信息,只不過(guò)不是在當前環(huán)節查看,而是在結果項中查看。所以我們最終去掉了這兩個(gè)信息量較大的表格內容,從而讓整個(gè)表單的信息量得到了明顯的下降。因此面對復雜長(cháng)表單,我們需要從需求入手,判斷是否有必要讓用戶(hù)提供如此多的復雜信息。
  ▎02組織,讓表單更加有層次當我們不得不面對復雜表單時(shí),如果采用簡(jiǎn)單內容平鋪,用戶(hù)看到的是滿(mǎn)屏的散點(diǎn)信息,造成信息識別困難,用戶(hù)一時(shí)間難以找到填寫(xiě)思路,反而增加用戶(hù)的心理負擔。因此信息的層次性,對于復雜表單至關(guān)重要。首先要從內容和視覺(jué)層面讓復雜信息變得清晰、規整,更加符合用戶(hù)的認知習慣。例如,可以利用分組標題、分割線(xiàn)、卡片,按照不同信息的類(lèi)別、屬性和相關(guān)性進(jìn)行區塊劃分。根據不同的布局和交互,主要有以下4種表單設計模式。
  1、順序表單表單分組后,可以按照業(yè)務(wù)邏輯順序鋪開(kāi)展示。用戶(hù)只要按順序填寫(xiě)就可以了。但是對于超長(cháng)表單,這種布局方式下,用戶(hù)無(wú)法全覽頁(yè)面信息。頁(yè)面上下滾動(dòng)、定位查找帶來(lái)的交互成本比較高。1)平鋪表單
  2)卡片表單
  
  因此順序表單更多地用在業(yè)務(wù)信息比較簡(jiǎn)單的場(chǎng)景中。2、錨點(diǎn)表單為了解決長(cháng)表單的定位效率問(wèn)題,可以在順序表單的基礎上增加錨點(diǎn)。另外錨點(diǎn)還可以幫助用戶(hù)快速了解表單所包含的內容模塊。
  根據錨點(diǎn)的布局,可以分為橫向錨點(diǎn)和縱向錨點(diǎn)兩類(lèi)。錨點(diǎn)需要吸頂方便用戶(hù)操作。本質(zhì)上來(lái)說(shuō),錨點(diǎn)表單是順序表單的優(yōu)化版本。
  3、標簽表單如果長(cháng)表單內容沒(méi)有依賴(lài)關(guān)系,還可以將表單拆分為幾個(gè)相互獨立的標簽內容,這就是標簽表單。
  不過(guò)標簽表單更強調內容的并列關(guān)系,常用于配置表單中,例如 MAC 或者 Windows 系統的配置彈窗。
  標簽表單在全新表單中應用較少。因為標簽表單容易造成內容遺漏,并且無(wú)法告知用戶(hù)哪些標簽已經(jīng)填寫(xiě),哪些標簽未填寫(xiě),或者無(wú)法清晰地展示校驗信息。來(lái)回切換標簽查看信息,也會(huì )影響效率,因此主要用于用戶(hù)有目的的配置行為中。4、步驟表單
  步驟表單是一種常見(jiàn)的表單拆分方式。通過(guò)節點(diǎn)將子表單串聯(lián)起來(lái),形成一個(gè)完整的業(yè)務(wù)閉環(huán)。例如阿里云的云服務(wù)器訂單流程,或者一些開(kāi)戶(hù)流程等。
  
  步驟表單有幾個(gè)特點(diǎn):1)過(guò)程串聯(lián)理論上來(lái)說(shuō),步驟表單有明顯的操作順序,用戶(hù)需要按照節點(diǎn)完成內容填寫(xiě),因此不會(huì )產(chǎn)生信息遺漏。當然也可以根據實(shí)際的業(yè)務(wù)場(chǎng)景,設置選填節點(diǎn)。但是總得來(lái)說(shuō),步驟表單更強調的是順序操作。2)業(yè)務(wù)引導性
  對于復雜業(yè)務(wù),步驟表單可以將分散在不同頁(yè)面中的獨立業(yè)務(wù)串聯(lián)起來(lái),在一定程度上具備新人教學(xué)功能,幫助用戶(hù)了解業(yè)務(wù)邏輯。減少用戶(hù)自定義操作時(shí)在不同頁(yè)面的跳轉,從而提供新人用戶(hù)的操作效率。例如系統配置向導類(lèi)的步驟表單。
  3)逆向操作
  由于步驟表單存在正向和逆向操作,因此設計時(shí)還需要考慮清楚逆向操作的設計邏輯。例如:4)節點(diǎn)的平衡性步驟表單可以分拆信息,化整為零。但是信息節點(diǎn)也不能過(guò)多,否則同樣會(huì )影響用戶(hù)的操作效率。所以要減少不必要的流程節點(diǎn)。最近在做設計時(shí),發(fā)現步驟表單最后一步是內容預覽。通過(guò)用戶(hù)調研發(fā)現,部分用戶(hù)會(huì )謹慎地預覽前面4步填寫(xiě)的內容。而另一部分用戶(hù)則認為,剛填寫(xiě)了內容不需要預覽,強制預覽的設計并不友好。該如何平衡設計呢?最終我們選擇了將預覽節點(diǎn)取消,將預覽功能調整到第4步,采用「預覽」按鈕的形式。既滿(mǎn)足了部分用戶(hù)預覽的需要,另一部分用戶(hù)也可以不做預覽,直接提交申請。所以步驟表單過(guò)程中的節點(diǎn)具有一定的強制性,需要謹慎對待,保證節點(diǎn)的合理有效。
  ▎03隱藏,讓表單更加靈活1、模塊隱藏表單實(shí)際上是任務(wù)信息的集合,為了具有更高的適配性,內容通常是多種場(chǎng)景的集合。而場(chǎng)景有高頻、低頻區分,對于高頻信息需要優(yōu)先展示,便于提高用戶(hù)的填寫(xiě)效率;對于低頻場(chǎng)景,可以隱藏弱化展示,從而降低整個(gè)表單的復雜度。例如我們常見(jiàn)的「高級配置」,通常在表單的底部默認收起展示。
  2、信息隱藏復雜表單中信息會(huì )出現多級信息共存的場(chǎng)景。這種場(chǎng)景下,復雜表單默認展示當前選項對應的子內容,隱藏其他選項的內容,從而提高信息的指向性。
  3、合理的組件形式比較典型的就是單選和下拉選擇器如何選擇。有人為了強調效率,一味地追求單選按鈕平鋪展示,認為單選更加直觀(guān),用戶(hù)不需要點(diǎn)擊下拉滾動(dòng)查看備選項。但是用戶(hù)同樣需要逐個(gè)瀏覽選擇,反而增加了整個(gè)頁(yè)面的信息量。所以單選框更多用在備選項較少的場(chǎng)景,如果備選項較多,建議優(yōu)先采用下拉選擇器,隱藏備選項。▎04轉移,擴展表單的異步空間1、信息轉移在表單設計時(shí),可以將部分二級信息轉移到彈窗、抽屜中,利用浮層空間拓展業(yè)務(wù)內容,根據用戶(hù)操作逐級加載出來(lái)。從而減少表單的信息量。例如下圖中,沒(méi)有將「所有配送區域及運費」直接展示出來(lái)供用戶(hù)選擇,而是放在了彈窗中,表單中只呈現最后的選擇結果。既簡(jiǎn)化了表單的內容,又讓選擇結果更加突出,方便用戶(hù)的查看和校驗。
  2、記憶轉移
  現在很多瀏覽器都增加了密碼存儲功能,減少用戶(hù)記憶成本。而在電商購物網(wǎng)站可以設定默認的收貨地址。系統自動(dòng)讀取調用,從而減少用戶(hù)的輸入操作。3、行為轉移現在越來(lái)越多的網(wǎng)站支持「手機短信驗證碼」免密注冊登錄方式,或者第三方登錄方式,或者手機端掃碼登錄。將原有的表單填寫(xiě)轉變?yōu)橄到y行為,從而降低用戶(hù)的行為成本。

【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2022-07-21 14:42 ? 來(lái)自相關(guān)話(huà)題

  【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐
  前言
  本文來(lái)自。今日前端早讀課文章由哈啰出行@杜詩(shī)晨分享,公號:哈啰技術(shù)授權分享。
  @杜詩(shī)晨(vx: emododo),先后就職北京新浪,36氪,百度,有接近十年的前端開(kāi)發(fā)經(jīng)驗,現在是哈啰出行業(yè)財&清結算的前端負責人,也是杭州哈啰第一個(gè)入職的前端。
  正文從這開(kāi)始~~
  什么是低代碼搭建
  通過(guò)提供一種可視化的應用開(kāi)發(fā)環(huán)境,降低或去除對原生代碼編寫(xiě)的需求量快速構建應用程序。
  傳統開(kāi)發(fā)交付一個(gè)產(chǎn)品的流程,首先產(chǎn)品輸出 prd,然后設計 ui 設計進(jìn)行設計,設計完成給到前端,前端再去開(kāi)發(fā)。如果是個(gè)新項目可能還要這種配置各種復雜環(huán)境。同時(shí)后端也在開(kāi)發(fā),然后聯(lián)調、測試。其實(shí)現在大部分的公司都是這種開(kāi)發(fā)流程。那這種缺點(diǎn)就很明顯,涉及到的人非常多,開(kāi)發(fā)周期也變得非常長(cháng)。
  低代碼搭建是一個(gè)什么樣的流程?如果是一個(gè)成熟的配置搭建平臺,只需要提供一個(gè)配置平臺,開(kāi)發(fā)人員不論是剛畢業(yè)的大學(xué)生或者是前端小白,甚至可能是一個(gè)后端開(kāi)發(fā),都可以通過(guò)這個(gè)配置平臺搭建,快速生成網(wǎng)頁(yè)。
  關(guān)于低代碼的市場(chǎng)規模和衍生的歷史大家可以從下圖中了解一下,這里提供兩份報告作為延伸學(xué)習:海比研究報告 | 艾瑞咨詢(xún)
  概念衍生歷史
  低代碼這個(gè)概念其實(shí)很早就有了,80年代的時(shí)候提出了第四代編程語(yǔ)言,這個(gè)第四代是什么意思呢,第一代是機器語(yǔ)言,第二代匯編語(yǔ)言,第三代高級語(yǔ)言。前三代都是操作語(yǔ)言,需要編程指出怎么做,一步一步的寫(xiě)運行步驟,這樣是有學(xué)習成本的,并且項目開(kāi)發(fā)周期長(cháng),出于商業(yè)需要第四代語(yǔ)言被軟件廠(chǎng)商提出,在一定程度上只需要說(shuō)明做什么,有什么目的,不需要寫(xiě)出怎么做的過(guò)程。
  2000 年 vpl 被提出,可視化編程語(yǔ)言,意思就是用戶(hù)用過(guò)圖形化操作程序元素而不是通過(guò)文本制定來(lái)創(chuàng )建程序,基于流的概念比如虛幻引擎,還有一些運用在3D編程,音樂(lè )合成,信號處理,物聯(lián)網(wǎng)嵌入式等等領(lǐng)域。
  2014年知名咨詢(xún)公司提出了低代碼/零代碼的概念,在這之前國外有很多低代碼產(chǎn)品出現并且商業(yè)化
  2016年,國內相繼發(fā)布這些低代碼的平臺。國內知名的像阿里百度騰訊,他們都有這種搭建平臺。
  在今年(2021),整個(gè)中國市場(chǎng)已經(jīng)形成了完整的低代碼無(wú)代碼的生態(tài)體系。就比如說(shuō)像現在這種 aPass 平臺或者是 Sass 平臺之類(lèi)的,平臺會(huì )包含的低代碼去快速搭建這種應用。
  市場(chǎng)規模
  投資界似乎也發(fā)現了這種趨勢,全球規模在去年的時(shí)候已經(jīng)達到了八十四億美元。預計今年超過(guò)百億。23年超過(guò)200億。
  比如說(shuō)二月份的時(shí)候,就有一家創(chuàng )業(yè)公司,他們融了大概上億美元,估值也有幾十億。所以說(shuō)這一塊從全球的低代碼的市場(chǎng)規模來(lái)說(shuō),低代碼還是非常有潛力的。
  搭建分類(lèi)
  現在市場(chǎng)上基本上分為兩類(lèi)搭建類(lèi)型,一類(lèi)是營(yíng)銷(xiāo)類(lèi)搭建 no code,一類(lèi)是通用類(lèi)搭建,就是我們所說(shuō)的 low code 和 pro code。營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建。
  面向人群
  那么這么分類(lèi)我認為是面向的人群不同,一個(gè)特別通用的搭建平臺,可能復雜度就上升了很高,所以說(shuō)我們要做這個(gè)低代碼搭建平臺的時(shí)候,一定要想好我們面向的人群是什么?
  營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建
  中后臺領(lǐng)域痛點(diǎn)
  首先交互不統一,比如說(shuō)有一些很相似的頁(yè)面,但是由不同的產(chǎn)品或者設計師出的圖。
  那實(shí)際上他們想要達到的效果是很相似的。但是交互不同,不同的前端開(kāi)發(fā)出來(lái)的效果也不一樣。不同職級的開(kāi)發(fā)可維護性就會(huì )差一點(diǎn),代碼可能會(huì )復雜一些,會(huì )出現不同的編碼風(fēng)格。中臺還有一個(gè)痛點(diǎn)的就是中臺的系統非常多,業(yè)務(wù)重,人員有缺口。我之前負責的那個(gè)域,前后端比例當時(shí)是有 1:7 的樣子,借人也好,招人也好,都是很難去補上這個(gè)缺口。
  
  設定目標
  所以我們設定了三個(gè)目標,一個(gè)是提效降本。我們怎么樣去把這一塊的研發(fā)效能提上來(lái)。
  第二個(gè)目標是部分生產(chǎn)力可轉移后端,讓后端也有能力輸出前端頁(yè)面
  第三點(diǎn)就是抽象中后臺的系統基礎組件。前端在組件化的過(guò)程中逐漸沉淀,復用這些能力,賦能到搭建平臺中。
  如何做?波塞冬建站平臺
  有了這些目標,促使我們做了波塞冬建站平臺,通過(guò)可視化操作 + 部分編碼(或者不編碼)生成中后臺系統。讓前端業(yè)務(wù)開(kāi)發(fā)變成組件開(kāi)發(fā),逐漸沉淀可復用組件,讓簡(jiǎn)單業(yè)務(wù)少編碼甚至不編碼。為前端增效,為后端賦能。
  使用數據
  這個(gè)平臺上線(xiàn)之后,線(xiàn)上的有117個(gè)頁(yè)面在運行,共發(fā)布了870次,其中已經(jīng)設計了6個(gè)團隊,提升的人效也很顯著(zhù),假設我們平均開(kāi)發(fā)一個(gè)增量頁(yè)面需要3人日,用波塞冬只需要一人日,老頁(yè)面迭代修改配置也只需要0.5d
  平臺流程
  給大家講解下平臺原理,比如說(shuō)一個(gè)創(chuàng )建者,他首先要去波塞冬平臺創(chuàng )建頁(yè)面,生成一份 schema ,這份 schema 被波塞冬后端保存在SQL中,我們的用戶(hù),也就是頁(yè)面訪(fǎng)問(wèn)者,通過(guò)業(yè)務(wù)平臺網(wǎng)站獲取頁(yè)面,這里邊相當于業(yè)務(wù)平臺網(wǎng)站有個(gè)sdk,他直接取拉波塞冬保存的schema,sdk通過(guò) schema 渲染組件 和 業(yè)務(wù)數據的接口,這樣一個(gè)頁(yè)面就展示出來(lái)了
  那我們這邊也有很多組件貢獻者,如果創(chuàng )建者不滿(mǎn)足需求的,貢獻者這邊去維護組件這樣就能貢獻生態(tài)
  平臺架構
  整個(gè)平臺的架構是這樣的:
  底層我們是拿vue搭建,不過(guò)這塊技術(shù)選型哪個(gè)框架都可以,只要定義好 schema,react + antd 也能搞
  組件這一塊就是根據固定的 schema 進(jìn)行封裝,未來(lái)可能還有一些業(yè)務(wù)組件接入
  渲染這一層主要是提供給開(kāi)發(fā)者用來(lái)豐富組件庫或一些其他業(yè)務(wù)場(chǎng)景
  平臺能力也就是我們要提供的這個(gè)界面,主要是一些用戶(hù)可以操作的功能,這些功能想一下入手還有一點(diǎn)小成本,我們提供了文檔,視頻等,可以做到邊接入邊開(kāi)發(fā),還提供了一些實(shí)例供配置方借鑒
  接入方式
  我們的解析方式有三種,一種是 sdk直接引入,這樣方便升級,也方便二次開(kāi)發(fā),sdk的引入方式非常靈活。
  還有一種是 ifame 引入,這樣只需引入一個(gè)標簽即可,剩下的都在波塞冬里配置。
  一鍵建站的方式,相當于站點(diǎn)維度,沒(méi)有項目的概念,域名菜單權限頁(yè)面,都是在波塞冬里完成的,不需要本地環(huán)境,這種比較適合后端開(kāi)發(fā)人員
  渲染引擎
  展示一下 sdk 的引用,我們可能會(huì )在不同開(kāi)發(fā)環(huán)境中引入,這里提供環(huán)境變量的配置
  一鍵建站
  剛才有介紹我們有三種引入方式,給大家看下第三種一鍵建站是怎么做的,我們加強了應用管理,一個(gè)應用就是一個(gè)站點(diǎn),菜單,域名都是在平臺里申請,這樣用戶(hù)通過(guò)頁(yè)面訪(fǎng)問(wèn)就是配置的界面,完全不需要再去申請工程,這里我們用了代理的方式進(jìn)行一個(gè)轉發(fā),轉發(fā)的目標是一個(gè)基座,類(lèi)似微前端的那個(gè)基座,只不過(guò)這個(gè)基座我們通過(guò)當前域名拉取配置,最終提供給用戶(hù)。
  
  頁(yè)面布局
  帶大家看一下創(chuàng )建頁(yè)面的布局,最左側是組件區,目前是基礎組件,這里未來(lái)可能會(huì )做組件分類(lèi),把業(yè)務(wù)組件和自定義組件也接進(jìn)來(lái),中間是布局設計區,比如說(shuō)列表頁(yè)有固定三個(gè)區域,篩選項,中部功能區,列表,表單頁(yè)不做限制,右側為配置區,可以配置綁定字段和文案還有一些額外屬性,組件的交互,像select這種option是接口調用的數據,還可以配置遠程接口
  模型設計(JSON SCHEMA)
  我們創(chuàng )建頁(yè)面后,會(huì )生成一份 schema ,什么是 json schema ,簡(jiǎn)單介紹一下,json shema 是 json 的一種約束,用來(lái)定義json的數據結構和驗證格式,我們在這里用來(lái)保證數據的一致性
  每個(gè)頁(yè)面有一個(gè)主體,用來(lái)描述版本和一些原信息,body就是他的內容
  JSON SCHEMA
  我們目前頁(yè)面分為兩種,一種就是列表頁(yè)面,一種是 form 頁(yè),但是他們的描述協(xié)議都是一樣的,那基本的組件描述我們定義好了,這樣其實(shí)簡(jiǎn)單的需求就能實(shí)現了,但是前端避免不了交互這一層,比如說(shuō)一個(gè)選擇框,當我選擇了 A,B會(huì )觸發(fā)一個(gè)事件,并且B還要拿到A所攜帶的入參信息
  操作事件
  我們這邊做了一個(gè)操作事件功能,我們只需要把組件的 ref 設置好,操作事件這一塊就可以定義他的出參入參,方便交互
  數據中心
  接口配置這里,比如說(shuō)一個(gè) select 從遠程接口獲取到一個(gè)枚舉,就可以存下來(lái),給其他組件消費
  自定義插槽
  比如說(shuō)平臺目前有不支持的組件或交互,還沒(méi)有維護在平臺里的,這里可以利用 vue 的 slot 進(jìn)行二次開(kāi)發(fā),只需要拖入一個(gè) slot
  自定義插槽-編碼
  slot 里的組件可以獲取到配置里的 ref 和想要拿到的 scope,做任何你想做的事兒
  穩定性
  我們做低代碼平臺,歸根到底是一個(gè)渲染引擎渲染一組 schema ,那么穩定性也得考慮,我們每次修改線(xiàn)上配置,可能心情如圖,那我發(fā)布時(shí)怎么保證準確性,傳統開(kāi)發(fā)我們會(huì )有一個(gè)review 的過(guò)程,我們就把這個(gè)過(guò)程也搬上來(lái)了
  SCHEMA DIFF & 版本對比
  schema diff 每次發(fā)布時(shí),需要選擇版本來(lái)確認我改了什么,大大降低了風(fēng)險。
  發(fā)布時(shí)也要進(jìn)行二次確認
  未來(lái)規劃
  AUTO-CODE
  我們目前的能力,在版本對比這一塊希望能做到 merge,并且提供可視化,也就是說(shuō)你不一定非要看 schema 這種東西,組件這里繼續豐富,能承載更多的需求,low-code 目標就做到 no-code 讓非開(kāi)發(fā)人員直接生成頁(yè)面,不需要寫(xiě)一點(diǎn)代碼,最終這個(gè)生產(chǎn)力就可以轉移,終極目標就是做成 auto-code ,利用機器學(xué)習識別設計圖,直接生成網(wǎng)站,抹去大部分配置,auto-code 目前業(yè)界有很多公司已經(jīng)實(shí)現,我們也在慢慢摸索。
  關(guān)于本文 查看全部

  【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐
  前言
  本文來(lái)自。今日前端早讀課文章由哈啰出行@杜詩(shī)晨分享,公號:哈啰技術(shù)授權分享。
  @杜詩(shī)晨(vx: emododo),先后就職北京新浪,36氪,百度,有接近十年的前端開(kāi)發(fā)經(jīng)驗,現在是哈啰出行業(yè)財&清結算的前端負責人,也是杭州哈啰第一個(gè)入職的前端。
  正文從這開(kāi)始~~
  什么是低代碼搭建
  通過(guò)提供一種可視化的應用開(kāi)發(fā)環(huán)境,降低或去除對原生代碼編寫(xiě)的需求量快速構建應用程序。
  傳統開(kāi)發(fā)交付一個(gè)產(chǎn)品的流程,首先產(chǎn)品輸出 prd,然后設計 ui 設計進(jìn)行設計,設計完成給到前端,前端再去開(kāi)發(fā)。如果是個(gè)新項目可能還要這種配置各種復雜環(huán)境。同時(shí)后端也在開(kāi)發(fā),然后聯(lián)調、測試。其實(shí)現在大部分的公司都是這種開(kāi)發(fā)流程。那這種缺點(diǎn)就很明顯,涉及到的人非常多,開(kāi)發(fā)周期也變得非常長(cháng)。
  低代碼搭建是一個(gè)什么樣的流程?如果是一個(gè)成熟的配置搭建平臺,只需要提供一個(gè)配置平臺,開(kāi)發(fā)人員不論是剛畢業(yè)的大學(xué)生或者是前端小白,甚至可能是一個(gè)后端開(kāi)發(fā),都可以通過(guò)這個(gè)配置平臺搭建,快速生成網(wǎng)頁(yè)。
  關(guān)于低代碼的市場(chǎng)規模和衍生的歷史大家可以從下圖中了解一下,這里提供兩份報告作為延伸學(xué)習:海比研究報告 | 艾瑞咨詢(xún)
  概念衍生歷史
  低代碼這個(gè)概念其實(shí)很早就有了,80年代的時(shí)候提出了第四代編程語(yǔ)言,這個(gè)第四代是什么意思呢,第一代是機器語(yǔ)言,第二代匯編語(yǔ)言,第三代高級語(yǔ)言。前三代都是操作語(yǔ)言,需要編程指出怎么做,一步一步的寫(xiě)運行步驟,這樣是有學(xué)習成本的,并且項目開(kāi)發(fā)周期長(cháng),出于商業(yè)需要第四代語(yǔ)言被軟件廠(chǎng)商提出,在一定程度上只需要說(shuō)明做什么,有什么目的,不需要寫(xiě)出怎么做的過(guò)程。
  2000 年 vpl 被提出,可視化編程語(yǔ)言,意思就是用戶(hù)用過(guò)圖形化操作程序元素而不是通過(guò)文本制定來(lái)創(chuàng )建程序,基于流的概念比如虛幻引擎,還有一些運用在3D編程,音樂(lè )合成,信號處理,物聯(lián)網(wǎng)嵌入式等等領(lǐng)域。
  2014年知名咨詢(xún)公司提出了低代碼/零代碼的概念,在這之前國外有很多低代碼產(chǎn)品出現并且商業(yè)化
  2016年,國內相繼發(fā)布這些低代碼的平臺。國內知名的像阿里百度騰訊,他們都有這種搭建平臺。
  在今年(2021),整個(gè)中國市場(chǎng)已經(jīng)形成了完整的低代碼無(wú)代碼的生態(tài)體系。就比如說(shuō)像現在這種 aPass 平臺或者是 Sass 平臺之類(lèi)的,平臺會(huì )包含的低代碼去快速搭建這種應用。
  市場(chǎng)規模
  投資界似乎也發(fā)現了這種趨勢,全球規模在去年的時(shí)候已經(jīng)達到了八十四億美元。預計今年超過(guò)百億。23年超過(guò)200億。
  比如說(shuō)二月份的時(shí)候,就有一家創(chuàng )業(yè)公司,他們融了大概上億美元,估值也有幾十億。所以說(shuō)這一塊從全球的低代碼的市場(chǎng)規模來(lái)說(shuō),低代碼還是非常有潛力的。
  搭建分類(lèi)
  現在市場(chǎng)上基本上分為兩類(lèi)搭建類(lèi)型,一類(lèi)是營(yíng)銷(xiāo)類(lèi)搭建 no code,一類(lèi)是通用類(lèi)搭建,就是我們所說(shuō)的 low code 和 pro code。營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建。
  面向人群
  那么這么分類(lèi)我認為是面向的人群不同,一個(gè)特別通用的搭建平臺,可能復雜度就上升了很高,所以說(shuō)我們要做這個(gè)低代碼搭建平臺的時(shí)候,一定要想好我們面向的人群是什么?
  營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建
  中后臺領(lǐng)域痛點(diǎn)
  首先交互不統一,比如說(shuō)有一些很相似的頁(yè)面,但是由不同的產(chǎn)品或者設計師出的圖。
  那實(shí)際上他們想要達到的效果是很相似的。但是交互不同,不同的前端開(kāi)發(fā)出來(lái)的效果也不一樣。不同職級的開(kāi)發(fā)可維護性就會(huì )差一點(diǎn),代碼可能會(huì )復雜一些,會(huì )出現不同的編碼風(fēng)格。中臺還有一個(gè)痛點(diǎn)的就是中臺的系統非常多,業(yè)務(wù)重,人員有缺口。我之前負責的那個(gè)域,前后端比例當時(shí)是有 1:7 的樣子,借人也好,招人也好,都是很難去補上這個(gè)缺口。
  
  設定目標
  所以我們設定了三個(gè)目標,一個(gè)是提效降本。我們怎么樣去把這一塊的研發(fā)效能提上來(lái)。
  第二個(gè)目標是部分生產(chǎn)力可轉移后端,讓后端也有能力輸出前端頁(yè)面
  第三點(diǎn)就是抽象中后臺的系統基礎組件。前端在組件化的過(guò)程中逐漸沉淀,復用這些能力,賦能到搭建平臺中。
  如何做?波塞冬建站平臺
  有了這些目標,促使我們做了波塞冬建站平臺,通過(guò)可視化操作 + 部分編碼(或者不編碼)生成中后臺系統。讓前端業(yè)務(wù)開(kāi)發(fā)變成組件開(kāi)發(fā),逐漸沉淀可復用組件,讓簡(jiǎn)單業(yè)務(wù)少編碼甚至不編碼。為前端增效,為后端賦能。
  使用數據
  這個(gè)平臺上線(xiàn)之后,線(xiàn)上的有117個(gè)頁(yè)面在運行,共發(fā)布了870次,其中已經(jīng)設計了6個(gè)團隊,提升的人效也很顯著(zhù),假設我們平均開(kāi)發(fā)一個(gè)增量頁(yè)面需要3人日,用波塞冬只需要一人日,老頁(yè)面迭代修改配置也只需要0.5d
  平臺流程
  給大家講解下平臺原理,比如說(shuō)一個(gè)創(chuàng )建者,他首先要去波塞冬平臺創(chuàng )建頁(yè)面,生成一份 schema ,這份 schema 被波塞冬后端保存在SQL中,我們的用戶(hù),也就是頁(yè)面訪(fǎng)問(wèn)者,通過(guò)業(yè)務(wù)平臺網(wǎng)站獲取頁(yè)面,這里邊相當于業(yè)務(wù)平臺網(wǎng)站有個(gè)sdk,他直接取拉波塞冬保存的schema,sdk通過(guò) schema 渲染組件 和 業(yè)務(wù)數據的接口,這樣一個(gè)頁(yè)面就展示出來(lái)了
  那我們這邊也有很多組件貢獻者,如果創(chuàng )建者不滿(mǎn)足需求的,貢獻者這邊去維護組件這樣就能貢獻生態(tài)
  平臺架構
  整個(gè)平臺的架構是這樣的:
  底層我們是拿vue搭建,不過(guò)這塊技術(shù)選型哪個(gè)框架都可以,只要定義好 schema,react + antd 也能搞
  組件這一塊就是根據固定的 schema 進(jìn)行封裝,未來(lái)可能還有一些業(yè)務(wù)組件接入
  渲染這一層主要是提供給開(kāi)發(fā)者用來(lái)豐富組件庫或一些其他業(yè)務(wù)場(chǎng)景
  平臺能力也就是我們要提供的這個(gè)界面,主要是一些用戶(hù)可以操作的功能,這些功能想一下入手還有一點(diǎn)小成本,我們提供了文檔,視頻等,可以做到邊接入邊開(kāi)發(fā),還提供了一些實(shí)例供配置方借鑒
  接入方式
  我們的解析方式有三種,一種是 sdk直接引入,這樣方便升級,也方便二次開(kāi)發(fā),sdk的引入方式非常靈活。
  還有一種是 ifame 引入,這樣只需引入一個(gè)標簽即可,剩下的都在波塞冬里配置。
  一鍵建站的方式,相當于站點(diǎn)維度,沒(méi)有項目的概念,域名菜單權限頁(yè)面,都是在波塞冬里完成的,不需要本地環(huán)境,這種比較適合后端開(kāi)發(fā)人員
  渲染引擎
  展示一下 sdk 的引用,我們可能會(huì )在不同開(kāi)發(fā)環(huán)境中引入,這里提供環(huán)境變量的配置
  一鍵建站
  剛才有介紹我們有三種引入方式,給大家看下第三種一鍵建站是怎么做的,我們加強了應用管理,一個(gè)應用就是一個(gè)站點(diǎn),菜單,域名都是在平臺里申請,這樣用戶(hù)通過(guò)頁(yè)面訪(fǎng)問(wèn)就是配置的界面,完全不需要再去申請工程,這里我們用了代理的方式進(jìn)行一個(gè)轉發(fā),轉發(fā)的目標是一個(gè)基座,類(lèi)似微前端的那個(gè)基座,只不過(guò)這個(gè)基座我們通過(guò)當前域名拉取配置,最終提供給用戶(hù)。
  
  頁(yè)面布局
  帶大家看一下創(chuàng )建頁(yè)面的布局,最左側是組件區,目前是基礎組件,這里未來(lái)可能會(huì )做組件分類(lèi),把業(yè)務(wù)組件和自定義組件也接進(jìn)來(lái),中間是布局設計區,比如說(shuō)列表頁(yè)有固定三個(gè)區域,篩選項,中部功能區,列表,表單頁(yè)不做限制,右側為配置區,可以配置綁定字段和文案還有一些額外屬性,組件的交互,像select這種option是接口調用的數據,還可以配置遠程接口
  模型設計(JSON SCHEMA)
  我們創(chuàng )建頁(yè)面后,會(huì )生成一份 schema ,什么是 json schema ,簡(jiǎn)單介紹一下,json shema 是 json 的一種約束,用來(lái)定義json的數據結構和驗證格式,我們在這里用來(lái)保證數據的一致性
  每個(gè)頁(yè)面有一個(gè)主體,用來(lái)描述版本和一些原信息,body就是他的內容
  JSON SCHEMA
  我們目前頁(yè)面分為兩種,一種就是列表頁(yè)面,一種是 form 頁(yè),但是他們的描述協(xié)議都是一樣的,那基本的組件描述我們定義好了,這樣其實(shí)簡(jiǎn)單的需求就能實(shí)現了,但是前端避免不了交互這一層,比如說(shuō)一個(gè)選擇框,當我選擇了 A,B會(huì )觸發(fā)一個(gè)事件,并且B還要拿到A所攜帶的入參信息
  操作事件
  我們這邊做了一個(gè)操作事件功能,我們只需要把組件的 ref 設置好,操作事件這一塊就可以定義他的出參入參,方便交互
  數據中心
  接口配置這里,比如說(shuō)一個(gè) select 從遠程接口獲取到一個(gè)枚舉,就可以存下來(lái),給其他組件消費
  自定義插槽
  比如說(shuō)平臺目前有不支持的組件或交互,還沒(méi)有維護在平臺里的,這里可以利用 vue 的 slot 進(jìn)行二次開(kāi)發(fā),只需要拖入一個(gè) slot
  自定義插槽-編碼
  slot 里的組件可以獲取到配置里的 ref 和想要拿到的 scope,做任何你想做的事兒
  穩定性
  我們做低代碼平臺,歸根到底是一個(gè)渲染引擎渲染一組 schema ,那么穩定性也得考慮,我們每次修改線(xiàn)上配置,可能心情如圖,那我發(fā)布時(shí)怎么保證準確性,傳統開(kāi)發(fā)我們會(huì )有一個(gè)review 的過(guò)程,我們就把這個(gè)過(guò)程也搬上來(lái)了
  SCHEMA DIFF & 版本對比
  schema diff 每次發(fā)布時(shí),需要選擇版本來(lái)確認我改了什么,大大降低了風(fēng)險。
  發(fā)布時(shí)也要進(jìn)行二次確認
  未來(lái)規劃
  AUTO-CODE
  我們目前的能力,在版本對比這一塊希望能做到 merge,并且提供可視化,也就是說(shuō)你不一定非要看 schema 這種東西,組件這里繼續豐富,能承載更多的需求,low-code 目標就做到 no-code 讓非開(kāi)發(fā)人員直接生成頁(yè)面,不需要寫(xiě)一點(diǎn)代碼,最終這個(gè)生產(chǎn)力就可以轉移,終極目標就是做成 auto-code ,利用機器學(xué)習識別設計圖,直接生成網(wǎng)站,抹去大部分配置,auto-code 目前業(yè)界有很多公司已經(jīng)實(shí)現,我們也在慢慢摸索。
  關(guān)于本文

網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-07-11 17:08 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用
  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站作為在線(xiàn)網(wǎng)絡(luò )的應用平臺,是現代企業(yè)銷(xiāo)售、宣傳、教育、技術(shù)服務(wù)等一系列的基礎的應用工具,起到了一個(gè)“龍頭”的作用。
  1、單文件策略:每個(gè)訪(fǎng)問(wèn)者都有獨立的賬號和權限,結合內部獨立主頁(yè)可有效識別并控制訪(fǎng)問(wèn)者
  2、統一管理內容:外部導航、內部導航、內容聚合、轉盤(pán)隨時(shí)更改顯示結果
  3、開(kāi)放共享系統:可基于互聯(lián)網(wǎng)給第三方開(kāi)發(fā)者提供的api接口進(jìn)行開(kāi)發(fā),發(fā)布第三方代碼,允許第三方建立網(wǎng)站,
  
  4、防止惡意頁(yè)面爬蟲(chóng):為了防止惡意頁(yè)面爬蟲(chóng),需要網(wǎng)站內容管理系統擁有ssl證書(shū),且需要標注access_token。
  5、后臺基本設置:菜單、控制區域、安全控制區域、開(kāi)放度
  6、后臺存儲數據:數據文件、記錄表格、圖片和json等
  7、后臺賬號的管理:需要加入的賬號、已有賬號、通用賬號、雙子賬號等
  
  8、后臺注冊、密碼重置:登錄賬號、密碼、日志權限安全問(wèn)題:
  1、服務(wù)器安全控制策略要記錄登錄用戶(hù)的操作,
  2、安全評估的管理要記錄每個(gè)用戶(hù)的操作行為,保證后臺操作沒(méi)有被他人訪(fǎng)問(wèn)過(guò),哪怕是按指紋,攝像頭權限,
  3、安全控制內容:a)有價(jià)值數據的備份管理b)登錄后臺賬號的清單管理c)公共數據記錄的記錄管理d)清晰的數據內容請求級別管理和定位
  4、服務(wù)器安全控制:最好通過(guò)模擬登錄的方式將后臺管理數據發(fā)送給托管平臺管理平臺模擬登錄 查看全部

  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用
  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站作為在線(xiàn)網(wǎng)絡(luò )的應用平臺,是現代企業(yè)銷(xiāo)售、宣傳、教育、技術(shù)服務(wù)等一系列的基礎的應用工具,起到了一個(gè)“龍頭”的作用。
  1、單文件策略:每個(gè)訪(fǎng)問(wèn)者都有獨立的賬號和權限,結合內部獨立主頁(yè)可有效識別并控制訪(fǎng)問(wèn)者
  2、統一管理內容:外部導航、內部導航、內容聚合、轉盤(pán)隨時(shí)更改顯示結果
  3、開(kāi)放共享系統:可基于互聯(lián)網(wǎng)給第三方開(kāi)發(fā)者提供的api接口進(jìn)行開(kāi)發(fā),發(fā)布第三方代碼,允許第三方建立網(wǎng)站,
  
  4、防止惡意頁(yè)面爬蟲(chóng):為了防止惡意頁(yè)面爬蟲(chóng),需要網(wǎng)站內容管理系統擁有ssl證書(shū),且需要標注access_token。
  5、后臺基本設置:菜單、控制區域、安全控制區域、開(kāi)放度
  6、后臺存儲數據:數據文件、記錄表格、圖片和json等
  7、后臺賬號的管理:需要加入的賬號、已有賬號、通用賬號、雙子賬號等
  
  8、后臺注冊、密碼重置:登錄賬號、密碼、日志權限安全問(wèn)題:
  1、服務(wù)器安全控制策略要記錄登錄用戶(hù)的操作,
  2、安全評估的管理要記錄每個(gè)用戶(hù)的操作行為,保證后臺操作沒(méi)有被他人訪(fǎng)問(wèn)過(guò),哪怕是按指紋,攝像頭權限,
  3、安全控制內容:a)有價(jià)值數據的備份管理b)登錄后臺賬號的清單管理c)公共數據記錄的記錄管理d)清晰的數據內容請求級別管理和定位
  4、服務(wù)器安全控制:最好通過(guò)模擬登錄的方式將后臺管理數據發(fā)送給托管平臺管理平臺模擬登錄

SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 104 次瀏覽 ? 2022-07-10 16:03 ? 來(lái)自相關(guān)話(huà)題

  SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?
  CSDN官方推薦10W+JAVA技術(shù)人文章發(fā)布打卡社區
  項目名稱(chēng)
  SSM框架扶貧管理系統的設計與實(shí)現
  效果視頻
  SSM框架扶貧管理系統的設計與實(shí)現
  系統說(shuō)明
  扶貧管理系統平臺,他的業(yè)務(wù)流程如下:顧客通過(guò)網(wǎng)址瀏覽商品,挑選喜歡的商品登陸賬號將其收藏并加入購物車(chē),在購物車(chē)界面提交訂單,選擇支付方式,支付成功后生成訂單,之后再我的主頁(yè)里查看訂單信息,后臺管理員接收到訂單后實(shí)時(shí)查看到訂單信息,并可以進(jìn)行發(fā)貨處理和解決售后問(wèn)題,我們是直接接入到賣(mài)家的商品庫存,他們種植的農作物會(huì )同步到我們的庫存,管理員可以直接進(jìn)行發(fā)貨。按照結業(yè)設計基本功能和產(chǎn)品要求,本次設計的主要任務(wù)是設計扶貧管理系統的方案,實(shí)現扶貧管理系統的編程,主要應用于農村地區貧苦地區種植的農產(chǎn)品的售賣(mài)。其主要功能包括以下幾個(gè)功能:
  如圖3.1所示,以下是系統的總體功能結構圖,扶貧管理系統主要分為前臺和后臺兩個(gè)方向,前臺是用戶(hù)主要使用的地方功能主要分為:首頁(yè)、商品分類(lèi)、新聞咨詢(xún)、關(guān)于我們、購物車(chē)、個(gè)人資料、訂單管理、售后管理、留言管理等功能,主要是方便前臺用戶(hù)能夠方便地購買(mǎi)扶貧商品并查看相關(guān)的扶貧新聞以及系統介紹。后臺是管理員管理系統的地方功能主要分為:系統管理、會(huì )員管理、資訊管理、商品管理、訂單管理、留言管理以及統計管理等功能,主要是方便管理員對系統內容進(jìn)行管理并保證系統的正常業(yè)務(wù)流轉。
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。? 查看全部

  SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?
  CSDN官方推薦10W+JAVA技術(shù)人文章發(fā)布打卡社區
  項目名稱(chēng)
  SSM框架扶貧管理系統的設計與實(shí)現
  效果視頻
  SSM框架扶貧管理系統的設計與實(shí)現
  系統說(shuō)明
  扶貧管理系統平臺,他的業(yè)務(wù)流程如下:顧客通過(guò)網(wǎng)址瀏覽商品,挑選喜歡的商品登陸賬號將其收藏并加入購物車(chē),在購物車(chē)界面提交訂單,選擇支付方式,支付成功后生成訂單,之后再我的主頁(yè)里查看訂單信息,后臺管理員接收到訂單后實(shí)時(shí)查看到訂單信息,并可以進(jìn)行發(fā)貨處理和解決售后問(wèn)題,我們是直接接入到賣(mài)家的商品庫存,他們種植的農作物會(huì )同步到我們的庫存,管理員可以直接進(jìn)行發(fā)貨。按照結業(yè)設計基本功能和產(chǎn)品要求,本次設計的主要任務(wù)是設計扶貧管理系統的方案,實(shí)現扶貧管理系統的編程,主要應用于農村地區貧苦地區種植的農產(chǎn)品的售賣(mài)。其主要功能包括以下幾個(gè)功能:
  如圖3.1所示,以下是系統的總體功能結構圖,扶貧管理系統主要分為前臺和后臺兩個(gè)方向,前臺是用戶(hù)主要使用的地方功能主要分為:首頁(yè)、商品分類(lèi)、新聞咨詢(xún)、關(guān)于我們、購物車(chē)、個(gè)人資料、訂單管理、售后管理、留言管理等功能,主要是方便前臺用戶(hù)能夠方便地購買(mǎi)扶貧商品并查看相關(guān)的扶貧新聞以及系統介紹。后臺是管理員管理系統的地方功能主要分為:系統管理、會(huì )員管理、資訊管理、商品管理、訂單管理、留言管理以及統計管理等功能,主要是方便管理員對系統內容進(jìn)行管理并保證系統的正常業(yè)務(wù)流轉。
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。?

SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-07-06 11:00 ? 來(lái)自相關(guān)話(huà)題

  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?項目名稱(chēng)
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  視頻效果
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  系統說(shuō)明
  該系統主要由前臺和后臺兩部分組成,后臺是由系統管理員進(jìn)行管理,主要工作是系統維護,管理員主要實(shí)現了統計分析、留言管理、系統管理、會(huì )員管理、資訊管理、類(lèi)別管理、商品管理、庫存管理、訂單管理、售后管理等功能模塊;前臺是用戶(hù)使用,主要功能包括注冊登錄、首頁(yè)、商品分類(lèi)、新聞資訊、關(guān)于我們、購物車(chē)、個(gè)人信息、訂單管理、留言板、售后管理等。
  編輯
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。? 查看全部

  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?項目名稱(chēng)
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  視頻效果
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  系統說(shuō)明
  該系統主要由前臺和后臺兩部分組成,后臺是由系統管理員進(jìn)行管理,主要工作是系統維護,管理員主要實(shí)現了統計分析、留言管理、系統管理、會(huì )員管理、資訊管理、類(lèi)別管理、商品管理、庫存管理、訂單管理、售后管理等功能模塊;前臺是用戶(hù)使用,主要功能包括注冊登錄、首頁(yè)、商品分類(lèi)、新聞資訊、關(guān)于我們、購物車(chē)、個(gè)人信息、訂單管理、留言板、售后管理等。
  編輯
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。?

【web素材】08—這50套高大上的后臺管理系統模板

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2022-06-22 22:26 ? 來(lái)自相關(guān)話(huà)題

  【web素材】08—這50套高大上的后臺管理系統模板
  
  整理| 楊小愛(ài)
  來(lái)源 | web前端開(kāi)發(fā)(web_qdkf)
  這50套后臺管理模板都是我之前在做后臺界面時(shí),收集整理起來(lái)的,一共有100多套后臺管理界面,我精心挑選了50套,我個(gè)人覺(jué)得還不錯的,也是我個(gè)人比較喜歡的,跟大家分享一下,不管你是設計師還是程序員,都會(huì )是非常不錯的設計開(kāi)發(fā)素材。
  現在,我們一起來(lái)感受一下。
  大屏幕展示的一些大數據或者時(shí)實(shí)監控數據的后臺管理界面。
  
  這些主要是顯示在一些大屏幕上,很多企業(yè)為了給一些重要人來(lái)訪(fǎng)時(shí)候用,或者監控一些時(shí)實(shí)數據。
  圖表基本都是采用了echarts,比較容易修改,當然也有沒(méi)有使用框架的,代碼非常干凈的界面模板。
  另外,還有一些是采用Bootstrap實(shí)現的的響應式管理后臺界面,界面都比較簡(jiǎn)單,優(yōu)雅,有源碼,也可以作為設計師的設計參考。
  
  
  
  
  因為精選了50套模板,以上圖片只是展示了其中一部分界面,以下是50套模板的文件夾截圖,可以一次性打包下載,這些源碼案例,只是為了參考學(xué)習使用,因為都是來(lái)源網(wǎng)絡(luò )收集整理,至于進(jìn)行商業(yè)使用,請慎重。
  最后,重點(diǎn)來(lái)了,那怎么一次性獲取,這50套高大上的后臺管理界面源碼呢?
  獲取方法:在公號聊天窗口,直接發(fā)送關(guān)鍵字【后臺管理模板】或者【web素材08】即可獲取這50套源碼的下載地址。
  這50套源碼,有的是比較完成,基本可以進(jìn)行直接使用了,但是我建議,如果你還不會(huì )寫(xiě)的話(huà),你可以看看別人是采用了那些技術(shù),怎么實(shí)現這些效果的,你就對著(zhù)這個(gè)源碼,自己一行一行的寫(xiě)一遍,效果也會(huì )非常棒。
  如果你還想獲取更多素材內容,請點(diǎn)擊下文鏈接進(jìn)行查閱下載。
  學(xué)習更多技能
  請點(diǎn)擊下方公眾號
  
   查看全部

  【web素材】08—這50套高大上的后臺管理系統模板
  
  整理| 楊小愛(ài)
  來(lái)源 | web前端開(kāi)發(fā)(web_qdkf)
  這50套后臺管理模板都是我之前在做后臺界面時(shí),收集整理起來(lái)的,一共有100多套后臺管理界面,我精心挑選了50套,我個(gè)人覺(jué)得還不錯的,也是我個(gè)人比較喜歡的,跟大家分享一下,不管你是設計師還是程序員,都會(huì )是非常不錯的設計開(kāi)發(fā)素材。
  現在,我們一起來(lái)感受一下。
  大屏幕展示的一些大數據或者時(shí)實(shí)監控數據的后臺管理界面。
  
  這些主要是顯示在一些大屏幕上,很多企業(yè)為了給一些重要人來(lái)訪(fǎng)時(shí)候用,或者監控一些時(shí)實(shí)數據。
  圖表基本都是采用了echarts,比較容易修改,當然也有沒(méi)有使用框架的,代碼非常干凈的界面模板。
  另外,還有一些是采用Bootstrap實(shí)現的的響應式管理后臺界面,界面都比較簡(jiǎn)單,優(yōu)雅,有源碼,也可以作為設計師的設計參考。
  
  
  
  
  因為精選了50套模板,以上圖片只是展示了其中一部分界面,以下是50套模板的文件夾截圖,可以一次性打包下載,這些源碼案例,只是為了參考學(xué)習使用,因為都是來(lái)源網(wǎng)絡(luò )收集整理,至于進(jìn)行商業(yè)使用,請慎重。
  最后,重點(diǎn)來(lái)了,那怎么一次性獲取,這50套高大上的后臺管理界面源碼呢?
  獲取方法:在公號聊天窗口,直接發(fā)送關(guān)鍵字【后臺管理模板】或者【web素材08】即可獲取這50套源碼的下載地址。
  這50套源碼,有的是比較完成,基本可以進(jìn)行直接使用了,但是我建議,如果你還不會(huì )寫(xiě)的話(huà),你可以看看別人是采用了那些技術(shù),怎么實(shí)現這些效果的,你就對著(zhù)這個(gè)源碼,自己一行一行的寫(xiě)一遍,效果也會(huì )非常棒。
  如果你還想獲取更多素材內容,請點(diǎn)擊下文鏈接進(jìn)行查閱下載。
  學(xué)習更多技能
  請點(diǎn)擊下方公眾號
  
  

實(shí)例講解產(chǎn)品后臺該如何設計

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-06-21 11:54 ? 來(lái)自相關(guān)話(huà)題

  實(shí)例講解產(chǎn)品后臺該如何設計
  什么是后臺?
  顧名思義,就是與前臺相反的唄,前臺我們都知道是用戶(hù)查看信息,提交信息的地方,那么后臺相應的就是創(chuàng )建元素信息,存儲信息,處理信息的地方,他也叫管理系統。
  打個(gè)比方,前臺就好像我們去餐廳里,坐下來(lái)看菜單,然后告訴服務(wù)員我們今天要吃什么,服務(wù)員就蹦蹦跳跳的到了后廚,告訴廚師要做哪些菜,廚師記下桌號和菜品,就開(kāi)始制作了。這里的后廚實(shí)際上就是我們所說(shuō)的后臺系統,而那個(gè)廚師就是后臺管理員。
  那后臺都能做什么?給誰(shuí)用?
  就像上面所說(shuō)的后臺通常的作用就是創(chuàng )建信息,存儲信息與處理信息,他管理著(zhù)整個(gè)產(chǎn)品的正常運轉。在論壇里后臺管理者可以刪帖,發(fā)帖,封號,創(chuàng )建賬號,在門(mén)戶(hù)網(wǎng)站可以添加新聞,增加欄目,增加評論,在電商系統里可以上下架產(chǎn)品,處理物流信息,做促銷(xiāo)等等,功能強大吧。
  不過(guò)強大的背后就會(huì )遇到問(wèn)題,那就是越是功能強大,越不能一個(gè)人來(lái)完成所有部分,所以就有了「分權限管理」管理者可以細分成很多塊,各司其職,提高效率。比如我正在編輯文章的微信后臺,就包括管理者與運營(yíng)者,運營(yíng)者只能登錄與群發(fā)信息,更高級的操作需要管理員授權或是不開(kāi)放,電商網(wǎng)站更是多角色的典型。
  
  在大致了解了后臺是什么之后,讓我們拿個(gè)案例從需求開(kāi)始。
  看看設計后臺時(shí)是怎么思考的?
  首先最頭疼的問(wèn)題就是——從哪里入手?記住一句話(huà),跟隨你的業(yè)務(wù)流程。找到流程中需要與系統交互的地方,那就是你想要找的東西。
  OK,讓我們用一個(gè)簡(jiǎn)單的門(mén)戶(hù)網(wǎng)站舉例。
  就是這么多了,如果是你你會(huì )怎么做?
  畫(huà)原型嗎?NO。先停一下,去把這個(gè)「喜訊」告訴所有「干系人」吧,讓大家的信息對稱(chēng)一下。面對這個(gè)需求,我們需要調動(dòng)多少人?產(chǎn)品狗自己,UI一個(gè),前端一個(gè),后端1-2個(gè),市場(chǎng)文案狗一個(gè),人力資源輔助配合招聘模塊1人,最后是網(wǎng)站后期運營(yíng)者。想想功能,想想要完成的事情,大概就這么多了。
  根據需求可以看出,大概功能并不復雜;做個(gè)功能列表,簡(jiǎn)單用語(yǔ)言包裝一下你要做的東西,然后去挨個(gè)聊或者召集大家開(kāi)會(huì ),讓大家提供一個(gè)完成時(shí)間,這個(gè)完成時(shí)間不能超過(guò)Deadline,所以溝通過(guò)程中可能需要你去說(shuō)服對方,提高效率,甚至可能加班,讓大家有心理準備。搞定了人,回來(lái)看看產(chǎn)品。
  
  從老板那邊得到的需求大致是這樣,對于一個(gè)門(mén)戶(hù)網(wǎng)站來(lái)說(shuō)邏輯總是比較簡(jiǎn)單的。
  我們先來(lái)做個(gè)簡(jiǎn)單的梳理
  首頁(yè),會(huì )有一個(gè)輪播圖方便后期更新,如果更新不頻繁也可以做成靜態(tài),開(kāi)發(fā)成本低。首頁(yè)還會(huì )是一些公司競爭力介紹等等。
  新聞,新聞會(huì )有運營(yíng)人員不定期更新,就是需要創(chuàng )建信息,他就是需要在后臺有這個(gè)功能。
  招商加盟,看看招商網(wǎng)站多半是一些公司介紹,在底部會(huì )放一個(gè)聯(lián)系方式提交的地方,詢(xún)問(wèn)老板后,他認為也需要這個(gè)模塊,OK,需要傳遞信息,他也需要在后臺有個(gè)功能。
  招聘,看看招聘網(wǎng)站,功能還是挺多的?那么我們需要那么多嗎?用戶(hù)可以有個(gè)word簡(jiǎn)歷通過(guò)網(wǎng)站上傳給我們,人力資源人員可以通過(guò)后臺下載或預覽?再來(lái)一個(gè)解決方案,在前臺有很多表單可以讓用戶(hù)填寫(xiě),直接提交給后臺。這些都是用戶(hù)要與后臺產(chǎn)生互動(dòng)信息。
  但是這些方案好像聽(tīng)起來(lái)不錯,但是時(shí)間允許你這樣做嗎?成本你承受得起嗎?那么不如用最原始的方式,雖然不那么酷但是后簡(jiǎn)單,前端只提供職位職責預覽,并提供一個(gè)人力的郵箱,大家可以向里面投遞簡(jiǎn)歷,后臺只做職位的簡(jiǎn)單發(fā)布。
  業(yè)務(wù)介紹,屬于靜態(tài)頁(yè)面,設計上去就OK了,這個(gè)不涉及到后臺。
  經(jīng)過(guò)分析和溝通,我們發(fā)現與后臺有交集的地方分別是,首頁(yè)輪播圖,新聞,招商和招聘。這時(shí)候你可以去看看其他產(chǎn)品,在這些模塊都會(huì )顯示哪些字段信息,找到你決定有用的,把他填寫(xiě)到這些功能描述中,再去進(jìn)行前臺的產(chǎn)品設計;不過(guò)有時(shí)你會(huì )發(fā)現做著(zhù)做著(zhù)發(fā)現缺了某個(gè)字段,為了避免這種事情的發(fā)生,就需要你在信息收集的過(guò)程中,多去看幾個(gè)產(chǎn)品,把他們的展示的內容都先羅列下來(lái),再做刪減。
  前臺不是今天說(shuō)的重點(diǎn),我們直接進(jìn)入后臺設計。
  我常以為后臺就是一個(gè)個(gè)的「倉庫」
  這個(gè)庫里堆放著(zhù)你想要管理的內容,后臺的搭建就是創(chuàng )建一個(gè)又一個(gè)的庫,并且將他們合理的連接起來(lái)?;乜次覀円龅臇|西,可以簡(jiǎn)單的分為四個(gè)庫,并對他們分別管理。
  新聞管理
  輪播圖管理(廣告位管理)
  加盟信息
  招聘信息管理
  知道有哪些庫了,我們需要將他們合理的組合起來(lái),形成”導航“。業(yè)務(wù)流程越長(cháng),功能越多這個(gè)組合的工作越不好,這就是為什么需要信息架構師這種職位,不過(guò)面對簡(jiǎn)單的后臺,產(chǎn)品們還是可以直接應付。
  整個(gè)后臺的界面通常會(huì )有以下模塊組成:后臺導航——管理庫(管理內容列表\管理的內容),從最大的框架到最小元素。
  后臺導航
  在我接觸的后臺導航中常見(jiàn)的有幾種。
  1. 橫向導航
  2. 縱向樹(shù)結構導航
  3. 橫向導航縱向樹(shù)結構
  橫向導航會(huì )用在后臺功能較少,層級很少的情況下,他的優(yōu)勢就是學(xué)習成本低,劣勢就是可擴展性比較差。
  
  早期的支付寶導航
  縱向樹(shù)結構導航,這個(gè)我們看的其實(shí)是比較常見(jiàn)的,很多電商網(wǎng)站的個(gè)人中心或是訂單頁(yè)面就是用的這種結構,邏輯清晰,能夠很快的找到想要找的東西。
  
  第三種比較復雜,適用于平臺功能較多,功能模塊相差很多的網(wǎng)站,會(huì )在最頂部的橫向導航放置頂級功能導航,在某個(gè)功能下用樹(shù)結構導航清晰的表現二級功能。
  
  因為這一次我們做的功能并不復雜實(shí)際上可以用橫向導航,不過(guò)因為我是根據現有后臺來(lái)制作,所以為了不增加開(kāi)發(fā)成本,所以依然延續橫向導航縱向樹(shù)結構。
  管理庫
  決定了哪種導航形式,來(lái)看看最重要的「管理庫」,面對「庫」大家記住,絕大部分情況都會(huì )有個(gè)「列表頁(yè)」,然后就是對信息的「增刪改查」,遇到商品或是輪播圖還會(huì )有上下架,顯示與隱藏的功能,基本上「庫」都會(huì )這樣的管理的。
  那么這樣想,是不是新聞的管理設計起來(lái)就容易多了。添加新聞,刪除新聞,編輯新聞,搜索新聞,再加上一個(gè)新聞列表,列表中在顯示一些需要的字段。
  OK,其實(shí)整個(gè)管理列表頁(yè)已經(jīng)躍然紙上了,之后就是正文編輯了,用戶(hù)可以從列表頁(yè)或導航中的「添加新聞」進(jìn)入,把可以實(shí)現功能的字段做到頁(yè)面上,再加上文本編輯器,一個(gè)發(fā)布按鈕,一個(gè)簡(jiǎn)單的新聞管理就搞定了。
  
  原型略簡(jiǎn)陋。。莫吐槽~
  那加盟信息怎么做呢?其實(shí)也很簡(jiǎn)單了,既然用戶(hù)需要在前臺提交信息,那么我們的后臺實(shí)際上就是一個(gè)接受信息的地方。我們讓用戶(hù)在前臺提交「姓名電話(huà)郵箱」等聯(lián)系方式,在后臺加盟管理中,利用列表頁(yè)將這些信息進(jìn)行展示,有新的加盟信息推送過(guò)來(lái)可以在導航上加一個(gè)數字角標,這個(gè)功能甚至都用不到詳情頁(yè)就能搞定。
  留個(gè)思考問(wèn)題,廣告位管理你是不是也會(huì )做了呢?思考10秒鐘,用上面的辦法思考——列表(增刪改查)+詳情(添加內容)。是不是思路變得清晰一些了?
  像門(mén)戶(hù)網(wǎng)站這種還算比較簡(jiǎn)單的了,不過(guò)為了方便管理,你可以給不同的角色賦予不同的權限,比如人力資源的同學(xué)只可以使用招聘發(fā)布,網(wǎng)站運營(yíng)人員只能使用新聞發(fā)布等等,專(zhuān)人專(zhuān)項,分工明確。
  角色劃分與權限是怎么來(lái)決定呢?
  一句話(huà),跟隨你的產(chǎn)品業(yè)務(wù)。比如拿電商而言一個(gè)商品從用戶(hù)確認下單,支付之后,在后臺會(huì )走過(guò)多少流程,我想每個(gè)公司的業(yè)務(wù)流程都會(huì )不同,但是在這個(gè)流程中一定會(huì )涉及到很多「角色」來(lái)處理訂單,而這「角色」就是你來(lái)劃分后臺權限的依據,而功能亦是從業(yè)務(wù)需求中轉化而成的。
  讓我們短暫回顧一下
  回顧一下后臺的設計,我們會(huì )發(fā)現他實(shí)際上是一種面向信息的設計,對于信息進(jìn)行審核,記錄,閱讀,操控等等。在做后臺設計時(shí)你需要對業(yè)務(wù)流程有一定了解,知道哪個(gè)環(huán)節會(huì )與系統產(chǎn)生交互,那么這個(gè)交互的點(diǎn)就是后臺設計的「庫」,我們需要對這些庫進(jìn)行管理,有時(shí)候我們還需要將這些庫與另外一些庫進(jìn)行連接,庫與庫之間互相調取數據。
  比如電商網(wǎng)站做的促銷(xiāo)管理,都會(huì )去調用「商品庫」里面的數據。想要掌握后臺產(chǎn)品的設計的核心就是處理好每個(gè)庫的劃分與整個(gè)產(chǎn)品的運作邏輯。
  先做前臺還是后臺
  這是我曾經(jīng)很糾結的問(wèn)題,不知道你是不是也是一樣,當你慢慢了解之后,這個(gè)問(wèn)題其實(shí)就不復存在了,找你熟悉的東西開(kāi)始做,這樣會(huì )讓你有我已經(jīng)完成了多少多少了的感覺(jué),而不是面對一個(gè)不熟悉的東西,痛苦的死磕,磕到對自己失去信心。
  前臺與后臺共同構成了你的產(chǎn)品,缺少一方,產(chǎn)品便無(wú)法運轉,先把業(yè)務(wù)邏輯思考清楚,你會(huì )發(fā)現「哦,這里是給用戶(hù)看的」「啊,這里是后臺要處理的」當業(yè)務(wù)邏輯走向完整之后,我想你的前后臺就都已經(jīng)設計完成了。還有一個(gè)問(wèn)題可能會(huì )比較困擾人。
  后臺設計要不要注重體驗和UI?
  我的答案是,視情況而定。這個(gè)情況有可能是時(shí)間,有可能是產(chǎn)品階段,有可能是公司目標與規模。
  有些后臺只要能實(shí)現功能就可以,有些后臺需要開(kāi)放給第三方來(lái)用,對于產(chǎn)品的“好用”程度不同,不過(guò)如果條件允許還是反復推敲下,其中的邏輯與體驗比較好。
  前一陣幫助公司對商城的賣(mài)家后臺做了體驗上的改版,因為之前都會(huì )不斷的增加功能,沒(méi)有對產(chǎn)品很好的梳理和設計,導致很多地方體驗不好或是信息架構混亂。這些細小的地方只要多多體驗,多思考就能夠找到更好的辦法。
  比如后臺有個(gè)手機認證的功能,之前只這樣的操作。
  
  未認證的用戶(hù)進(jìn)來(lái)的狀態(tài),會(huì )顯示用戶(hù)未認證,點(diǎn)擊立即認證會(huì )有個(gè)模態(tài)窗口,讓你填寫(xiě)手機號,驗證碼。
  
  OK,好像很正常,也能夠綁定,那么問(wèn)題出現在哪里呢?
  
  不夠直接,需要兩步操作。于是做了如下修改,點(diǎn)擊導航中的認證中心,直接去判斷是否綁定,如果沒(méi)有綁定,直接顯示之前彈窗中的內容,兩步變一步,簡(jiǎn)單了許多吧。
  尾巴
  不知道你現在,是不是已經(jīng)知道后臺是什么,給誰(shuí)用,如何設計了。最近在研究拼車(chē)產(chǎn)品,不知道你有沒(méi)有用過(guò)嘀嘀順風(fēng)車(chē),如果沒(méi)用過(guò)你可以馬上體驗一下,然后思考一下,他的哪些東西會(huì )在后臺出現呢?
  PS:轉發(fā)此篇文章到朋友圈或者是產(chǎn)品經(jīng)理群,并截圖發(fā)給微信chanpin628,可以找我領(lǐng)取一份阿里需求管理模板。 查看全部

  實(shí)例講解產(chǎn)品后臺該如何設計
  什么是后臺?
  顧名思義,就是與前臺相反的唄,前臺我們都知道是用戶(hù)查看信息,提交信息的地方,那么后臺相應的就是創(chuàng )建元素信息,存儲信息,處理信息的地方,他也叫管理系統。
  打個(gè)比方,前臺就好像我們去餐廳里,坐下來(lái)看菜單,然后告訴服務(wù)員我們今天要吃什么,服務(wù)員就蹦蹦跳跳的到了后廚,告訴廚師要做哪些菜,廚師記下桌號和菜品,就開(kāi)始制作了。這里的后廚實(shí)際上就是我們所說(shuō)的后臺系統,而那個(gè)廚師就是后臺管理員。
  那后臺都能做什么?給誰(shuí)用?
  就像上面所說(shuō)的后臺通常的作用就是創(chuàng )建信息,存儲信息與處理信息,他管理著(zhù)整個(gè)產(chǎn)品的正常運轉。在論壇里后臺管理者可以刪帖,發(fā)帖,封號,創(chuàng )建賬號,在門(mén)戶(hù)網(wǎng)站可以添加新聞,增加欄目,增加評論,在電商系統里可以上下架產(chǎn)品,處理物流信息,做促銷(xiāo)等等,功能強大吧。
  不過(guò)強大的背后就會(huì )遇到問(wèn)題,那就是越是功能強大,越不能一個(gè)人來(lái)完成所有部分,所以就有了「分權限管理」管理者可以細分成很多塊,各司其職,提高效率。比如我正在編輯文章的微信后臺,就包括管理者與運營(yíng)者,運營(yíng)者只能登錄與群發(fā)信息,更高級的操作需要管理員授權或是不開(kāi)放,電商網(wǎng)站更是多角色的典型。
  
  在大致了解了后臺是什么之后,讓我們拿個(gè)案例從需求開(kāi)始。
  看看設計后臺時(shí)是怎么思考的?
  首先最頭疼的問(wèn)題就是——從哪里入手?記住一句話(huà),跟隨你的業(yè)務(wù)流程。找到流程中需要與系統交互的地方,那就是你想要找的東西。
  OK,讓我們用一個(gè)簡(jiǎn)單的門(mén)戶(hù)網(wǎng)站舉例。
  就是這么多了,如果是你你會(huì )怎么做?
  畫(huà)原型嗎?NO。先停一下,去把這個(gè)「喜訊」告訴所有「干系人」吧,讓大家的信息對稱(chēng)一下。面對這個(gè)需求,我們需要調動(dòng)多少人?產(chǎn)品狗自己,UI一個(gè),前端一個(gè),后端1-2個(gè),市場(chǎng)文案狗一個(gè),人力資源輔助配合招聘模塊1人,最后是網(wǎng)站后期運營(yíng)者。想想功能,想想要完成的事情,大概就這么多了。
  根據需求可以看出,大概功能并不復雜;做個(gè)功能列表,簡(jiǎn)單用語(yǔ)言包裝一下你要做的東西,然后去挨個(gè)聊或者召集大家開(kāi)會(huì ),讓大家提供一個(gè)完成時(shí)間,這個(gè)完成時(shí)間不能超過(guò)Deadline,所以溝通過(guò)程中可能需要你去說(shuō)服對方,提高效率,甚至可能加班,讓大家有心理準備。搞定了人,回來(lái)看看產(chǎn)品。
  
  從老板那邊得到的需求大致是這樣,對于一個(gè)門(mén)戶(hù)網(wǎng)站來(lái)說(shuō)邏輯總是比較簡(jiǎn)單的。
  我們先來(lái)做個(gè)簡(jiǎn)單的梳理
  首頁(yè),會(huì )有一個(gè)輪播圖方便后期更新,如果更新不頻繁也可以做成靜態(tài),開(kāi)發(fā)成本低。首頁(yè)還會(huì )是一些公司競爭力介紹等等。
  新聞,新聞會(huì )有運營(yíng)人員不定期更新,就是需要創(chuàng )建信息,他就是需要在后臺有這個(gè)功能。
  招商加盟,看看招商網(wǎng)站多半是一些公司介紹,在底部會(huì )放一個(gè)聯(lián)系方式提交的地方,詢(xún)問(wèn)老板后,他認為也需要這個(gè)模塊,OK,需要傳遞信息,他也需要在后臺有個(gè)功能。
  招聘,看看招聘網(wǎng)站,功能還是挺多的?那么我們需要那么多嗎?用戶(hù)可以有個(gè)word簡(jiǎn)歷通過(guò)網(wǎng)站上傳給我們,人力資源人員可以通過(guò)后臺下載或預覽?再來(lái)一個(gè)解決方案,在前臺有很多表單可以讓用戶(hù)填寫(xiě),直接提交給后臺。這些都是用戶(hù)要與后臺產(chǎn)生互動(dòng)信息。
  但是這些方案好像聽(tīng)起來(lái)不錯,但是時(shí)間允許你這樣做嗎?成本你承受得起嗎?那么不如用最原始的方式,雖然不那么酷但是后簡(jiǎn)單,前端只提供職位職責預覽,并提供一個(gè)人力的郵箱,大家可以向里面投遞簡(jiǎn)歷,后臺只做職位的簡(jiǎn)單發(fā)布。
  業(yè)務(wù)介紹,屬于靜態(tài)頁(yè)面,設計上去就OK了,這個(gè)不涉及到后臺。
  經(jīng)過(guò)分析和溝通,我們發(fā)現與后臺有交集的地方分別是,首頁(yè)輪播圖,新聞,招商和招聘。這時(shí)候你可以去看看其他產(chǎn)品,在這些模塊都會(huì )顯示哪些字段信息,找到你決定有用的,把他填寫(xiě)到這些功能描述中,再去進(jìn)行前臺的產(chǎn)品設計;不過(guò)有時(shí)你會(huì )發(fā)現做著(zhù)做著(zhù)發(fā)現缺了某個(gè)字段,為了避免這種事情的發(fā)生,就需要你在信息收集的過(guò)程中,多去看幾個(gè)產(chǎn)品,把他們的展示的內容都先羅列下來(lái),再做刪減。
  前臺不是今天說(shuō)的重點(diǎn),我們直接進(jìn)入后臺設計。
  我常以為后臺就是一個(gè)個(gè)的「倉庫」
  這個(gè)庫里堆放著(zhù)你想要管理的內容,后臺的搭建就是創(chuàng )建一個(gè)又一個(gè)的庫,并且將他們合理的連接起來(lái)?;乜次覀円龅臇|西,可以簡(jiǎn)單的分為四個(gè)庫,并對他們分別管理。
  新聞管理
  輪播圖管理(廣告位管理)
  加盟信息
  招聘信息管理
  知道有哪些庫了,我們需要將他們合理的組合起來(lái),形成”導航“。業(yè)務(wù)流程越長(cháng),功能越多這個(gè)組合的工作越不好,這就是為什么需要信息架構師這種職位,不過(guò)面對簡(jiǎn)單的后臺,產(chǎn)品們還是可以直接應付。
  整個(gè)后臺的界面通常會(huì )有以下模塊組成:后臺導航——管理庫(管理內容列表\管理的內容),從最大的框架到最小元素。
  后臺導航
  在我接觸的后臺導航中常見(jiàn)的有幾種。
  1. 橫向導航
  2. 縱向樹(shù)結構導航
  3. 橫向導航縱向樹(shù)結構
  橫向導航會(huì )用在后臺功能較少,層級很少的情況下,他的優(yōu)勢就是學(xué)習成本低,劣勢就是可擴展性比較差。
  
  早期的支付寶導航
  縱向樹(shù)結構導航,這個(gè)我們看的其實(shí)是比較常見(jiàn)的,很多電商網(wǎng)站的個(gè)人中心或是訂單頁(yè)面就是用的這種結構,邏輯清晰,能夠很快的找到想要找的東西。
  
  第三種比較復雜,適用于平臺功能較多,功能模塊相差很多的網(wǎng)站,會(huì )在最頂部的橫向導航放置頂級功能導航,在某個(gè)功能下用樹(shù)結構導航清晰的表現二級功能。
  
  因為這一次我們做的功能并不復雜實(shí)際上可以用橫向導航,不過(guò)因為我是根據現有后臺來(lái)制作,所以為了不增加開(kāi)發(fā)成本,所以依然延續橫向導航縱向樹(shù)結構。
  管理庫
  決定了哪種導航形式,來(lái)看看最重要的「管理庫」,面對「庫」大家記住,絕大部分情況都會(huì )有個(gè)「列表頁(yè)」,然后就是對信息的「增刪改查」,遇到商品或是輪播圖還會(huì )有上下架,顯示與隱藏的功能,基本上「庫」都會(huì )這樣的管理的。
  那么這樣想,是不是新聞的管理設計起來(lái)就容易多了。添加新聞,刪除新聞,編輯新聞,搜索新聞,再加上一個(gè)新聞列表,列表中在顯示一些需要的字段。
  OK,其實(shí)整個(gè)管理列表頁(yè)已經(jīng)躍然紙上了,之后就是正文編輯了,用戶(hù)可以從列表頁(yè)或導航中的「添加新聞」進(jìn)入,把可以實(shí)現功能的字段做到頁(yè)面上,再加上文本編輯器,一個(gè)發(fā)布按鈕,一個(gè)簡(jiǎn)單的新聞管理就搞定了。
  
  原型略簡(jiǎn)陋。。莫吐槽~
  那加盟信息怎么做呢?其實(shí)也很簡(jiǎn)單了,既然用戶(hù)需要在前臺提交信息,那么我們的后臺實(shí)際上就是一個(gè)接受信息的地方。我們讓用戶(hù)在前臺提交「姓名電話(huà)郵箱」等聯(lián)系方式,在后臺加盟管理中,利用列表頁(yè)將這些信息進(jìn)行展示,有新的加盟信息推送過(guò)來(lái)可以在導航上加一個(gè)數字角標,這個(gè)功能甚至都用不到詳情頁(yè)就能搞定。
  留個(gè)思考問(wèn)題,廣告位管理你是不是也會(huì )做了呢?思考10秒鐘,用上面的辦法思考——列表(增刪改查)+詳情(添加內容)。是不是思路變得清晰一些了?
  像門(mén)戶(hù)網(wǎng)站這種還算比較簡(jiǎn)單的了,不過(guò)為了方便管理,你可以給不同的角色賦予不同的權限,比如人力資源的同學(xué)只可以使用招聘發(fā)布,網(wǎng)站運營(yíng)人員只能使用新聞發(fā)布等等,專(zhuān)人專(zhuān)項,分工明確。
  角色劃分與權限是怎么來(lái)決定呢?
  一句話(huà),跟隨你的產(chǎn)品業(yè)務(wù)。比如拿電商而言一個(gè)商品從用戶(hù)確認下單,支付之后,在后臺會(huì )走過(guò)多少流程,我想每個(gè)公司的業(yè)務(wù)流程都會(huì )不同,但是在這個(gè)流程中一定會(huì )涉及到很多「角色」來(lái)處理訂單,而這「角色」就是你來(lái)劃分后臺權限的依據,而功能亦是從業(yè)務(wù)需求中轉化而成的。
  讓我們短暫回顧一下
  回顧一下后臺的設計,我們會(huì )發(fā)現他實(shí)際上是一種面向信息的設計,對于信息進(jìn)行審核,記錄,閱讀,操控等等。在做后臺設計時(shí)你需要對業(yè)務(wù)流程有一定了解,知道哪個(gè)環(huán)節會(huì )與系統產(chǎn)生交互,那么這個(gè)交互的點(diǎn)就是后臺設計的「庫」,我們需要對這些庫進(jìn)行管理,有時(shí)候我們還需要將這些庫與另外一些庫進(jìn)行連接,庫與庫之間互相調取數據。
  比如電商網(wǎng)站做的促銷(xiāo)管理,都會(huì )去調用「商品庫」里面的數據。想要掌握后臺產(chǎn)品的設計的核心就是處理好每個(gè)庫的劃分與整個(gè)產(chǎn)品的運作邏輯。
  先做前臺還是后臺
  這是我曾經(jīng)很糾結的問(wèn)題,不知道你是不是也是一樣,當你慢慢了解之后,這個(gè)問(wèn)題其實(shí)就不復存在了,找你熟悉的東西開(kāi)始做,這樣會(huì )讓你有我已經(jīng)完成了多少多少了的感覺(jué),而不是面對一個(gè)不熟悉的東西,痛苦的死磕,磕到對自己失去信心。
  前臺與后臺共同構成了你的產(chǎn)品,缺少一方,產(chǎn)品便無(wú)法運轉,先把業(yè)務(wù)邏輯思考清楚,你會(huì )發(fā)現「哦,這里是給用戶(hù)看的」「啊,這里是后臺要處理的」當業(yè)務(wù)邏輯走向完整之后,我想你的前后臺就都已經(jīng)設計完成了。還有一個(gè)問(wèn)題可能會(huì )比較困擾人。
  后臺設計要不要注重體驗和UI?
  我的答案是,視情況而定。這個(gè)情況有可能是時(shí)間,有可能是產(chǎn)品階段,有可能是公司目標與規模。
  有些后臺只要能實(shí)現功能就可以,有些后臺需要開(kāi)放給第三方來(lái)用,對于產(chǎn)品的“好用”程度不同,不過(guò)如果條件允許還是反復推敲下,其中的邏輯與體驗比較好。
  前一陣幫助公司對商城的賣(mài)家后臺做了體驗上的改版,因為之前都會(huì )不斷的增加功能,沒(méi)有對產(chǎn)品很好的梳理和設計,導致很多地方體驗不好或是信息架構混亂。這些細小的地方只要多多體驗,多思考就能夠找到更好的辦法。
  比如后臺有個(gè)手機認證的功能,之前只這樣的操作。
  
  未認證的用戶(hù)進(jìn)來(lái)的狀態(tài),會(huì )顯示用戶(hù)未認證,點(diǎn)擊立即認證會(huì )有個(gè)模態(tài)窗口,讓你填寫(xiě)手機號,驗證碼。
  
  OK,好像很正常,也能夠綁定,那么問(wèn)題出現在哪里呢?
  
  不夠直接,需要兩步操作。于是做了如下修改,點(diǎn)擊導航中的認證中心,直接去判斷是否綁定,如果沒(méi)有綁定,直接顯示之前彈窗中的內容,兩步變一步,簡(jiǎn)單了許多吧。
  尾巴
  不知道你現在,是不是已經(jīng)知道后臺是什么,給誰(shuí)用,如何設計了。最近在研究拼車(chē)產(chǎn)品,不知道你有沒(méi)有用過(guò)嘀嘀順風(fēng)車(chē),如果沒(méi)用過(guò)你可以馬上體驗一下,然后思考一下,他的哪些東西會(huì )在后臺出現呢?
  PS:轉發(fā)此篇文章到朋友圈或者是產(chǎn)品經(jīng)理群,并截圖發(fā)給微信chanpin628,可以找我領(lǐng)取一份阿里需求管理模板。

如何設計出色的網(wǎng)站后臺原型

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2022-06-21 11:43 ? 來(lái)自相關(guān)話(huà)題

  如何設計出色的網(wǎng)站后臺原型
  如何設計后臺管理系統原型,我理解的是,針對互聯(lián)網(wǎng)產(chǎn)品范疇的后臺管理系統。即維護用戶(hù)、管理社區、跟蹤分析用戶(hù)行為并進(jìn)行數據統計分析等。我當初搭建后臺產(chǎn)品的時(shí)候也遇到過(guò)很多疑問(wèn),正好借著(zhù)這個(gè)回答來(lái)個(gè)梳理和總結。
  這里不討論涉及供應鏈系統的后臺產(chǎn)品,如電商、團購等,美團O2O供應鏈系統架構設計解析 里面涉及復雜的交易流程優(yōu)化。
  為什么說(shuō)設計后臺產(chǎn)品很難?看看這個(gè)問(wèn)題的回答。
  難參照競品。用戶(hù)只要大量地使用過(guò)別的產(chǎn)品,便會(huì )建立起相應的心智模型。然而后臺對于很多人而言卻非常陌生,毫無(wú)心智模型可言,也難以做競品調研?!崍粤x
  也就是說(shuō)面向大眾用戶(hù)的前臺產(chǎn)品,大家培養起了使用習慣,對功能有一定程度的理解,見(jiàn)過(guò)的模式足夠多,能夠建立起一定的產(chǎn)品模型,也容易找到參照物去模仿。而且,做后臺產(chǎn)品需要非常懂業(yè)務(wù),考驗產(chǎn)品經(jīng)理的核心競爭力——業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力。推薦看:為什么說(shuō)好的產(chǎn)品經(jīng)理一將難求? – 蒸汽機的回答
  開(kāi)始后臺產(chǎn)品設計之前,先找找相類(lèi)似的產(chǎn)品,雖然我們無(wú)法去觀(guān)照其他產(chǎn)品的后臺都是長(cháng)什么樣的,但是現在有不少提供標準化數據分析的SaaS服務(wù)公司,如友盟、諸葛IO。但是為什么我們很難直接采用這些公司的產(chǎn)品來(lái)管理和維護運營(yíng)?軟件運營(yíng)(SaaS)模式的核心是標準化架構+定制化需求,比如體系已經(jīng)成熟的ERP、CRM、OA等管理系統涉及審批流程、財務(wù)審計等更容易標準化生產(chǎn)。而互聯(lián)網(wǎng)產(chǎn)品的業(yè)務(wù)各式各樣,變化不斷,還會(huì )隨時(shí)出現一種全新的業(yè)務(wù)模式,所以后臺產(chǎn)品做到標準化有一定難度。
  我們先看看,類(lèi)似的數據分析平臺。
  百度統計——最大的中文網(wǎng)站分析平臺
  諸葛IO——精細化數據分析工具
  友盟_專(zhuān)業(yè)的移動(dòng)開(kāi)發(fā)者服務(wù)平臺
  TalkingData-移動(dòng).數據.價(jià)值
  蓮子數據首頁(yè)-lotuseed-專(zhuān)業(yè)的移動(dòng)數據分析服務(wù)平臺
  騰訊云分析
  面對公司的社區型產(chǎn)品和運營(yíng)人員提出的需求,發(fā)現以上平臺都難以滿(mǎn)足后臺管理運營(yíng)。但是拆解分析里面的業(yè)務(wù)邏輯能幫助你理解后臺產(chǎn)品的模塊結構。
  
  
  
  
  后臺產(chǎn)品的功能里最容易標準化的就是用戶(hù)分析,新增用戶(hù)、留存率、活躍度等,所以我在設計后臺產(chǎn)品的運營(yíng)數據上很大程度上參考了這些數據分析的結構和模式。而市面上的數據分析工具,最大的問(wèn)題在于,我所知道的工具里還沒(méi)有任何一款可以整合統計不同渠道的數據,也就是說(shuō)PC、H5、iOS、Android分別進(jìn)行統計,假如統計今天多少用戶(hù)進(jìn)行了“點(diǎn)贊”的操作,這個(gè)用戶(hù)行為跟蹤是無(wú)法進(jìn)行全渠道分析,那么分析就被割裂開(kāi)來(lái),難以形成系統。并且大部分是針對移動(dòng)應用,網(wǎng)站分析這一塊只有百度做得相對詳細點(diǎn)。后臺產(chǎn)品是根據業(yè)務(wù)情況定制化需求的,游戲應用、O2O、電商、垂直社區、社交產(chǎn)品都會(huì )有形成巨大差異的后臺產(chǎn)品模型。
  針對我負責的垂直社區來(lái)進(jìn)行下一步分析,結合前臺產(chǎn)品的整體功能,我確定了后臺產(chǎn)品的模型架構分為三大模塊:運營(yíng)數據分析、社區管理、交易中心。運營(yíng)數據分析是用來(lái)監測用戶(hù)和內容的變化趨勢;社區管理是運營(yíng)人員對用戶(hù)和內容進(jìn)行日常的維護和管理;交易中心是用來(lái)記錄交易明細和收支變化趨勢的(社區有打賞和紅包功能)。
  
  運營(yíng)數據分析包括用戶(hù)分析、內容分析和事件分析,其中有用戶(hù)類(lèi)別和渠道兩個(gè)維度。就是說(shuō)每個(gè)分析里面可以針對不同的維度,比如除去內部運營(yíng)人員后今天產(chǎn)生多少點(diǎn)贊數,比如在iOS上今天產(chǎn)生多少點(diǎn)贊數。以下是我考慮功能結構的思路(下面圖片涉及核心業(yè)務(wù)數據將會(huì )模糊處理):
  用戶(hù)分析→用戶(hù)追蹤→新增趨勢+活躍度+留存率+用戶(hù)特征
  內容分析→用戶(hù)生產(chǎn)內容追蹤→新增趨勢+類(lèi)別情況
  事件與轉化→用戶(hù)行為追蹤→事件趨勢+事件交互+事件轉化
  
  社區管理主要包括用戶(hù)管理、內容維護、事件設置。社區管理在一定程度上影響運營(yíng)數據的變化。比如,給用戶(hù)添加標簽生成用戶(hù)畫(huà)像。
  用戶(hù)管理→用戶(hù)特征+用戶(hù)分類(lèi)→用戶(hù)分析
  內容維護→用戶(hù)生產(chǎn)內容管理→分類(lèi)管理+內容監控
  事件設置→用戶(hù)行為管理
  
  交易中心包括總資產(chǎn)概況、交易明細、交易分析,結構比較簡(jiǎn)單,用來(lái)管理社區的財務(wù)和監控財務(wù)數據,與電商平臺復雜的財務(wù)系統相去甚遠。
  
  以上僅僅是提供一種后臺產(chǎn)品模型架構的思路,后臺產(chǎn)品主要由前臺產(chǎn)品模型和業(yè)務(wù)模式?jīng)Q定,不同種類(lèi)的互聯(lián)網(wǎng)產(chǎn)品的后臺可能千差萬(wàn)別,勿直接套用。
  說(shuō)了那么多,是想說(shuō)明后臺產(chǎn)品的設計非常有挑戰性,雖然由于多種原因不像前臺產(chǎn)品那樣是香餑餑,但絕對是個(gè)很好的鍛煉機會(huì )。產(chǎn)品人除了把控流程邏輯和功能細節外,產(chǎn)品模型架構能力來(lái)自于業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力,因為你的思考維度需要跳出單線(xiàn)程的邏輯或單一功能的交互,要進(jìn)化成梳理多線(xiàn)程之間的復雜邏輯或多個(gè)功能之間的交互。
  
  好了,最后貼個(gè)干貨出來(lái),記錄這一次挑戰。
  產(chǎn)品結構
  
  產(chǎn)品原型
  最終產(chǎn)出
   查看全部

  如何設計出色的網(wǎng)站后臺原型
  如何設計后臺管理系統原型,我理解的是,針對互聯(lián)網(wǎng)產(chǎn)品范疇的后臺管理系統。即維護用戶(hù)、管理社區、跟蹤分析用戶(hù)行為并進(jìn)行數據統計分析等。我當初搭建后臺產(chǎn)品的時(shí)候也遇到過(guò)很多疑問(wèn),正好借著(zhù)這個(gè)回答來(lái)個(gè)梳理和總結。
  這里不討論涉及供應鏈系統的后臺產(chǎn)品,如電商、團購等,美團O2O供應鏈系統架構設計解析 里面涉及復雜的交易流程優(yōu)化。
  為什么說(shuō)設計后臺產(chǎn)品很難?看看這個(gè)問(wèn)題的回答。
  難參照競品。用戶(hù)只要大量地使用過(guò)別的產(chǎn)品,便會(huì )建立起相應的心智模型。然而后臺對于很多人而言卻非常陌生,毫無(wú)心智模型可言,也難以做競品調研?!崍粤x
  也就是說(shuō)面向大眾用戶(hù)的前臺產(chǎn)品,大家培養起了使用習慣,對功能有一定程度的理解,見(jiàn)過(guò)的模式足夠多,能夠建立起一定的產(chǎn)品模型,也容易找到參照物去模仿。而且,做后臺產(chǎn)品需要非常懂業(yè)務(wù),考驗產(chǎn)品經(jīng)理的核心競爭力——業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力。推薦看:為什么說(shuō)好的產(chǎn)品經(jīng)理一將難求? – 蒸汽機的回答
  開(kāi)始后臺產(chǎn)品設計之前,先找找相類(lèi)似的產(chǎn)品,雖然我們無(wú)法去觀(guān)照其他產(chǎn)品的后臺都是長(cháng)什么樣的,但是現在有不少提供標準化數據分析的SaaS服務(wù)公司,如友盟、諸葛IO。但是為什么我們很難直接采用這些公司的產(chǎn)品來(lái)管理和維護運營(yíng)?軟件運營(yíng)(SaaS)模式的核心是標準化架構+定制化需求,比如體系已經(jīng)成熟的ERP、CRM、OA等管理系統涉及審批流程、財務(wù)審計等更容易標準化生產(chǎn)。而互聯(lián)網(wǎng)產(chǎn)品的業(yè)務(wù)各式各樣,變化不斷,還會(huì )隨時(shí)出現一種全新的業(yè)務(wù)模式,所以后臺產(chǎn)品做到標準化有一定難度。
  我們先看看,類(lèi)似的數據分析平臺。
  百度統計——最大的中文網(wǎng)站分析平臺
  諸葛IO——精細化數據分析工具
  友盟_專(zhuān)業(yè)的移動(dòng)開(kāi)發(fā)者服務(wù)平臺
  TalkingData-移動(dòng).數據.價(jià)值
  蓮子數據首頁(yè)-lotuseed-專(zhuān)業(yè)的移動(dòng)數據分析服務(wù)平臺
  騰訊云分析
  面對公司的社區型產(chǎn)品和運營(yíng)人員提出的需求,發(fā)現以上平臺都難以滿(mǎn)足后臺管理運營(yíng)。但是拆解分析里面的業(yè)務(wù)邏輯能幫助你理解后臺產(chǎn)品的模塊結構。
  
  
  
  
  后臺產(chǎn)品的功能里最容易標準化的就是用戶(hù)分析,新增用戶(hù)、留存率、活躍度等,所以我在設計后臺產(chǎn)品的運營(yíng)數據上很大程度上參考了這些數據分析的結構和模式。而市面上的數據分析工具,最大的問(wèn)題在于,我所知道的工具里還沒(méi)有任何一款可以整合統計不同渠道的數據,也就是說(shuō)PC、H5、iOS、Android分別進(jìn)行統計,假如統計今天多少用戶(hù)進(jìn)行了“點(diǎn)贊”的操作,這個(gè)用戶(hù)行為跟蹤是無(wú)法進(jìn)行全渠道分析,那么分析就被割裂開(kāi)來(lái),難以形成系統。并且大部分是針對移動(dòng)應用,網(wǎng)站分析這一塊只有百度做得相對詳細點(diǎn)。后臺產(chǎn)品是根據業(yè)務(wù)情況定制化需求的,游戲應用、O2O、電商、垂直社區、社交產(chǎn)品都會(huì )有形成巨大差異的后臺產(chǎn)品模型。
  針對我負責的垂直社區來(lái)進(jìn)行下一步分析,結合前臺產(chǎn)品的整體功能,我確定了后臺產(chǎn)品的模型架構分為三大模塊:運營(yíng)數據分析、社區管理、交易中心。運營(yíng)數據分析是用來(lái)監測用戶(hù)和內容的變化趨勢;社區管理是運營(yíng)人員對用戶(hù)和內容進(jìn)行日常的維護和管理;交易中心是用來(lái)記錄交易明細和收支變化趨勢的(社區有打賞和紅包功能)。
  
  運營(yíng)數據分析包括用戶(hù)分析、內容分析和事件分析,其中有用戶(hù)類(lèi)別和渠道兩個(gè)維度。就是說(shuō)每個(gè)分析里面可以針對不同的維度,比如除去內部運營(yíng)人員后今天產(chǎn)生多少點(diǎn)贊數,比如在iOS上今天產(chǎn)生多少點(diǎn)贊數。以下是我考慮功能結構的思路(下面圖片涉及核心業(yè)務(wù)數據將會(huì )模糊處理):
  用戶(hù)分析→用戶(hù)追蹤→新增趨勢+活躍度+留存率+用戶(hù)特征
  內容分析→用戶(hù)生產(chǎn)內容追蹤→新增趨勢+類(lèi)別情況
  事件與轉化→用戶(hù)行為追蹤→事件趨勢+事件交互+事件轉化
  
  社區管理主要包括用戶(hù)管理、內容維護、事件設置。社區管理在一定程度上影響運營(yíng)數據的變化。比如,給用戶(hù)添加標簽生成用戶(hù)畫(huà)像。
  用戶(hù)管理→用戶(hù)特征+用戶(hù)分類(lèi)→用戶(hù)分析
  內容維護→用戶(hù)生產(chǎn)內容管理→分類(lèi)管理+內容監控
  事件設置→用戶(hù)行為管理
  
  交易中心包括總資產(chǎn)概況、交易明細、交易分析,結構比較簡(jiǎn)單,用來(lái)管理社區的財務(wù)和監控財務(wù)數據,與電商平臺復雜的財務(wù)系統相去甚遠。
  
  以上僅僅是提供一種后臺產(chǎn)品模型架構的思路,后臺產(chǎn)品主要由前臺產(chǎn)品模型和業(yè)務(wù)模式?jīng)Q定,不同種類(lèi)的互聯(lián)網(wǎng)產(chǎn)品的后臺可能千差萬(wàn)別,勿直接套用。
  說(shuō)了那么多,是想說(shuō)明后臺產(chǎn)品的設計非常有挑戰性,雖然由于多種原因不像前臺產(chǎn)品那樣是香餑餑,但絕對是個(gè)很好的鍛煉機會(huì )。產(chǎn)品人除了把控流程邏輯和功能細節外,產(chǎn)品模型架構能力來(lái)自于業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力,因為你的思考維度需要跳出單線(xiàn)程的邏輯或單一功能的交互,要進(jìn)化成梳理多線(xiàn)程之間的復雜邏輯或多個(gè)功能之間的交互。
  
  好了,最后貼個(gè)干貨出來(lái),記錄這一次挑戰。
  產(chǎn)品結構
  
  產(chǎn)品原型
  最終產(chǎn)出
  

用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2022-06-21 01:00 ? 來(lái)自相關(guān)話(huà)題

  用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)
  一、短視頻講解
  【問(wèn)股模塊說(shuō)明】
  目前產(chǎn)品經(jīng)理從業(yè)者,都在以移動(dòng)端為主、后臺為次。產(chǎn)品經(jīng)理隨著(zhù)行業(yè)的特殊性,也從無(wú)到有。產(chǎn)品經(jīng)理逐漸成為一個(gè)以行業(yè)主導、前后端分類(lèi)劃分的一個(gè)典“研發(fā)人員”。
  請注意,這里我的用詞是—研發(fā)。對,產(chǎn)品經(jīng)理已經(jīng)不折不扣成為研發(fā)的一個(gè)成語(yǔ)。軟件部、研發(fā)部、架構部等等....無(wú)數的PM在這里孕育而生。
  
  【產(chǎn)品經(jīng)理行業(yè)分類(lèi)】
  目前我從事的是移動(dòng)端產(chǎn)品設計,因此今天分享的是關(guān)于在移動(dòng)端設計的同時(shí),如何進(jìn)行后臺設計?
  二、后臺產(chǎn)品設計——搞清移動(dòng)端需求
  當然在這里,-1-1歲的產(chǎn)品朋友可能會(huì )問(wèn)。產(chǎn)品既然有分端工作,那KEVIN怎么會(huì )說(shuō)后臺設計?你不是從事移動(dòng)端的嗎?
  答案便是,根據公司的戰略布局不同、產(chǎn)品人員的不同,公司的產(chǎn)品經(jīng)理可能是一人全攔。對于目前我從事的工作來(lái)說(shuō),公司產(chǎn)品經(jīng)理不止一個(gè),因此產(chǎn)品的是以模塊進(jìn)行區分,因此剛剛伙伴們可能會(huì )遇到的第一個(gè)困惑,就可能迎刃而解。一個(gè)功能模塊如訂單模塊,那么在前端站前的情況。
  
  【前端與后臺的不同,訂單的出發(fā)點(diǎn)不同】
  以一個(gè)案例來(lái)說(shuō)明,對于前后端這里我拿目前正在負責的一個(gè)模塊:?jiǎn)?wèn)股。
  這個(gè)模塊是證券類(lèi)金融產(chǎn)品的一個(gè)典型模塊,在金融產(chǎn)品中,問(wèn)股的意義其實(shí)就是以公司資源的背景下提供專(zhuān)業(yè)問(wèn)答,換句話(huà)說(shuō)也就是PGC。
  問(wèn)股的常見(jiàn)結構:
  
  【常見(jiàn)的問(wèn)股結構】
  相信以上的結構,問(wèn)股的模塊功能定位,各位非金融行業(yè)的伙伴們也應該能知曉相應的功能含義。
  以這個(gè)模塊,我就以目前公司產(chǎn)品的競品——愛(ài)投顧,以這款產(chǎn)品來(lái)分享如何通過(guò)移動(dòng)端來(lái)考慮后臺設計。
  
  【愛(ài)投顧功能BANNER】
  拋開(kāi)產(chǎn)品體驗不說(shuō),這里我們直接直奔主題。首先我們要考慮的是問(wèn)股這個(gè)模塊他的入口是在哪里?
  關(guān)注否有有運營(yíng)需求
  入口與后臺的關(guān)聯(lián)是沒(méi)有的,但是在運營(yíng)之外的情況下。
  這里我要說(shuō)明的是,問(wèn)股的入口不管放在哪里。他的功能模塊都是A,你放在首頁(yè)也好,還是二級頁(yè)面也好,單獨的模塊功能不會(huì )受影響。
  但在有運營(yíng)的情況下,就需要考慮后臺的設計;相關(guān)的運營(yíng)可能有以下:
  1.優(yōu)惠券——首次A模塊使用是否與優(yōu)惠券的聯(lián)動(dòng)
  2.積分體系——首次A模塊使用是否與積分體系聯(lián)動(dòng)
  .....
  以上列舉出來(lái)的是相關(guān)與A模塊的運營(yíng)方式,后臺會(huì )涉及的便有以下問(wèn)題:
  1.A模塊中對于優(yōu)惠券的管理?
  2.積分體系在A(yíng)模塊中的積分體系設計?
  ....
  移動(dòng)端設計FIRST
  拿到了需求,比如LEARDER說(shuō)這次我需要產(chǎn)品迭代,把問(wèn)股做好一些?;蛘哌\營(yíng)方提供問(wèn)股的模塊需要增加回答中圖文內容....等等,將需求整合在一起,我們首先要開(kāi)始的是移動(dòng)端設計FIRST。
  
  【愛(ài)投顧問(wèn)股頁(yè)面】
  問(wèn)股的頁(yè)面組成,是由其問(wèn)股的結構所決定的,結合運營(yíng)的需求。我們需要將問(wèn)股規劃為:
  
  【內容規劃】
  關(guān)于需求管理
  有時(shí)候需求不一定明確,有的團隊2周一迭代,有的是1個(gè)月一迭代。根據產(chǎn)品的生命周期,我們將迭代的速度也不同。為此,在沒(méi)有需求卻要求迭代該模塊或有不明確的需求迭代該模塊的時(shí)候,對于競品的調研與數據分析則是重點(diǎn),在這里我直接就跳過(guò)。將以上的內容規劃,作為我們這次做的一次迭代需求
  
  【常見(jiàn)的產(chǎn)品迭代命名】
  1.問(wèn)股的內容展示
  問(wèn)股模塊的結構是以UGC與PGC內容為主,UGC為用戶(hù)提的問(wèn)題,PGC為回答者的回答。產(chǎn)品對于用戶(hù)來(lái)說(shuō),問(wèn)題與問(wèn)答的答案為主要關(guān)注的內容,其次對于老師(這里我簡(jiǎn)稱(chēng)老師)的尋找和咨詢(xún),這里作為用戶(hù)核心需求一。
  2.提問(wèn)與回答
  既然提到咨詢(xún),我們可以首先能跟進(jìn)用戶(hù)的不同分類(lèi),將咨詢(xún)分為:普通咨詢(xún)、高級咨詢(xún)、個(gè)性咨詢(xún)...,這里是用戶(hù)的核心需求二。
  3.運營(yíng)推薦
  運營(yíng)推薦,由產(chǎn)品功能本身決定。簡(jiǎn)單來(lái)說(shuō),運營(yíng)將該功能的玩法進(jìn)行推廣,那么從第一部分,我們可以看到問(wèn)股的內容展示既然是用戶(hù)的核心需求一,因此運營(yíng)推薦就應該從用戶(hù)在問(wèn)股的操作路徑進(jìn)行考慮,以留存、促活、拉新為出發(fā)點(diǎn)。
  在問(wèn)股模塊中,用戶(hù)操作路徑:瀏覽、提問(wèn)、點(diǎn)贊。
  毫無(wú)疑問(wèn),提問(wèn)與瀏覽成了我們與用戶(hù)最可能的運營(yíng)結合點(diǎn)。最后考慮瀏覽是否具有垂直粘性,相比之下,我選擇了提問(wèn)作為運營(yíng)的推薦點(diǎn)。
  在提問(wèn)中,用戶(hù)接觸的是PGC,因此在產(chǎn)品設計,如何放大PGC,成了促活的關(guān)鍵。在問(wèn)股中,我們可以得到的是老手的回答次數、以及老師相關(guān)服務(wù)的數據。但在問(wèn)股中,我采用的是將問(wèn)答作為排序,將老師進(jìn)行排名,讓用戶(hù)可以知道7日內活躍的老師,促進(jìn)用戶(hù)去提問(wèn)。
  
  【排名可以刺激PGC】
  老師的收益與盈利點(diǎn),可以通過(guò)排名的機制去刺激PGC。將平臺中的PGC以7日內為時(shí)間段進(jìn)行排序。PGC的提高,毫無(wú)疑問(wèn)會(huì )促進(jìn)UGC的提升。
  那么在移動(dòng)端的展示中,我將以上3部分考慮的結果歸納為:
  
  【移動(dòng)端功能具體化】
  我們具體后,相應的原型就可以通過(guò)上面進(jìn)行展示。從移動(dòng)端顯示的內容,我們可以梳理為:老師推薦、活躍老師排行、問(wèn)股列表、瀏覽的BANNER
  三、后臺產(chǎn)品設計
  現在我們就進(jìn)入后臺產(chǎn)品設計環(huán)節中,對于有經(jīng)驗的PM來(lái)說(shuō),其實(shí)這個(gè)順序不是一定的,可以按照自己的經(jīng)驗程度。但對于0-1歲的產(chǎn)品經(jīng)理來(lái)說(shuō),很難說(shuō)一開(kāi)始就知道移動(dòng)端的功能點(diǎn),著(zhù)手后臺的產(chǎn)品設計。因為后臺的產(chǎn)品設計中,沒(méi)有華麗的交互、沒(méi)有華麗布界面布局,重要的是產(chǎn)品邏輯。
  說(shuō)道這里,首先給大家分享一個(gè)后臺的模板,這個(gè)模板也是我用的比較多的。后臺大多數是以橫向和縱向的分布方式進(jìn)行排列。為什么會(huì )這樣?我想說(shuō)第一是長(cháng)期以來(lái)人們的使用習慣,第二就是人的焦點(diǎn)注視始終是在左上開(kāi)始。
  
  【后臺設計模板】
  不管是數據產(chǎn)品經(jīng)理,還是各行各業(yè)的產(chǎn)品經(jīng)理,后臺設計都可以套用這種橫縱的模板。
  對于問(wèn)股來(lái)說(shuō),我們剛才梳理的第一個(gè)就是關(guān)于問(wèn)股列表。
  問(wèn)股列表,需要考慮的是后臺人員是的角色,角色決定了操作權限。這里我以全局后臺人員(最高權限人員)的角色來(lái)設計。
  問(wèn)股列表,根據我們移動(dòng)端的需求,我們需要能夠隨時(shí)刪除、查看問(wèn)股的內容、時(shí)間、發(fā)布人員、回答人員、問(wèn)股數量的記錄、問(wèn)股的類(lèi)型(付費與普通)。
  這就決定了我在設計后臺中,所需要用的字段。列表的字段正是與前端統統呼應,當然有時(shí)候會(huì )碰到字段太多,這個(gè)時(shí)候PM需要考慮將后臺的重要字段顯示在列表上,方便相應角色去處理,其他不重要但必須有的字段可以作為單獨的查看詳情方式進(jìn)行打開(kāi) 查看全部

  用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)
  一、短視頻講解
  【問(wèn)股模塊說(shuō)明】
  目前產(chǎn)品經(jīng)理從業(yè)者,都在以移動(dòng)端為主、后臺為次。產(chǎn)品經(jīng)理隨著(zhù)行業(yè)的特殊性,也從無(wú)到有。產(chǎn)品經(jīng)理逐漸成為一個(gè)以行業(yè)主導、前后端分類(lèi)劃分的一個(gè)典“研發(fā)人員”。
  請注意,這里我的用詞是—研發(fā)。對,產(chǎn)品經(jīng)理已經(jīng)不折不扣成為研發(fā)的一個(gè)成語(yǔ)。軟件部、研發(fā)部、架構部等等....無(wú)數的PM在這里孕育而生。
  
  【產(chǎn)品經(jīng)理行業(yè)分類(lèi)】
  目前我從事的是移動(dòng)端產(chǎn)品設計,因此今天分享的是關(guān)于在移動(dòng)端設計的同時(shí),如何進(jìn)行后臺設計?
  二、后臺產(chǎn)品設計——搞清移動(dòng)端需求
  當然在這里,-1-1歲的產(chǎn)品朋友可能會(huì )問(wèn)。產(chǎn)品既然有分端工作,那KEVIN怎么會(huì )說(shuō)后臺設計?你不是從事移動(dòng)端的嗎?
  答案便是,根據公司的戰略布局不同、產(chǎn)品人員的不同,公司的產(chǎn)品經(jīng)理可能是一人全攔。對于目前我從事的工作來(lái)說(shuō),公司產(chǎn)品經(jīng)理不止一個(gè),因此產(chǎn)品的是以模塊進(jìn)行區分,因此剛剛伙伴們可能會(huì )遇到的第一個(gè)困惑,就可能迎刃而解。一個(gè)功能模塊如訂單模塊,那么在前端站前的情況。
  
  【前端與后臺的不同,訂單的出發(fā)點(diǎn)不同】
  以一個(gè)案例來(lái)說(shuō)明,對于前后端這里我拿目前正在負責的一個(gè)模塊:?jiǎn)?wèn)股。
  這個(gè)模塊是證券類(lèi)金融產(chǎn)品的一個(gè)典型模塊,在金融產(chǎn)品中,問(wèn)股的意義其實(shí)就是以公司資源的背景下提供專(zhuān)業(yè)問(wèn)答,換句話(huà)說(shuō)也就是PGC。
  問(wèn)股的常見(jiàn)結構:
  
  【常見(jiàn)的問(wèn)股結構】
  相信以上的結構,問(wèn)股的模塊功能定位,各位非金融行業(yè)的伙伴們也應該能知曉相應的功能含義。
  以這個(gè)模塊,我就以目前公司產(chǎn)品的競品——愛(ài)投顧,以這款產(chǎn)品來(lái)分享如何通過(guò)移動(dòng)端來(lái)考慮后臺設計。
  
  【愛(ài)投顧功能BANNER】
  拋開(kāi)產(chǎn)品體驗不說(shuō),這里我們直接直奔主題。首先我們要考慮的是問(wèn)股這個(gè)模塊他的入口是在哪里?
  關(guān)注否有有運營(yíng)需求
  入口與后臺的關(guān)聯(lián)是沒(méi)有的,但是在運營(yíng)之外的情況下。
  這里我要說(shuō)明的是,問(wèn)股的入口不管放在哪里。他的功能模塊都是A,你放在首頁(yè)也好,還是二級頁(yè)面也好,單獨的模塊功能不會(huì )受影響。
  但在有運營(yíng)的情況下,就需要考慮后臺的設計;相關(guān)的運營(yíng)可能有以下:
  1.優(yōu)惠券——首次A模塊使用是否與優(yōu)惠券的聯(lián)動(dòng)
  2.積分體系——首次A模塊使用是否與積分體系聯(lián)動(dòng)
  .....
  以上列舉出來(lái)的是相關(guān)與A模塊的運營(yíng)方式,后臺會(huì )涉及的便有以下問(wèn)題:
  1.A模塊中對于優(yōu)惠券的管理?
  2.積分體系在A(yíng)模塊中的積分體系設計?
  ....
  移動(dòng)端設計FIRST
  拿到了需求,比如LEARDER說(shuō)這次我需要產(chǎn)品迭代,把問(wèn)股做好一些?;蛘哌\營(yíng)方提供問(wèn)股的模塊需要增加回答中圖文內容....等等,將需求整合在一起,我們首先要開(kāi)始的是移動(dòng)端設計FIRST。
  
  【愛(ài)投顧問(wèn)股頁(yè)面】
  問(wèn)股的頁(yè)面組成,是由其問(wèn)股的結構所決定的,結合運營(yíng)的需求。我們需要將問(wèn)股規劃為:
  
  【內容規劃】
  關(guān)于需求管理
  有時(shí)候需求不一定明確,有的團隊2周一迭代,有的是1個(gè)月一迭代。根據產(chǎn)品的生命周期,我們將迭代的速度也不同。為此,在沒(méi)有需求卻要求迭代該模塊或有不明確的需求迭代該模塊的時(shí)候,對于競品的調研與數據分析則是重點(diǎn),在這里我直接就跳過(guò)。將以上的內容規劃,作為我們這次做的一次迭代需求
  
  【常見(jiàn)的產(chǎn)品迭代命名】
  1.問(wèn)股的內容展示
  問(wèn)股模塊的結構是以UGC與PGC內容為主,UGC為用戶(hù)提的問(wèn)題,PGC為回答者的回答。產(chǎn)品對于用戶(hù)來(lái)說(shuō),問(wèn)題與問(wèn)答的答案為主要關(guān)注的內容,其次對于老師(這里我簡(jiǎn)稱(chēng)老師)的尋找和咨詢(xún),這里作為用戶(hù)核心需求一。
  2.提問(wèn)與回答
  既然提到咨詢(xún),我們可以首先能跟進(jìn)用戶(hù)的不同分類(lèi),將咨詢(xún)分為:普通咨詢(xún)、高級咨詢(xún)、個(gè)性咨詢(xún)...,這里是用戶(hù)的核心需求二。
  3.運營(yíng)推薦
  運營(yíng)推薦,由產(chǎn)品功能本身決定。簡(jiǎn)單來(lái)說(shuō),運營(yíng)將該功能的玩法進(jìn)行推廣,那么從第一部分,我們可以看到問(wèn)股的內容展示既然是用戶(hù)的核心需求一,因此運營(yíng)推薦就應該從用戶(hù)在問(wèn)股的操作路徑進(jìn)行考慮,以留存、促活、拉新為出發(fā)點(diǎn)。
  在問(wèn)股模塊中,用戶(hù)操作路徑:瀏覽、提問(wèn)、點(diǎn)贊。
  毫無(wú)疑問(wèn),提問(wèn)與瀏覽成了我們與用戶(hù)最可能的運營(yíng)結合點(diǎn)。最后考慮瀏覽是否具有垂直粘性,相比之下,我選擇了提問(wèn)作為運營(yíng)的推薦點(diǎn)。
  在提問(wèn)中,用戶(hù)接觸的是PGC,因此在產(chǎn)品設計,如何放大PGC,成了促活的關(guān)鍵。在問(wèn)股中,我們可以得到的是老手的回答次數、以及老師相關(guān)服務(wù)的數據。但在問(wèn)股中,我采用的是將問(wèn)答作為排序,將老師進(jìn)行排名,讓用戶(hù)可以知道7日內活躍的老師,促進(jìn)用戶(hù)去提問(wèn)。
  
  【排名可以刺激PGC】
  老師的收益與盈利點(diǎn),可以通過(guò)排名的機制去刺激PGC。將平臺中的PGC以7日內為時(shí)間段進(jìn)行排序。PGC的提高,毫無(wú)疑問(wèn)會(huì )促進(jìn)UGC的提升。
  那么在移動(dòng)端的展示中,我將以上3部分考慮的結果歸納為:
  
  【移動(dòng)端功能具體化】
  我們具體后,相應的原型就可以通過(guò)上面進(jìn)行展示。從移動(dòng)端顯示的內容,我們可以梳理為:老師推薦、活躍老師排行、問(wèn)股列表、瀏覽的BANNER
  三、后臺產(chǎn)品設計
  現在我們就進(jìn)入后臺產(chǎn)品設計環(huán)節中,對于有經(jīng)驗的PM來(lái)說(shuō),其實(shí)這個(gè)順序不是一定的,可以按照自己的經(jīng)驗程度。但對于0-1歲的產(chǎn)品經(jīng)理來(lái)說(shuō),很難說(shuō)一開(kāi)始就知道移動(dòng)端的功能點(diǎn),著(zhù)手后臺的產(chǎn)品設計。因為后臺的產(chǎn)品設計中,沒(méi)有華麗的交互、沒(méi)有華麗布界面布局,重要的是產(chǎn)品邏輯。
  說(shuō)道這里,首先給大家分享一個(gè)后臺的模板,這個(gè)模板也是我用的比較多的。后臺大多數是以橫向和縱向的分布方式進(jìn)行排列。為什么會(huì )這樣?我想說(shuō)第一是長(cháng)期以來(lái)人們的使用習慣,第二就是人的焦點(diǎn)注視始終是在左上開(kāi)始。
  
  【后臺設計模板】
  不管是數據產(chǎn)品經(jīng)理,還是各行各業(yè)的產(chǎn)品經(jīng)理,后臺設計都可以套用這種橫縱的模板。
  對于問(wèn)股來(lái)說(shuō),我們剛才梳理的第一個(gè)就是關(guān)于問(wèn)股列表。
  問(wèn)股列表,需要考慮的是后臺人員是的角色,角色決定了操作權限。這里我以全局后臺人員(最高權限人員)的角色來(lái)設計。
  問(wèn)股列表,根據我們移動(dòng)端的需求,我們需要能夠隨時(shí)刪除、查看問(wèn)股的內容、時(shí)間、發(fā)布人員、回答人員、問(wèn)股數量的記錄、問(wèn)股的類(lèi)型(付費與普通)。
  這就決定了我在設計后臺中,所需要用的字段。列表的字段正是與前端統統呼應,當然有時(shí)候會(huì )碰到字段太多,這個(gè)時(shí)候PM需要考慮將后臺的重要字段顯示在列表上,方便相應角色去處理,其他不重要但必須有的字段可以作為單獨的查看詳情方式進(jìn)行打開(kāi)

后臺系統:產(chǎn)品設計“七步法”

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 112 次瀏覽 ? 2022-06-19 09:01 ? 來(lái)自相關(guān)話(huà)題

  后臺系統:產(chǎn)品設計“七步法”
  后臺產(chǎn)品設計是一塊讓產(chǎn)品經(jīng)理難啃的硬骨頭,因為它業(yè)務(wù)復雜、數據龐大、邏輯縝密。
  1.了解后臺
  在做后臺產(chǎn)品設計之前,我們先從硬幣的三個(gè)面了解一下后臺系統。從硬幣正面看后臺:可以減輕運營(yíng)的壓力,注重數據之間的流轉,側重功能模塊的實(shí)現。從硬幣反面看后臺:設計風(fēng)格過(guò)于單一,業(yè)務(wù)邏輯復雜,缺少對應的系統說(shuō)明。從硬幣側面看后臺:數據處理準確有效,操作流程簡(jiǎn)單,系統簡(jiǎn)單好用。
  
  后臺系統就是給用戶(hù)分配一個(gè)有某些權限(菜單級)的角色,對特定數據(數據級)進(jìn)行增刪改查導(功能級)的管理系統。
  了解后臺必須熟悉前端業(yè)務(wù),前端偏向用戶(hù)(功能操作)查看信息、提交信息,而后臺側重管理員(數據處理)創(chuàng )建信息、處理信息,而服務(wù)器(信息傳遞)主要是請求信息、響應信息。
  
  常見(jiàn)后臺系統包括:內容管理系統CMS,企業(yè)管理系統ERP、客戶(hù)關(guān)系管理系統CRM、商城管理系統MMS,辦公自動(dòng)化系統OA等。
  一個(gè)好的后臺系統會(huì )有以下幾個(gè)特點(diǎn):1.系統目標明確:輔助用戶(hù)自主完成任務(wù),減輕運營(yíng)壓力。2.用戶(hù)需求明確:需求一般來(lái)至是企業(yè)內部的領(lǐng)導、團隊或業(yè)務(wù)部門(mén)。3.注重運轉效率:以功能實(shí)現為目的,注重提高系統各個(gè)環(huán)節的運轉效率。4.注重系統業(yè)務(wù):以業(yè)務(wù)導向為目的,注重整個(gè)系統業(yè)務(wù)流程和相關(guān)模塊的邏輯清晰。
  2.梳理業(yè)務(wù)
  后臺產(chǎn)品設計的關(guān)鍵是梳理業(yè)務(wù)邏輯。業(yè)務(wù)邏輯是業(yè)務(wù)層的邏輯,是整個(gè)系統層的邏輯。在設計上要考慮如何讓業(yè)務(wù)流更加完整,讓工作流形成一個(gè)閉環(huán)。
  對產(chǎn)品經(jīng)理而言,梳理業(yè)務(wù)邏輯更多是改變自己的設計策略。常見(jiàn)的梳理業(yè)務(wù)方式有需求分析、場(chǎng)景分析、架構設計、功能規劃、UML建模、用戶(hù)地圖、交互自查等。
  
  后臺產(chǎn)品一般采用需求驅動(dòng)設計的方式。需求是業(yè)務(wù)驅動(dòng)或技術(shù)驅動(dòng)的核心。需求驅動(dòng)設計就是根據相關(guān)業(yè)務(wù)部門(mén)提出的需求,進(jìn)行后臺產(chǎn)品設計。
  
  后臺產(chǎn)品一般是給公司內部員工使用的,不同的業(yè)務(wù)部門(mén)會(huì )有不同的業(yè)務(wù)需求,不同的業(yè)務(wù)需求會(huì )有不同的業(yè)務(wù)場(chǎng)景。對于業(yè)務(wù)邏輯復雜的后臺系統,越是需求多樣化場(chǎng)景,越要做需求場(chǎng)景分析,我們可以根據需求池寫(xiě)需求用例。
  當我們收集到了相關(guān)業(yè)務(wù)部門(mén)的需求后,首先對需求優(yōu)先級排序,其次對需求進(jìn)行拆解與分析,然后形成不同的功能規劃,最后把這些需求體現在后臺原型中。
  此外,產(chǎn)品結構設計也是梳理業(yè)務(wù)邏輯很重要的一部分。產(chǎn)品結構設計側重基于功能構建產(chǎn)品的整體架構,主要是梳理產(chǎn)品框架和基本功能。一般會(huì )設計功能結構圖、信息結構圖、結構圖。
  
  3.確定布局
  在后臺產(chǎn)品設計之前,我們需要確定它的框架結構,確定框架結構可以保證頁(yè)面布局、排版形式的一致性。后臺設計的標準布局為柵欄設計,頁(yè)面尺寸為1440*900。
  
  后臺系統的結構主要包括三個(gè)部分:導航區域、功能區域、內容區域。導航區域分為單層級和多層級導航,包括Logo、菜單欄。功能區域包括賬戶(hù)中心、消息通知、修改密碼、安全退出。內容區域的包括篩選條件、列表、分頁(yè)、詳情頁(yè)等。
  4.字段設計
  字段設計是后臺設計中最基礎的部分,但卻是數據結構中最重要的部分。
  字段設計分為三個(gè)步驟:匯總字段,處理字段,設計字段。字段設計要考慮的維度有:所屬對象、類(lèi)型、是否必填、來(lái)源、長(cháng)度。常見(jiàn)的字段類(lèi)型有:業(yè)務(wù)型字段、系統型字段、管理型字段、規則型字段。
  
  以P2P網(wǎng)貸系統的標的為例:標的詳情會(huì )展示標名、期限、利率、借款金額、還款方式等;標的登記會(huì )記錄登記時(shí)間、審核人、審核時(shí)間等;標的流標會(huì )記錄審核內容、日志信息、操作信息等;標的放款會(huì )記錄滿(mǎn)標時(shí)間、放款時(shí)間、放款狀態(tài)等。
  5.流程設計
  流程設計是梳理業(yè)務(wù)邏輯的最好方法之一。好的流程設計,不僅讓產(chǎn)品功能形成閉環(huán),也遵循用戶(hù)的心理模型,此外,用戶(hù)會(huì )感受到后臺系統操作的簡(jiǎn)單高效。
  流程設計是決定產(chǎn)品是否可用、易用的重要因素,同時(shí)也是區分一個(gè)產(chǎn)品經(jīng)理邏輯分析能力高低的重要體現。
  在產(chǎn)品從想法過(guò)渡到模型的階段,流程設計以動(dòng)作來(lái)推動(dòng)業(yè)務(wù)前進(jìn)。流程設計描述的是完整的業(yè)務(wù)流程,可以梳理功能模塊、業(yè)務(wù)邏輯與使用路徑。常見(jiàn)的流程有:業(yè)務(wù)流程、功能流程、操作流程、頁(yè)面流程、數據流程等。
  以標的登記審核流程為例:我們以泳道圖的形式,設計ERP系統、P2P系統和存管系統的業(yè)務(wù)流程,風(fēng)控專(zhuān)員在ERP系統提交標的進(jìn)件后,風(fēng)控主管會(huì )在P2P系統后臺進(jìn)行初審和復核,之后再推送到存管系統進(jìn)行終審,在這個(gè)過(guò)程會(huì )形成動(dòng)態(tài)的標的登記審核流程。
  
  6.規則設計
  規則設計的目的是確保規則的業(yè)務(wù)表現和業(yè)務(wù)目標相匹配,根本作用是流程控制與數據驗證。
  業(yè)務(wù)規則描述了業(yè)務(wù)過(guò)程中重要的對象、關(guān)系和活動(dòng)。業(yè)務(wù)規則包括功能范圍、操作流程、業(yè)務(wù)規范、約束條件和功能說(shuō)明等。
  
  對于業(yè)務(wù)規則來(lái)說(shuō),為了方便對規則的新增、變更與廢棄進(jìn)行跟蹤管理,需做版本控制。以貸超產(chǎn)品MVP設計為例,我們會(huì )將業(yè)務(wù)分為核心業(yè)務(wù)部分、業(yè)務(wù)支持部分和非業(yè)務(wù)部分,然后把業(yè)務(wù)規則進(jìn)行清晰、明確、可量化的場(chǎng)景描述,并做好階段反饋。
  
  規則設計最有效的方式是建立規則引擎。規則引擎可以在不同的時(shí)間節點(diǎn)觸發(fā)業(yè)務(wù)規則,且能幫助我們在系統中有效的執行和管理規則。
  7.原型設計
  當我們清楚需求、流程和規則后,會(huì )通過(guò)Axure把想法轉換成可以需求落地的原型。
  原型設計的目標是把規劃的功能、流程展現出來(lái),將需求轉化為可以給需求方、開(kāi)發(fā)人員和測試人員演示的Demo。方便需求對稱(chēng)與問(wèn)題溝通,確保用戶(hù)需求、使用場(chǎng)景的合理性,從而推動(dòng)產(chǎn)品迭代。
  常見(jiàn)的原型設計方式有手繪原型、灰模原型、交互原型。產(chǎn)品經(jīng)理一般是畫(huà)低保真的手繪原型或灰模原型。
  手繪原型有助于帶動(dòng)思維。在項目立項階段的頭腦風(fēng)暴和概念測試,手繪原型在初期驗證想法時(shí)非常高效,也方便討論,同時(shí)也適合敏捷開(kāi)發(fā)時(shí)快速出原型。因此手繪原型是最簡(jiǎn)單、快速的表現產(chǎn)品輪廓的方式之一。
  
  灰模原型可將產(chǎn)品需求以線(xiàn)框結構的方式展示出來(lái),讓需求和想法更加直觀(guān)得展現。畫(huà)灰模原型時(shí),所有的元素,除了組件自帶的顏色,只用灰黑白。此外,我們要在軟件需求中說(shuō)明所有頁(yè)面展示、功能狀態(tài)和業(yè)務(wù)規則。
  
  無(wú)論從0到1做后臺,還是系統重構,后臺產(chǎn)品設計是產(chǎn)品進(jìn)階必備的基本能力。既能逐步鍛煉產(chǎn)品經(jīng)理的設計邏輯思維,也能快速了解公司的業(yè)務(wù)流程。 查看全部

  后臺系統:產(chǎn)品設計“七步法”
  后臺產(chǎn)品設計是一塊讓產(chǎn)品經(jīng)理難啃的硬骨頭,因為它業(yè)務(wù)復雜、數據龐大、邏輯縝密。
  1.了解后臺
  在做后臺產(chǎn)品設計之前,我們先從硬幣的三個(gè)面了解一下后臺系統。從硬幣正面看后臺:可以減輕運營(yíng)的壓力,注重數據之間的流轉,側重功能模塊的實(shí)現。從硬幣反面看后臺:設計風(fēng)格過(guò)于單一,業(yè)務(wù)邏輯復雜,缺少對應的系統說(shuō)明。從硬幣側面看后臺:數據處理準確有效,操作流程簡(jiǎn)單,系統簡(jiǎn)單好用。
  
  后臺系統就是給用戶(hù)分配一個(gè)有某些權限(菜單級)的角色,對特定數據(數據級)進(jìn)行增刪改查導(功能級)的管理系統。
  了解后臺必須熟悉前端業(yè)務(wù),前端偏向用戶(hù)(功能操作)查看信息、提交信息,而后臺側重管理員(數據處理)創(chuàng )建信息、處理信息,而服務(wù)器(信息傳遞)主要是請求信息、響應信息。
  
  常見(jiàn)后臺系統包括:內容管理系統CMS,企業(yè)管理系統ERP、客戶(hù)關(guān)系管理系統CRM、商城管理系統MMS,辦公自動(dòng)化系統OA等。
  一個(gè)好的后臺系統會(huì )有以下幾個(gè)特點(diǎn):1.系統目標明確:輔助用戶(hù)自主完成任務(wù),減輕運營(yíng)壓力。2.用戶(hù)需求明確:需求一般來(lái)至是企業(yè)內部的領(lǐng)導、團隊或業(yè)務(wù)部門(mén)。3.注重運轉效率:以功能實(shí)現為目的,注重提高系統各個(gè)環(huán)節的運轉效率。4.注重系統業(yè)務(wù):以業(yè)務(wù)導向為目的,注重整個(gè)系統業(yè)務(wù)流程和相關(guān)模塊的邏輯清晰。
  2.梳理業(yè)務(wù)
  后臺產(chǎn)品設計的關(guān)鍵是梳理業(yè)務(wù)邏輯。業(yè)務(wù)邏輯是業(yè)務(wù)層的邏輯,是整個(gè)系統層的邏輯。在設計上要考慮如何讓業(yè)務(wù)流更加完整,讓工作流形成一個(gè)閉環(huán)。
  對產(chǎn)品經(jīng)理而言,梳理業(yè)務(wù)邏輯更多是改變自己的設計策略。常見(jiàn)的梳理業(yè)務(wù)方式有需求分析、場(chǎng)景分析、架構設計、功能規劃、UML建模、用戶(hù)地圖、交互自查等。
  
  后臺產(chǎn)品一般采用需求驅動(dòng)設計的方式。需求是業(yè)務(wù)驅動(dòng)或技術(shù)驅動(dòng)的核心。需求驅動(dòng)設計就是根據相關(guān)業(yè)務(wù)部門(mén)提出的需求,進(jìn)行后臺產(chǎn)品設計。
  
  后臺產(chǎn)品一般是給公司內部員工使用的,不同的業(yè)務(wù)部門(mén)會(huì )有不同的業(yè)務(wù)需求,不同的業(yè)務(wù)需求會(huì )有不同的業(yè)務(wù)場(chǎng)景。對于業(yè)務(wù)邏輯復雜的后臺系統,越是需求多樣化場(chǎng)景,越要做需求場(chǎng)景分析,我們可以根據需求池寫(xiě)需求用例。
  當我們收集到了相關(guān)業(yè)務(wù)部門(mén)的需求后,首先對需求優(yōu)先級排序,其次對需求進(jìn)行拆解與分析,然后形成不同的功能規劃,最后把這些需求體現在后臺原型中。
  此外,產(chǎn)品結構設計也是梳理業(yè)務(wù)邏輯很重要的一部分。產(chǎn)品結構設計側重基于功能構建產(chǎn)品的整體架構,主要是梳理產(chǎn)品框架和基本功能。一般會(huì )設計功能結構圖、信息結構圖、結構圖。
  
  3.確定布局
  在后臺產(chǎn)品設計之前,我們需要確定它的框架結構,確定框架結構可以保證頁(yè)面布局、排版形式的一致性。后臺設計的標準布局為柵欄設計,頁(yè)面尺寸為1440*900。
  
  后臺系統的結構主要包括三個(gè)部分:導航區域、功能區域、內容區域。導航區域分為單層級和多層級導航,包括Logo、菜單欄。功能區域包括賬戶(hù)中心、消息通知、修改密碼、安全退出。內容區域的包括篩選條件、列表、分頁(yè)、詳情頁(yè)等。
  4.字段設計
  字段設計是后臺設計中最基礎的部分,但卻是數據結構中最重要的部分。
  字段設計分為三個(gè)步驟:匯總字段,處理字段,設計字段。字段設計要考慮的維度有:所屬對象、類(lèi)型、是否必填、來(lái)源、長(cháng)度。常見(jiàn)的字段類(lèi)型有:業(yè)務(wù)型字段、系統型字段、管理型字段、規則型字段。
  
  以P2P網(wǎng)貸系統的標的為例:標的詳情會(huì )展示標名、期限、利率、借款金額、還款方式等;標的登記會(huì )記錄登記時(shí)間、審核人、審核時(shí)間等;標的流標會(huì )記錄審核內容、日志信息、操作信息等;標的放款會(huì )記錄滿(mǎn)標時(shí)間、放款時(shí)間、放款狀態(tài)等。
  5.流程設計
  流程設計是梳理業(yè)務(wù)邏輯的最好方法之一。好的流程設計,不僅讓產(chǎn)品功能形成閉環(huán),也遵循用戶(hù)的心理模型,此外,用戶(hù)會(huì )感受到后臺系統操作的簡(jiǎn)單高效。
  流程設計是決定產(chǎn)品是否可用、易用的重要因素,同時(shí)也是區分一個(gè)產(chǎn)品經(jīng)理邏輯分析能力高低的重要體現。
  在產(chǎn)品從想法過(guò)渡到模型的階段,流程設計以動(dòng)作來(lái)推動(dòng)業(yè)務(wù)前進(jìn)。流程設計描述的是完整的業(yè)務(wù)流程,可以梳理功能模塊、業(yè)務(wù)邏輯與使用路徑。常見(jiàn)的流程有:業(yè)務(wù)流程、功能流程、操作流程、頁(yè)面流程、數據流程等。
  以標的登記審核流程為例:我們以泳道圖的形式,設計ERP系統、P2P系統和存管系統的業(yè)務(wù)流程,風(fēng)控專(zhuān)員在ERP系統提交標的進(jìn)件后,風(fēng)控主管會(huì )在P2P系統后臺進(jìn)行初審和復核,之后再推送到存管系統進(jìn)行終審,在這個(gè)過(guò)程會(huì )形成動(dòng)態(tài)的標的登記審核流程。
  
  6.規則設計
  規則設計的目的是確保規則的業(yè)務(wù)表現和業(yè)務(wù)目標相匹配,根本作用是流程控制與數據驗證。
  業(yè)務(wù)規則描述了業(yè)務(wù)過(guò)程中重要的對象、關(guān)系和活動(dòng)。業(yè)務(wù)規則包括功能范圍、操作流程、業(yè)務(wù)規范、約束條件和功能說(shuō)明等。
  
  對于業(yè)務(wù)規則來(lái)說(shuō),為了方便對規則的新增、變更與廢棄進(jìn)行跟蹤管理,需做版本控制。以貸超產(chǎn)品MVP設計為例,我們會(huì )將業(yè)務(wù)分為核心業(yè)務(wù)部分、業(yè)務(wù)支持部分和非業(yè)務(wù)部分,然后把業(yè)務(wù)規則進(jìn)行清晰、明確、可量化的場(chǎng)景描述,并做好階段反饋。
  
  規則設計最有效的方式是建立規則引擎。規則引擎可以在不同的時(shí)間節點(diǎn)觸發(fā)業(yè)務(wù)規則,且能幫助我們在系統中有效的執行和管理規則。
  7.原型設計
  當我們清楚需求、流程和規則后,會(huì )通過(guò)Axure把想法轉換成可以需求落地的原型。
  原型設計的目標是把規劃的功能、流程展現出來(lái),將需求轉化為可以給需求方、開(kāi)發(fā)人員和測試人員演示的Demo。方便需求對稱(chēng)與問(wèn)題溝通,確保用戶(hù)需求、使用場(chǎng)景的合理性,從而推動(dòng)產(chǎn)品迭代。
  常見(jiàn)的原型設計方式有手繪原型、灰模原型、交互原型。產(chǎn)品經(jīng)理一般是畫(huà)低保真的手繪原型或灰模原型。
  手繪原型有助于帶動(dòng)思維。在項目立項階段的頭腦風(fēng)暴和概念測試,手繪原型在初期驗證想法時(shí)非常高效,也方便討論,同時(shí)也適合敏捷開(kāi)發(fā)時(shí)快速出原型。因此手繪原型是最簡(jiǎn)單、快速的表現產(chǎn)品輪廓的方式之一。
  
  灰模原型可將產(chǎn)品需求以線(xiàn)框結構的方式展示出來(lái),讓需求和想法更加直觀(guān)得展現。畫(huà)灰模原型時(shí),所有的元素,除了組件自帶的顏色,只用灰黑白。此外,我們要在軟件需求中說(shuō)明所有頁(yè)面展示、功能狀態(tài)和業(yè)務(wù)規則。
  
  無(wú)論從0到1做后臺,還是系統重構,后臺產(chǎn)品設計是產(chǎn)品進(jìn)階必備的基本能力。既能逐步鍛煉產(chǎn)品經(jīng)理的設計邏輯思維,也能快速了解公司的業(yè)務(wù)流程。

10張圖,系統掃盲管理后臺產(chǎn)品設計思路

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2022-06-19 08:52 ? 來(lái)自相關(guān)話(huà)題

  10張圖,系統掃盲管理后臺產(chǎn)品設計思路
  
  ??產(chǎn)品思維模型 ·用產(chǎn)品思維,理解世界
  閱讀本文大概需要6分鐘。
  大家好,見(jiàn)字如面,我是穆寧。
  今天,給大家系統講解下,管理后臺的設計思路。同時(shí),也是為沒(méi)有做過(guò)管理后臺產(chǎn)品的同學(xué),做一下系統掃盲。
  做產(chǎn)品有個(gè)基本設定:
  定位確定需求,需求確定功能。
  所以管理后臺從某種意義上必然是滿(mǎn)足了某類(lèi)需求的,我們就從需求說(shuō)起,聊一聊管理后臺。
  從需求類(lèi)型和使用人員來(lái)看管理后臺大致分為以下幾類(lèi):
  業(yè)務(wù)類(lèi):
  主要聚焦實(shí)際業(yè)務(wù),管理后臺主要進(jìn)行業(yè)務(wù)資源的提交、處理、優(yōu)化等一系列操作,使用者以運營(yíng)人員為主。
  比如電商類(lèi)、各種任務(wù)類(lèi)產(chǎn)品,這其中廣告類(lèi)的DSP和SSP相對特殊一些,使用者屬于平臺的合作方,主要解決商業(yè)訴求,簡(jiǎn)單講DSP是廣告主花錢(qián)買(mǎi)流量打廣告,SSP是流量主有流量想變現接廣告。
  協(xié)作類(lèi):
  主要是多人在線(xiàn)合作,共同完成既定任務(wù),使用者多為團隊成員,內容也圍繞具體項目開(kāi)展,主要是任務(wù)的發(fā)布,查看,協(xié)作執行,到最終完成。
  這里面需要注意的地方有兩個(gè):
  第一是各個(gè)帳號的配置,因為涉及到人員協(xié)作,所以各個(gè)角色及對應權限比較重要,不同帳號對不同模塊的增刪改查不同,比如有些人看不到某些模塊,有些人只能查看,有些人可以修改,有些可以增刪改查,擁有項目的全部權限;
  第二個(gè)是任務(wù)的設定相關(guān),比如優(yōu)先級,執行日期,關(guān)聯(lián)文件,細分子任務(wù),執行人,參與人等。
  銷(xiāo)售管理類(lèi):
  主要是針對銷(xiāo)售任務(wù)的拆解分配,以及下線(xiàn)成員的錄入統計上報,使用人員多數以銷(xiāo)售人員及其上級。
  相比前面的協(xié)作類(lèi),銷(xiāo)售類(lèi)除了分帳號,不同模塊授權以外,還要多一層設定:
  各個(gè)帳號的不同層級及隸屬關(guān)系,方便各級管理人員給下線(xiàn)的任務(wù)分配及后續的上報統計功能。
  以上是從需求類(lèi)型及使用人員的角度看管理后臺。
  如果從開(kāi)發(fā)實(shí)現角度來(lái)講就是另一番景象了,從實(shí)現來(lái)看管理后臺本質(zhì)上和產(chǎn)品前端基本類(lèi)似:
  視覺(jué)層通過(guò)一些頁(yè)面和使用者交互,提出需求;
  邏輯層接口程序負責實(shí)現處理;
  當脫離具體業(yè)務(wù),進(jìn)入數據層后,我們會(huì )發(fā)現其實(shí)所有的操作就是:
  對數據的增刪改查,歸類(lèi)到行為就是兩個(gè):
  不同視角看同一個(gè)事物會(huì )有不同的效果,這正是世界的美妙迷人之處。
  下面我們再聊聊從產(chǎn)品設計角度看管理后臺。
  把用戶(hù)需求轉化為產(chǎn)品需求后,管理后臺的設計主要分為以下幾個(gè)模塊:
  賬戶(hù)管理:主要涉及帳號,密碼,信息,資質(zhì),認證。
  協(xié)作類(lèi)還包括分帳號及針對不同模塊的權限管理,以及銷(xiāo)售管理類(lèi)的各級隸屬關(guān)系的設置均在此模塊完成。
  用戶(hù)管理:是負責平臺用戶(hù)的模塊,主要包括用戶(hù)列表和詳情,通過(guò)該模塊可以對平臺用戶(hù)統一查看管理,主要包括用戶(hù)在該產(chǎn)品中的各維度信息,帳號,昵稱(chēng),頭像,等級及各個(gè)行為記錄。
  資源管理:是指對產(chǎn)品的資源進(jìn)行發(fā)布提交。比如電商類(lèi)產(chǎn)品的商品增刪改查管理,任務(wù)類(lèi)產(chǎn)品的各項任務(wù)發(fā)布,再比如DSP和SSP中的物料素材,媒體,廣告位的增刪改查管理,一般都在這模塊體現。
  任務(wù)管理:主要是針對資源管理里提交發(fā)布的資源,用戶(hù)會(huì )在產(chǎn)品前端進(jìn)行操作,管理后臺對用戶(hù)行為進(jìn)行處理審核。比如DSP和SSP中,類(lèi)似的操作具化為投放管理,需要創(chuàng )建推廣計劃(訂單),推廣單元(具體廣告投放),確認對應的展現物料,投放策略(時(shí)間,計價(jià)方式,單價(jià),日限額,媒體展現類(lèi)型:開(kāi)屏,橫幅,插屏還是原生廣告)以及定向條件(投放時(shí)段,地域及用戶(hù)群體),協(xié)作類(lèi)的任務(wù)完成,銷(xiāo)售類(lèi)的執行情況錄入均在該模塊進(jìn)行動(dòng)態(tài)處理。
  效果管理:主要包括任務(wù)的執行效果和產(chǎn)品的預期效益。電商類(lèi)產(chǎn)品主要監測各個(gè)狀態(tài)的訂單數量,成交金額及利潤(待付款,待發(fā)貨,待收貨,待評價(jià),已完成),任務(wù)類(lèi)產(chǎn)品情況類(lèi)似,主要評估任務(wù)的完成效果(數量和金額),廣告類(lèi)的DSP和SSP則主要看曝光量,點(diǎn)擊量,CTR,平均單次消費,總消費,統計維度從流量主角度有廣告位,頻道,媒體,廣告主角度有物料,推廣單元,推廣計劃。還有一些從整體產(chǎn)品規模尺度上進(jìn)行效果衡量:PV,UV,IP,新增,活躍,留存,累計用戶(hù)等,然后第二步是數據分析,即基于執行結果的效果數據,進(jìn)行后續動(dòng)作的調整優(yōu)化。
  總體來(lái)講效果管理的兩個(gè)主要目的:結果展示和分析調整。
  財務(wù)管理:相對簡(jiǎn)單些,但也相對重要些。主要兩大塊:
  一是財務(wù)賬戶(hù)的信息管理(對公對私,各種支付方式)。
  二是各項記錄,有賺錢(qián)方的:收益,提現,審核,余額管理,花錢(qián)方的:充值,消費,凍結,余額管理。
  以上從產(chǎn)品設計角度簡(jiǎn)要概述管理后臺各模塊,當然行業(yè)不同,涉及具體功能自然不同。
  比如有些需要單獨設計策略管理模塊,再比如同為資源管理,但具體資源類(lèi)型及操作卻相差很大,但總體思路是一致的:
  需求決定功能。
  聊到此處,管理后臺的用處和模樣估計各位有了個(gè)大概的印象,至于真要深入理解,還要在實(shí)際工作中去用心體會(huì )了。紙上得來(lái)終覺(jué)淺,絕知此事要躬行。
  下面奉上10個(gè)管理后臺頁(yè)面模板,供大家參考。
  1 .基于layui的后臺管理系統
  
  2.LayUI組件模板
  3.模塊化后臺管理模板
  4.LarryCMS后臺管理
  
  5.bootstrap英文后臺管理模板
  6.購物網(wǎng)站后臺
  
  7.基于bootstrap的統一開(kāi)發(fā)平臺
  8.物流大數據平臺
  
  9.智慧物流
  10.layers后臺界面
   查看全部

  10張圖,系統掃盲管理后臺產(chǎn)品設計思路
  
  ??產(chǎn)品思維模型 ·用產(chǎn)品思維,理解世界
  閱讀本文大概需要6分鐘。
  大家好,見(jiàn)字如面,我是穆寧。
  今天,給大家系統講解下,管理后臺的設計思路。同時(shí),也是為沒(méi)有做過(guò)管理后臺產(chǎn)品的同學(xué),做一下系統掃盲。
  做產(chǎn)品有個(gè)基本設定:
  定位確定需求,需求確定功能。
  所以管理后臺從某種意義上必然是滿(mǎn)足了某類(lèi)需求的,我們就從需求說(shuō)起,聊一聊管理后臺。
  從需求類(lèi)型和使用人員來(lái)看管理后臺大致分為以下幾類(lèi):
  業(yè)務(wù)類(lèi):
  主要聚焦實(shí)際業(yè)務(wù),管理后臺主要進(jìn)行業(yè)務(wù)資源的提交、處理、優(yōu)化等一系列操作,使用者以運營(yíng)人員為主。
  比如電商類(lèi)、各種任務(wù)類(lèi)產(chǎn)品,這其中廣告類(lèi)的DSP和SSP相對特殊一些,使用者屬于平臺的合作方,主要解決商業(yè)訴求,簡(jiǎn)單講DSP是廣告主花錢(qián)買(mǎi)流量打廣告,SSP是流量主有流量想變現接廣告。
  協(xié)作類(lèi):
  主要是多人在線(xiàn)合作,共同完成既定任務(wù),使用者多為團隊成員,內容也圍繞具體項目開(kāi)展,主要是任務(wù)的發(fā)布,查看,協(xié)作執行,到最終完成。
  這里面需要注意的地方有兩個(gè):
  第一是各個(gè)帳號的配置,因為涉及到人員協(xié)作,所以各個(gè)角色及對應權限比較重要,不同帳號對不同模塊的增刪改查不同,比如有些人看不到某些模塊,有些人只能查看,有些人可以修改,有些可以增刪改查,擁有項目的全部權限;
  第二個(gè)是任務(wù)的設定相關(guān),比如優(yōu)先級,執行日期,關(guān)聯(lián)文件,細分子任務(wù),執行人,參與人等。
  銷(xiāo)售管理類(lèi):
  主要是針對銷(xiāo)售任務(wù)的拆解分配,以及下線(xiàn)成員的錄入統計上報,使用人員多數以銷(xiāo)售人員及其上級。
  相比前面的協(xié)作類(lèi),銷(xiāo)售類(lèi)除了分帳號,不同模塊授權以外,還要多一層設定:
  各個(gè)帳號的不同層級及隸屬關(guān)系,方便各級管理人員給下線(xiàn)的任務(wù)分配及后續的上報統計功能。
  以上是從需求類(lèi)型及使用人員的角度看管理后臺。
  如果從開(kāi)發(fā)實(shí)現角度來(lái)講就是另一番景象了,從實(shí)現來(lái)看管理后臺本質(zhì)上和產(chǎn)品前端基本類(lèi)似:
  視覺(jué)層通過(guò)一些頁(yè)面和使用者交互,提出需求;
  邏輯層接口程序負責實(shí)現處理;
  當脫離具體業(yè)務(wù),進(jìn)入數據層后,我們會(huì )發(fā)現其實(shí)所有的操作就是:
  對數據的增刪改查,歸類(lèi)到行為就是兩個(gè):
  不同視角看同一個(gè)事物會(huì )有不同的效果,這正是世界的美妙迷人之處。
  下面我們再聊聊從產(chǎn)品設計角度看管理后臺。
  把用戶(hù)需求轉化為產(chǎn)品需求后,管理后臺的設計主要分為以下幾個(gè)模塊:
  賬戶(hù)管理:主要涉及帳號,密碼,信息,資質(zhì),認證。
  協(xié)作類(lèi)還包括分帳號及針對不同模塊的權限管理,以及銷(xiāo)售管理類(lèi)的各級隸屬關(guān)系的設置均在此模塊完成。
  用戶(hù)管理:是負責平臺用戶(hù)的模塊,主要包括用戶(hù)列表和詳情,通過(guò)該模塊可以對平臺用戶(hù)統一查看管理,主要包括用戶(hù)在該產(chǎn)品中的各維度信息,帳號,昵稱(chēng),頭像,等級及各個(gè)行為記錄。
  資源管理:是指對產(chǎn)品的資源進(jìn)行發(fā)布提交。比如電商類(lèi)產(chǎn)品的商品增刪改查管理,任務(wù)類(lèi)產(chǎn)品的各項任務(wù)發(fā)布,再比如DSP和SSP中的物料素材,媒體,廣告位的增刪改查管理,一般都在這模塊體現。
  任務(wù)管理:主要是針對資源管理里提交發(fā)布的資源,用戶(hù)會(huì )在產(chǎn)品前端進(jìn)行操作,管理后臺對用戶(hù)行為進(jìn)行處理審核。比如DSP和SSP中,類(lèi)似的操作具化為投放管理,需要創(chuàng )建推廣計劃(訂單),推廣單元(具體廣告投放),確認對應的展現物料,投放策略(時(shí)間,計價(jià)方式,單價(jià),日限額,媒體展現類(lèi)型:開(kāi)屏,橫幅,插屏還是原生廣告)以及定向條件(投放時(shí)段,地域及用戶(hù)群體),協(xié)作類(lèi)的任務(wù)完成,銷(xiāo)售類(lèi)的執行情況錄入均在該模塊進(jìn)行動(dòng)態(tài)處理。
  效果管理:主要包括任務(wù)的執行效果和產(chǎn)品的預期效益。電商類(lèi)產(chǎn)品主要監測各個(gè)狀態(tài)的訂單數量,成交金額及利潤(待付款,待發(fā)貨,待收貨,待評價(jià),已完成),任務(wù)類(lèi)產(chǎn)品情況類(lèi)似,主要評估任務(wù)的完成效果(數量和金額),廣告類(lèi)的DSP和SSP則主要看曝光量,點(diǎn)擊量,CTR,平均單次消費,總消費,統計維度從流量主角度有廣告位,頻道,媒體,廣告主角度有物料,推廣單元,推廣計劃。還有一些從整體產(chǎn)品規模尺度上進(jìn)行效果衡量:PV,UV,IP,新增,活躍,留存,累計用戶(hù)等,然后第二步是數據分析,即基于執行結果的效果數據,進(jìn)行后續動(dòng)作的調整優(yōu)化。
  總體來(lái)講效果管理的兩個(gè)主要目的:結果展示和分析調整。
  財務(wù)管理:相對簡(jiǎn)單些,但也相對重要些。主要兩大塊:
  一是財務(wù)賬戶(hù)的信息管理(對公對私,各種支付方式)。
  二是各項記錄,有賺錢(qián)方的:收益,提現,審核,余額管理,花錢(qián)方的:充值,消費,凍結,余額管理。
  以上從產(chǎn)品設計角度簡(jiǎn)要概述管理后臺各模塊,當然行業(yè)不同,涉及具體功能自然不同。
  比如有些需要單獨設計策略管理模塊,再比如同為資源管理,但具體資源類(lèi)型及操作卻相差很大,但總體思路是一致的:
  需求決定功能。
  聊到此處,管理后臺的用處和模樣估計各位有了個(gè)大概的印象,至于真要深入理解,還要在實(shí)際工作中去用心體會(huì )了。紙上得來(lái)終覺(jué)淺,絕知此事要躬行。
  下面奉上10個(gè)管理后臺頁(yè)面模板,供大家參考。
  1 .基于layui的后臺管理系統
  
  2.LayUI組件模板
  3.模塊化后臺管理模板
  4.LarryCMS后臺管理
  
  5.bootstrap英文后臺管理模板
  6.購物網(wǎng)站后臺
  
  7.基于bootstrap的統一開(kāi)發(fā)平臺
  8.物流大數據平臺
  
  9.智慧物流
  10.layers后臺界面
  

10條關(guān)于后臺管理界面的數據可視化設計建議

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 90 次瀏覽 ? 2022-06-18 12:02 ? 來(lái)自相關(guān)話(huà)題

  10條關(guān)于后臺管理界面的數據可視化設計建議
  點(diǎn)擊上方[網(wǎng)頁(yè)設計自學(xué)平臺]→右上角[...]→[設為星標★]
  
  前言:現如今,后臺界面的設計需求很常見(jiàn)。商業(yè)活動(dòng)中,人們希望通過(guò)一個(gè)數據可視化界面來(lái)展示所有的信息、趨勢和風(fēng)險,并實(shí)時(shí)更新,助力于財務(wù)分析預測。
  
  當用戶(hù)在瀏覽數據界面時(shí),最好一眼就能對關(guān)鍵信息有一個(gè)大概的了解,也就是說(shuō),后臺界面應該是一種引人注目、簡(jiǎn)單直接的導航方式。(后臺界面)Dashboard這個(gè)術(shù)語(yǔ)來(lái)自汽車(chē)儀表盤(pán)的比喻,也叫cockpit-area,通常是指飛機或航天器的駕駛艙,也就是控制飛行器的儀表盤(pán)。
  我做了很多年To B(針對企業(yè))的項目,設計了不計其數的后臺管理界面。每一次的設計任務(wù),對我來(lái)說(shuō)都是新的挑戰,為了設計出優(yōu)秀的后臺界面,我常感到壓力山大。為了幫助大家設計出更好的后臺界面,我根據自己的經(jīng)驗,提出了以下幾點(diǎn)建議,不管是對初學(xué)者還是經(jīng)驗豐富的設計師,應該都會(huì )有所收獲。
  1、定義目標
  后臺界面首先是要有明確的目標以滿(mǎn)足用戶(hù)需求,就像產(chǎn)品中其他界面一樣。如果把目標搞錯了,那么接下來(lái)的努力就毫無(wú)意義!不同的使用場(chǎng)景,界面的設計方法也會(huì )不一樣。為了簡(jiǎn)化分析,這里主要介紹2種最常見(jiàn)的形式:
  1)運營(yíng)型后臺界面
  運營(yíng)型后臺界面通常出現在時(shí)效性很強的任務(wù)場(chǎng)景中,旨在高效地為用戶(hù)提供關(guān)鍵信息。運營(yíng)型后臺界面主要為用戶(hù)快速清晰地呈現異常數據、當前資源情況和所處狀態(tài)。運營(yíng)型后臺界面的數據控制中心可以幫助用戶(hù)高效敏捷地盡管運營(yíng)管理。
  
  營(yíng)型后臺界面主要特點(diǎn)
  2)分析型后臺界面
  與運營(yíng)型后臺界面相比,分析型后臺界面通過(guò)提供更為全面的信息,主要用于分析和決策,對時(shí)效性要求不高。分析型后臺界面主要是為幫助用戶(hù)更好地了解數據,分析趨勢和助力決策。
  
  分析型后臺界面主要特點(diǎn)
  用戶(hù)需求決定了要設計哪一種后臺界面。產(chǎn)品可能具有很多功能,不同的管理者也有不同的訴求,設計需要因地制宜。設計師經(jīng)常容易混淆這兩種類(lèi)型,為期望得到快速響應和采取行動(dòng)的用戶(hù)卻提供一大堆的分析數據。反之亦然。
  2.正確地展示數據
  后臺界面中的數據展示是一項復雜的設計,尤其在后臺界面上展示多種類(lèi)型數據時(shí),不管是靜態(tài)還是實(shí)時(shí)變化的信息,都具有很強的挑戰性。如果選錯了圖表類(lèi)型或者直接默認為通用的數據可視化模版,可能會(huì )使用戶(hù)感到困惑或誤讀數據。根據用戶(hù)需要查看的內容,我提供了一些可視化建議:
  
  這類(lèi)圖表用于展示數據關(guān)系
  散點(diǎn)圖主要用于相關(guān)性和分布性的分析;氣泡圖將第三維度引入圖表;網(wǎng)絡(luò )圖也很方便,數據間的節點(diǎn)越大越重要。
  
  這類(lèi)圖表用于比較數據
  在比較一組或多組數據時(shí),使用可視化的圖表要比看網(wǎng)格中的數字簡(jiǎn)單多了。柱形圖和折線(xiàn)圖是最常用的類(lèi)型。我的建議是:
  – 時(shí)間維度應始終用X軸展示,時(shí)間從左向右
  – 當使用水平或垂直條形圖時(shí),嘗試按最大值比例設計條形而不是隨意設計
  – 使用折線(xiàn)圖時(shí),不要顯示超過(guò)5個(gè)值;使用條形圖時(shí),不要顯示超過(guò)7個(gè)值
  
  這類(lèi)圖表用于展示組成部分
  在數據可視化方面,餅圖和環(huán)形圖不容易使用。這類(lèi)圖表最常用到,但同時(shí)也最容易被誤用。因為餅圖和環(huán)形圖的組件太多,相似值很多,所以閱讀體驗很差。人們在瀏覽餅圖和環(huán)形圖的角度和區域時(shí),并不能輕易看出差值。
  
  類(lèi)圖表用于展示分布情況
  分布圖可以幫助你了解數據中的異常值,正態(tài)分布和信息范圍。
  
  避免使用的圖表類(lèi)型
  要避免使用某些圖表類(lèi)型。過(guò)去,圖表數據展示對于后臺界面設計很重要,但現在擬物化設計已經(jīng)過(guò)時(shí)了。3D圖表和過(guò)度設計的圖表可讀性很差,分散了人們對數據的注意力,并且很難開(kāi)發(fā),所以沒(méi)必要這樣設計。
  
  選擇不同圖表類(lèi)型
  選擇圖表時(shí),可以考慮幾個(gè)問(wèn)題:
  – 在一個(gè)圖表中,要顯示幾個(gè)變量?
  – 要顯示不同時(shí)間的值,還是不同項目或者不同組的值?
  – 每個(gè)變量要顯示幾個(gè)數據點(diǎn)?
  3.命名規范、日期格式和數值劃分要統一清晰
  后臺界面主要為了快速獲得信息,所以每個(gè)細節都很重要。使用清晰框架的最大好處是數據一致性。如果數據在每個(gè)工具中以相同的方式命名,則可以更輕松地使用這些工具。一個(gè)框架,就可以解決所有問(wèn)題。
  4.定義布局、順序和優(yōu)先級
  網(wǎng)格可以幫助您輕松實(shí)現對齊和統一,在設計中創(chuàng )建基本結構和骨架。它們由“隱形”線(xiàn)組成,在線(xiàn)上可以放置設計元素。網(wǎng)格可以將所有元素整合在一個(gè)系統的體系中,并且使界面更有條理。這對后臺界面設計至關(guān)重要,因為網(wǎng)格可以將大量的信息布局地更為緊湊。
  
  網(wǎng)格與模塊
  在布局信息時(shí),要注意:
  通常,人們最先關(guān)注到屏幕左上角的區域,所以可以把關(guān)鍵信息從左到右布局。當然有些地區人們的閱讀習慣可能是相反的。人們讀完一行后,會(huì )繼續下一行的閱讀。所以當一段信息基于另一段信息時(shí),要注意它們的前后順序,方便用戶(hù)更好地前后查閱信息、快速瀏覽。
  
  閱讀習慣和優(yōu)先級布局
  5.使用結構統一的組件
  定義網(wǎng)格后,就可以用多種組件來(lái)承載信息、圖表和控件了??ㄆ且环N非常簡(jiǎn)單好用的排版方式??ㄆ畲蟮膬?yōu)勢在于可以無(wú)限地修改、操作和擴展。對于響應式設計,卡片是不錯的選擇,因為卡片是一種易于擴展或縮小的內容容器。
  片可以包含信息、圖表和控件
  卡片的一個(gè)重要特點(diǎn)是所有卡片的控件和數據的排版統一。將名稱(chēng)放在左上角,將視圖控件或操作放到卡片右上角,剩下的就是內容。當所有卡片結構統一時(shí),用戶(hù)就更容易使用界面,輕松找到想要的內容。
  
  排版統一
  涉及響應式設計或者用戶(hù)定制時(shí),使用以上推薦的排版就有不錯的靈活性。當卡片放大或縮小時(shí),所有主要的控件仍然在特定的位置。這對開(kāi)發(fā)和設計的整體可擴展性來(lái)說(shuō),十分有幫助。
  6.擴大留白
  白色區域,也就是負空間,指的是在設計布局中元素之間的區域。用戶(hù)可能并不了解負空間,但是設計師需要特別注意。如果負空間不平衡,這個(gè)界面的易讀性就很差。因此負空間和其他排版元素一樣重要。
  
  12px和24px間距的視覺(jué)差異
  7.不要隱藏信息或過(guò)分依賴(lài)交互
  后臺界面主要為了快速的了解大概信息,但如果涉及滾動(dòng)或過(guò)多的交互事件,就會(huì )拖慢用戶(hù)的使用效率。
  
  高樓大廈的既視感
  設計師最常犯的錯誤,就是設計可滾動(dòng)的、長(cháng)后臺界面。他們想用簡(jiǎn)潔的方式展示更多的信息,就會(huì )從上到下排版,以防太多的信息堆積到一起,讓用戶(hù)難以理解。但這會(huì )導致只有屏幕上的信息是可見(jiàn)的,不滾動(dòng)頁(yè)面就看不到下面的信息,所以用戶(hù)很難注意到下面的信息。既然這樣,干嘛還要放這些很難注意到的信息呢?
  解決辦法是對信息進(jìn)行優(yōu)先級排序,在進(jìn)行充分的研究和訪(fǎng)談后,應該能夠識別關(guān)鍵內容,只用屏幕可見(jiàn)區域來(lái)顯示關(guān)鍵內容。不要長(cháng)篇大論地講故事,要展示提煉的關(guān)鍵信息。額外的交互可以作為容納更多內容的一種方式,而不是讓用戶(hù)被過(guò)多的數據壓垮。
  
  要依賴(lài)過(guò)多交互顯示信息
  交互有助于界面上次要信息展示。但完全依賴(lài)交互,以此作為使用后臺界面的主要方式,就是大錯特錯的。在以上的示例中,用戶(hù)不得不在多個(gè)選項卡中痛苦地切換,來(lái)獲取完整的圖表。那些在隱藏選項卡上的信息可讀性就很差,就像屏幕下方被隱藏的信息一樣。
  
  后臺界面上信息過(guò)多
  后臺界面上,設計的信息過(guò)多,就會(huì )適得其反。一定要知道,人類(lèi)對于多個(gè)事物的記性很差。不要對用戶(hù)期望過(guò)高,不要讓用戶(hù)對太多數據應接不暇。最多用5-7個(gè)組件來(lái)創(chuàng )建頁(yè)面。否則,用戶(hù)很難專(zhuān)注獲取清晰的信息概覽。
  8.個(gè)性化而不是自定義
  用戶(hù)希望看到與他們個(gè)人需求相關(guān)的內容。個(gè)性化和自定義可以使用戶(hù)看到對他們自身重要內容。個(gè)性化由系統自身設定。系統ID用于識別用戶(hù),并為用戶(hù)提供與其角色匹配的內容、體驗或功能。自定義則是由用戶(hù)自身完成。為了滿(mǎn)足特定需求,用戶(hù)可以在系統里配置布局、內容或系統功能來(lái)定制或改變體驗。
  
  自定義后臺界面
  在界面足夠個(gè)性化的基礎上,可以給用戶(hù)更多的選擇自定義后臺界面。但通常,設計多種自定義的方式是一個(gè)借口,逃避枯燥的用戶(hù)調研過(guò)程,不去真正挖掘每一個(gè)用戶(hù)角色真正的需求。最后,就把一切都甩給用戶(hù),讓他自己去創(chuàng )建頁(yè)面。
  9.融合數據表或列表時(shí),確??山换デ覕祿R
  展示多項目的大量信息時(shí),數據表是不錯的解決方案。例如客戶(hù)列表里姓名、狀態(tài)、聯(lián)系人和最近活動(dòng)等等,這些用數據表展示是最好的辦法。數據表有很多優(yōu)點(diǎn),空間利用好、擴展性好、開(kāi)發(fā)簡(jiǎn)便。用戶(hù)也很習慣和網(wǎng)格打交道,因為大多數用戶(hù)使用excel很多年了,容易查找和修改數據。查閱以下文章,了解數據表的更多內容。
  @taras.bakusevych/data-tables-design-3c705b106a64
  10.最后才是考慮視覺(jué)效果
  由于數據可視化界面是視覺(jué)沖擊力最強的后臺界面,因此通常對設計師來(lái)說(shuō)視覺(jué)效果成了設計的首要任務(wù)。相反,我建議最后再設計數據可視化界面總覽全局。數據可視化是其他所有內容的摘要視圖,顯示應用各個(gè)部分的關(guān)鍵信息,最后設計它更切實(shí)可行。
  否則,在處理其他頁(yè)面時(shí)會(huì )不斷返回并更新數據可視化界面。此外,一旦設計完大部分界面了,再做數據可視化就可以使用大量的組件了。
  原文: 查看全部

  10條關(guān)于后臺管理界面的數據可視化設計建議
  點(diǎn)擊上方[網(wǎng)頁(yè)設計自學(xué)平臺]→右上角[...]→[設為星標★]
  
  前言:現如今,后臺界面的設計需求很常見(jiàn)。商業(yè)活動(dòng)中,人們希望通過(guò)一個(gè)數據可視化界面來(lái)展示所有的信息、趨勢和風(fēng)險,并實(shí)時(shí)更新,助力于財務(wù)分析預測。
  
  當用戶(hù)在瀏覽數據界面時(shí),最好一眼就能對關(guān)鍵信息有一個(gè)大概的了解,也就是說(shuō),后臺界面應該是一種引人注目、簡(jiǎn)單直接的導航方式。(后臺界面)Dashboard這個(gè)術(shù)語(yǔ)來(lái)自汽車(chē)儀表盤(pán)的比喻,也叫cockpit-area,通常是指飛機或航天器的駕駛艙,也就是控制飛行器的儀表盤(pán)。
  我做了很多年To B(針對企業(yè))的項目,設計了不計其數的后臺管理界面。每一次的設計任務(wù),對我來(lái)說(shuō)都是新的挑戰,為了設計出優(yōu)秀的后臺界面,我常感到壓力山大。為了幫助大家設計出更好的后臺界面,我根據自己的經(jīng)驗,提出了以下幾點(diǎn)建議,不管是對初學(xué)者還是經(jīng)驗豐富的設計師,應該都會(huì )有所收獲。
  1、定義目標
  后臺界面首先是要有明確的目標以滿(mǎn)足用戶(hù)需求,就像產(chǎn)品中其他界面一樣。如果把目標搞錯了,那么接下來(lái)的努力就毫無(wú)意義!不同的使用場(chǎng)景,界面的設計方法也會(huì )不一樣。為了簡(jiǎn)化分析,這里主要介紹2種最常見(jiàn)的形式:
  1)運營(yíng)型后臺界面
  運營(yíng)型后臺界面通常出現在時(shí)效性很強的任務(wù)場(chǎng)景中,旨在高效地為用戶(hù)提供關(guān)鍵信息。運營(yíng)型后臺界面主要為用戶(hù)快速清晰地呈現異常數據、當前資源情況和所處狀態(tài)。運營(yíng)型后臺界面的數據控制中心可以幫助用戶(hù)高效敏捷地盡管運營(yíng)管理。
  
  營(yíng)型后臺界面主要特點(diǎn)
  2)分析型后臺界面
  與運營(yíng)型后臺界面相比,分析型后臺界面通過(guò)提供更為全面的信息,主要用于分析和決策,對時(shí)效性要求不高。分析型后臺界面主要是為幫助用戶(hù)更好地了解數據,分析趨勢和助力決策。
  
  分析型后臺界面主要特點(diǎn)
  用戶(hù)需求決定了要設計哪一種后臺界面。產(chǎn)品可能具有很多功能,不同的管理者也有不同的訴求,設計需要因地制宜。設計師經(jīng)常容易混淆這兩種類(lèi)型,為期望得到快速響應和采取行動(dòng)的用戶(hù)卻提供一大堆的分析數據。反之亦然。
  2.正確地展示數據
  后臺界面中的數據展示是一項復雜的設計,尤其在后臺界面上展示多種類(lèi)型數據時(shí),不管是靜態(tài)還是實(shí)時(shí)變化的信息,都具有很強的挑戰性。如果選錯了圖表類(lèi)型或者直接默認為通用的數據可視化模版,可能會(huì )使用戶(hù)感到困惑或誤讀數據。根據用戶(hù)需要查看的內容,我提供了一些可視化建議:
  
  這類(lèi)圖表用于展示數據關(guān)系
  散點(diǎn)圖主要用于相關(guān)性和分布性的分析;氣泡圖將第三維度引入圖表;網(wǎng)絡(luò )圖也很方便,數據間的節點(diǎn)越大越重要。
  
  這類(lèi)圖表用于比較數據
  在比較一組或多組數據時(shí),使用可視化的圖表要比看網(wǎng)格中的數字簡(jiǎn)單多了。柱形圖和折線(xiàn)圖是最常用的類(lèi)型。我的建議是:
  – 時(shí)間維度應始終用X軸展示,時(shí)間從左向右
  – 當使用水平或垂直條形圖時(shí),嘗試按最大值比例設計條形而不是隨意設計
  – 使用折線(xiàn)圖時(shí),不要顯示超過(guò)5個(gè)值;使用條形圖時(shí),不要顯示超過(guò)7個(gè)值
  
  這類(lèi)圖表用于展示組成部分
  在數據可視化方面,餅圖和環(huán)形圖不容易使用。這類(lèi)圖表最常用到,但同時(shí)也最容易被誤用。因為餅圖和環(huán)形圖的組件太多,相似值很多,所以閱讀體驗很差。人們在瀏覽餅圖和環(huán)形圖的角度和區域時(shí),并不能輕易看出差值。
  
  類(lèi)圖表用于展示分布情況
  分布圖可以幫助你了解數據中的異常值,正態(tài)分布和信息范圍。
  
  避免使用的圖表類(lèi)型
  要避免使用某些圖表類(lèi)型。過(guò)去,圖表數據展示對于后臺界面設計很重要,但現在擬物化設計已經(jīng)過(guò)時(shí)了。3D圖表和過(guò)度設計的圖表可讀性很差,分散了人們對數據的注意力,并且很難開(kāi)發(fā),所以沒(méi)必要這樣設計。
  
  選擇不同圖表類(lèi)型
  選擇圖表時(shí),可以考慮幾個(gè)問(wèn)題:
  – 在一個(gè)圖表中,要顯示幾個(gè)變量?
  – 要顯示不同時(shí)間的值,還是不同項目或者不同組的值?
  – 每個(gè)變量要顯示幾個(gè)數據點(diǎn)?
  3.命名規范、日期格式和數值劃分要統一清晰
  后臺界面主要為了快速獲得信息,所以每個(gè)細節都很重要。使用清晰框架的最大好處是數據一致性。如果數據在每個(gè)工具中以相同的方式命名,則可以更輕松地使用這些工具。一個(gè)框架,就可以解決所有問(wèn)題。
  4.定義布局、順序和優(yōu)先級
  網(wǎng)格可以幫助您輕松實(shí)現對齊和統一,在設計中創(chuàng )建基本結構和骨架。它們由“隱形”線(xiàn)組成,在線(xiàn)上可以放置設計元素。網(wǎng)格可以將所有元素整合在一個(gè)系統的體系中,并且使界面更有條理。這對后臺界面設計至關(guān)重要,因為網(wǎng)格可以將大量的信息布局地更為緊湊。
  
  網(wǎng)格與模塊
  在布局信息時(shí),要注意:
  通常,人們最先關(guān)注到屏幕左上角的區域,所以可以把關(guān)鍵信息從左到右布局。當然有些地區人們的閱讀習慣可能是相反的。人們讀完一行后,會(huì )繼續下一行的閱讀。所以當一段信息基于另一段信息時(shí),要注意它們的前后順序,方便用戶(hù)更好地前后查閱信息、快速瀏覽。
  
  閱讀習慣和優(yōu)先級布局
  5.使用結構統一的組件
  定義網(wǎng)格后,就可以用多種組件來(lái)承載信息、圖表和控件了??ㄆ且环N非常簡(jiǎn)單好用的排版方式??ㄆ畲蟮膬?yōu)勢在于可以無(wú)限地修改、操作和擴展。對于響應式設計,卡片是不錯的選擇,因為卡片是一種易于擴展或縮小的內容容器。
  片可以包含信息、圖表和控件
  卡片的一個(gè)重要特點(diǎn)是所有卡片的控件和數據的排版統一。將名稱(chēng)放在左上角,將視圖控件或操作放到卡片右上角,剩下的就是內容。當所有卡片結構統一時(shí),用戶(hù)就更容易使用界面,輕松找到想要的內容。
  
  排版統一
  涉及響應式設計或者用戶(hù)定制時(shí),使用以上推薦的排版就有不錯的靈活性。當卡片放大或縮小時(shí),所有主要的控件仍然在特定的位置。這對開(kāi)發(fā)和設計的整體可擴展性來(lái)說(shuō),十分有幫助。
  6.擴大留白
  白色區域,也就是負空間,指的是在設計布局中元素之間的區域。用戶(hù)可能并不了解負空間,但是設計師需要特別注意。如果負空間不平衡,這個(gè)界面的易讀性就很差。因此負空間和其他排版元素一樣重要。
  
  12px和24px間距的視覺(jué)差異
  7.不要隱藏信息或過(guò)分依賴(lài)交互
  后臺界面主要為了快速的了解大概信息,但如果涉及滾動(dòng)或過(guò)多的交互事件,就會(huì )拖慢用戶(hù)的使用效率。
  
  高樓大廈的既視感
  設計師最常犯的錯誤,就是設計可滾動(dòng)的、長(cháng)后臺界面。他們想用簡(jiǎn)潔的方式展示更多的信息,就會(huì )從上到下排版,以防太多的信息堆積到一起,讓用戶(hù)難以理解。但這會(huì )導致只有屏幕上的信息是可見(jiàn)的,不滾動(dòng)頁(yè)面就看不到下面的信息,所以用戶(hù)很難注意到下面的信息。既然這樣,干嘛還要放這些很難注意到的信息呢?
  解決辦法是對信息進(jìn)行優(yōu)先級排序,在進(jìn)行充分的研究和訪(fǎng)談后,應該能夠識別關(guān)鍵內容,只用屏幕可見(jiàn)區域來(lái)顯示關(guān)鍵內容。不要長(cháng)篇大論地講故事,要展示提煉的關(guān)鍵信息。額外的交互可以作為容納更多內容的一種方式,而不是讓用戶(hù)被過(guò)多的數據壓垮。
  
  要依賴(lài)過(guò)多交互顯示信息
  交互有助于界面上次要信息展示。但完全依賴(lài)交互,以此作為使用后臺界面的主要方式,就是大錯特錯的。在以上的示例中,用戶(hù)不得不在多個(gè)選項卡中痛苦地切換,來(lái)獲取完整的圖表。那些在隱藏選項卡上的信息可讀性就很差,就像屏幕下方被隱藏的信息一樣。
  
  后臺界面上信息過(guò)多
  后臺界面上,設計的信息過(guò)多,就會(huì )適得其反。一定要知道,人類(lèi)對于多個(gè)事物的記性很差。不要對用戶(hù)期望過(guò)高,不要讓用戶(hù)對太多數據應接不暇。最多用5-7個(gè)組件來(lái)創(chuàng )建頁(yè)面。否則,用戶(hù)很難專(zhuān)注獲取清晰的信息概覽。
  8.個(gè)性化而不是自定義
  用戶(hù)希望看到與他們個(gè)人需求相關(guān)的內容。個(gè)性化和自定義可以使用戶(hù)看到對他們自身重要內容。個(gè)性化由系統自身設定。系統ID用于識別用戶(hù),并為用戶(hù)提供與其角色匹配的內容、體驗或功能。自定義則是由用戶(hù)自身完成。為了滿(mǎn)足特定需求,用戶(hù)可以在系統里配置布局、內容或系統功能來(lái)定制或改變體驗。
  
  自定義后臺界面
  在界面足夠個(gè)性化的基礎上,可以給用戶(hù)更多的選擇自定義后臺界面。但通常,設計多種自定義的方式是一個(gè)借口,逃避枯燥的用戶(hù)調研過(guò)程,不去真正挖掘每一個(gè)用戶(hù)角色真正的需求。最后,就把一切都甩給用戶(hù),讓他自己去創(chuàng )建頁(yè)面。
  9.融合數據表或列表時(shí),確??山换デ覕祿R
  展示多項目的大量信息時(shí),數據表是不錯的解決方案。例如客戶(hù)列表里姓名、狀態(tài)、聯(lián)系人和最近活動(dòng)等等,這些用數據表展示是最好的辦法。數據表有很多優(yōu)點(diǎn),空間利用好、擴展性好、開(kāi)發(fā)簡(jiǎn)便。用戶(hù)也很習慣和網(wǎng)格打交道,因為大多數用戶(hù)使用excel很多年了,容易查找和修改數據。查閱以下文章,了解數據表的更多內容。
  @taras.bakusevych/data-tables-design-3c705b106a64
  10.最后才是考慮視覺(jué)效果
  由于數據可視化界面是視覺(jué)沖擊力最強的后臺界面,因此通常對設計師來(lái)說(shuō)視覺(jué)效果成了設計的首要任務(wù)。相反,我建議最后再設計數據可視化界面總覽全局。數據可視化是其他所有內容的摘要視圖,顯示應用各個(gè)部分的關(guān)鍵信息,最后設計它更切實(shí)可行。
  否則,在處理其他頁(yè)面時(shí)會(huì )不斷返回并更新數據可視化界面。此外,一旦設計完大部分界面了,再做數據可視化就可以使用大量的組件了。
  原文:

2天搭建出Instagram后臺,程序員真的值得高薪

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 129 次瀏覽 ? 2022-06-13 09:33 ? 來(lái)自相關(guān)話(huà)題

  2天搭建出Instagram后臺,程序員真的值得高薪
  Python是最常用的編程語(yǔ)言之一,這已不是什么秘密。在過(guò)去的五年中,Python一直是“最受歡迎的編碼語(yǔ)言”,而且還在持續發(fā)光發(fā)熱。
  但是,如果你想要做網(wǎng)站開(kāi)發(fā),單純會(huì )Python是絕對不夠的。此時(shí),就需要Django網(wǎng)絡(luò )開(kāi)發(fā)框架的輔助,它可以讓您專(zhuān)注于編寫(xiě)應用程序或網(wǎng)站,不必陷入繁瑣的工作困境。
  《Big Data - Spark 項目實(shí)戰》
  2019最新課程試聽(tīng):
  什么是大數據以及什么是大數據工程師
  課程適合的人群以及涵蓋的內容
  大數據與傳統代碼的區別
  報名截止時(shí)間:
  北京時(shí)間 7月07日周日04:00
  美西時(shí)間7月06日周六 13:00
  美東時(shí)間 7月06日周六 16:00
  試聽(tīng)回放鏈接:
  墻外鏈接: 或
  墻內鏈接:

  而且根據Indeed的統計,掌握Django可以勝任很多方面的職業(yè),包括全棧工程師和高級網(wǎng)站工程師,且年薪基本上都超過(guò)10萬(wàn)美元。
  國內拉勾網(wǎng)或獵聘網(wǎng)上Python/Django開(kāi)發(fā)工程師,有2-3年經(jīng)驗的收入都在30萬(wàn)/年以上,相比于其它行業(yè)畢業(yè)2-3年的學(xué)生收入而言也高出不少。
  
  Python語(yǔ)言+Django框架=web開(kāi)發(fā)的黃金組合
  隨著(zhù)Python熱潮來(lái)襲,越來(lái)越多人用Python開(kāi)發(fā)網(wǎng)站和網(wǎng)絡(luò )應用;Python作為編程語(yǔ)言沒(méi)問(wèn)題,但在搭建網(wǎng)站上就略顯遜色。
  這時(shí)候使用Django網(wǎng)絡(luò )開(kāi)發(fā)框架,就可以更高效、直接地將網(wǎng)絡(luò )爬蟲(chóng)的結果進(jìn)行編輯和管理。
  由于Django是基于Python寫(xiě)出來(lái)的,一個(gè)服務(wù)器上或一種開(kāi)發(fā)環(huán)境下兼容性完全不是問(wèn)題。
  開(kāi)發(fā)企業(yè)級網(wǎng)站離不開(kāi)Django
  先來(lái)看看哪些知名網(wǎng)站是用Python和Django框架聯(lián)合開(kāi)發(fā)的吧。
  Disqus
  Pinterest
  Instagram
  Washington Post
  從以上不難看出:新聞咨詢(xún)類(lèi)網(wǎng)站、社交網(wǎng)絡(luò )網(wǎng)站或電子商務(wù)網(wǎng)站都需要使用更高級的網(wǎng)絡(luò )開(kāi)發(fā)框架來(lái)簡(jiǎn)化開(kāi)發(fā)流程——不然用一行一行代碼從零寫(xiě)起實(shí)現一些最簡(jiǎn)單的網(wǎng)站功能實(shí)在是太降低工作效率了。
  Django自身功能強大,使用文檔完善
  Django與基于其它語(yǔ)言的網(wǎng)絡(luò )開(kāi)發(fā)框架如Laravel, ThinkPHP相比,自身功能足夠強大,非常適合用于搭建高性能的優(yōu)秀網(wǎng)站。
  主要著(zhù)重在以下幾個(gè)點(diǎn):
  01完整的錯誤信息提示
  如果在開(kāi)發(fā)過(guò)程中出現了錯誤或異常,Django可以很直接定位指出錯誤,大大提高工作效率,避免花大量時(shí)間找錯。
  02自帶后臺管理系統admin
  只需通過(guò)簡(jiǎn)單的幾行配置和代碼就可以實(shí)現一個(gè)完整的后臺數據管理控制平臺。用簡(jiǎn)單方便的手段直接管理你的網(wǎng)站。
  03豐富的模板系統
  采用Template模板語(yǔ)言,設計簡(jiǎn)約,方便,易上手。不僅模板本身功能強大,而且還能自定義模板標簽。
  04強大的數據庫功能
  Django自身有著(zhù)非常強大的數據庫操作接口,可以和各種數據庫直接對接,如果使用過(guò)程中有需要的話(huà)還可以直接對接SQL。
  05網(wǎng)址映射靈活
  Django使用的是正則表達式,讓網(wǎng)址的靈活性和優(yōu)雅性更上一個(gè)臺階。在使用搭建的時(shí)候就能自定義自己的網(wǎng)址域名了。
  06先進(jìn)的App設計理念
  App是可插拔的,是不可多得的思想。不需要了,可以直接刪除,對系統整體影響不大。
  07完善的文檔
  Django已經(jīng)誕生多年,已經(jīng)有了很多的使用案例,擁有十分完善的在線(xiàn)文檔,在使用上遇到問(wèn)題時(shí)可以直接搜索解決,非常方便新人上手。
  總而言之,學(xué)習網(wǎng)絡(luò )開(kāi)發(fā)框架,一個(gè)Django就夠了!
  學(xué)了Django,我的簡(jiǎn)歷會(huì )更好看嗎?
  企業(yè)在照片web開(kāi)發(fā)人員時(shí),除了看重候選人的Python語(yǔ)言能力,還會(huì )要求他懂得網(wǎng)絡(luò )開(kāi)發(fā)框架如Django。如果你作為Python網(wǎng)站開(kāi)發(fā)人員,連Django都不知道,那么你應聘相關(guān)崗位估計也沒(méi)多大戲了。
  
  去哪里可以找到一起學(xué)習的小伙伴?
  許多城市都有Django特定的團體,如Django區、Django Boston和舊金山Django。
  在這里,各路開(kāi)發(fā)人員都可以暢所欲言,一旦遇到了任何困難,也可以及時(shí)求助。
  
  兩天就能學(xué)成,一點(diǎn)也不夸張
  Django作為一個(gè)成熟的網(wǎng)站和網(wǎng)絡(luò )應用開(kāi)發(fā)框架,有著(zhù)大而全的模塊和功能。
  對于剛從事網(wǎng)站開(kāi)發(fā)或剛熟悉Python語(yǔ)言的新手而言,覺(jué)得學(xué)Django好難是一件非常普遍的事情。
  但是,相比于長(cháng)線(xiàn)學(xué)習,Django是一門(mén)較為特殊的課程。因為只要掌握對方式,2天就能搞定。
  也就是說(shuō),只需要一個(gè)周末的時(shí)間,你就可以用Django搭建一個(gè)網(wǎng)站框架,不出意外,下周你的簡(jiǎn)歷就會(huì )多一處閃光點(diǎn)。
  很多學(xué)習Django的人都是由Python小白轉過(guò)來(lái)的,一邊自學(xué)一邊練習。
  我見(jiàn)過(guò)很多人學(xué)到一半就放棄了, 越學(xué)越迷茫。一是因為在實(shí)踐過(guò)程中碰到很多bug沒(méi)人指導,二是因為不知道學(xué)到什么程度才能找到一份不錯的工作有所回報。
  那么,如何完成上文提到的周末學(xué)好Django?
  答案是:來(lái)上九章算法新開(kāi)設的《Django周末速成班》!
  兩天時(shí)間,一個(gè)周末,16課時(shí),幫你搞定Django最好的選擇!
  Q:
  2天的學(xué)習,我能達到什么水平?
  A:
  獨自用Django搭建 Instagram 后端系統。
  開(kāi)發(fā)比較專(zhuān)業(yè)的博客(含登錄注冊,用戶(hù)關(guān)注,點(diǎn)贊,內容推薦和權限管理)
  或者和一個(gè)基本的電子商務(wù)網(wǎng)站(使用Memcached和Redis,包含購物車(chē)和使用支付寶支付接口完成在線(xiàn)支付)
  如果你夠聰明,還能熟練地利用DRF開(kāi)發(fā)Web API, 并且非常了解django項目的部署和配置。
  適合人群
  想擁有亮眼的網(wǎng)頁(yè)搭建項目的同學(xué);
  想學(xué)做網(wǎng)站但又不知從何開(kāi)始的同學(xué);
  想成為網(wǎng)頁(yè)工程師的同學(xué);
  想要接觸全棧開(kāi)發(fā)的同學(xué)。
  課程主要內容
  為什么要學(xué)習Django?
  搭建你的第一個(gè)Django服務(wù)器;
  后端功能實(shí)現及前后端交互;
  服務(wù)器部署和REST。
  講師介紹
  
  課程亮點(diǎn)>>>>
  周末速成直播班模式
  本課采用周末速成模式,如果你有工作,或是周一到周五抽不出時(shí)間,或者是想要速成Django技能,就可以選擇這門(mén)課,周末兩天,16個(gè)課時(shí),讓你速成Django。
  >>>>
  理論和實(shí)戰相配合
  這門(mén)課的大部分時(shí)間都是在教你配置環(huán)境搭建網(wǎng)站解決問(wèn)題,實(shí)戰的項目不僅可以幫助你更快更好的理解Django的實(shí)際應用,更能讓你在簡(jiǎn)歷上寫(xiě)上一條亮眼的項目。
  >>>>
  課程收獲
  將幫助你掌握Django框架;
  在你的簡(jiǎn)歷中增加網(wǎng)站搭建的項目經(jīng)歷;
  能夠勝任網(wǎng)站工程師的工作;
  可以學(xué)習全棧開(kāi)發(fā)的入門(mén)知識。
  >>>>
  免費試聽(tīng)內容
  >>>>
  報名方式
  免費試聽(tīng)課
  北京時(shí)間 2019年7月14日 周日00:00~01:30
  美東時(shí)間 2019年7月13日周六12:00~13:30
  美西時(shí)間 2019年7月13日 周六09:00~10:30
  長(cháng)按二維碼即可免費報名試聽(tīng) 查看全部

  2天搭建出Instagram后臺,程序員真的值得高薪
  Python是最常用的編程語(yǔ)言之一,這已不是什么秘密。在過(guò)去的五年中,Python一直是“最受歡迎的編碼語(yǔ)言”,而且還在持續發(fā)光發(fā)熱。
  但是,如果你想要做網(wǎng)站開(kāi)發(fā),單純會(huì )Python是絕對不夠的。此時(shí),就需要Django網(wǎng)絡(luò )開(kāi)發(fā)框架的輔助,它可以讓您專(zhuān)注于編寫(xiě)應用程序或網(wǎng)站,不必陷入繁瑣的工作困境。
  《Big Data - Spark 項目實(shí)戰》
  2019最新課程試聽(tīng):
  什么是大數據以及什么是大數據工程師
  課程適合的人群以及涵蓋的內容
  大數據與傳統代碼的區別
  報名截止時(shí)間:
  北京時(shí)間 7月07日周日04:00
  美西時(shí)間7月06日周六 13:00
  美東時(shí)間 7月06日周六 16:00
  試聽(tīng)回放鏈接:
  墻外鏈接: 或
  墻內鏈接:

  而且根據Indeed的統計,掌握Django可以勝任很多方面的職業(yè),包括全棧工程師和高級網(wǎng)站工程師,且年薪基本上都超過(guò)10萬(wàn)美元。
  國內拉勾網(wǎng)或獵聘網(wǎng)上Python/Django開(kāi)發(fā)工程師,有2-3年經(jīng)驗的收入都在30萬(wàn)/年以上,相比于其它行業(yè)畢業(yè)2-3年的學(xué)生收入而言也高出不少。
  
  Python語(yǔ)言+Django框架=web開(kāi)發(fā)的黃金組合
  隨著(zhù)Python熱潮來(lái)襲,越來(lái)越多人用Python開(kāi)發(fā)網(wǎng)站和網(wǎng)絡(luò )應用;Python作為編程語(yǔ)言沒(méi)問(wèn)題,但在搭建網(wǎng)站上就略顯遜色。
  這時(shí)候使用Django網(wǎng)絡(luò )開(kāi)發(fā)框架,就可以更高效、直接地將網(wǎng)絡(luò )爬蟲(chóng)的結果進(jìn)行編輯和管理。
  由于Django是基于Python寫(xiě)出來(lái)的,一個(gè)服務(wù)器上或一種開(kāi)發(fā)環(huán)境下兼容性完全不是問(wèn)題。
  開(kāi)發(fā)企業(yè)級網(wǎng)站離不開(kāi)Django
  先來(lái)看看哪些知名網(wǎng)站是用Python和Django框架聯(lián)合開(kāi)發(fā)的吧。
  Disqus
  Pinterest
  Instagram
  Washington Post
  從以上不難看出:新聞咨詢(xún)類(lèi)網(wǎng)站、社交網(wǎng)絡(luò )網(wǎng)站或電子商務(wù)網(wǎng)站都需要使用更高級的網(wǎng)絡(luò )開(kāi)發(fā)框架來(lái)簡(jiǎn)化開(kāi)發(fā)流程——不然用一行一行代碼從零寫(xiě)起實(shí)現一些最簡(jiǎn)單的網(wǎng)站功能實(shí)在是太降低工作效率了。
  Django自身功能強大,使用文檔完善
  Django與基于其它語(yǔ)言的網(wǎng)絡(luò )開(kāi)發(fā)框架如Laravel, ThinkPHP相比,自身功能足夠強大,非常適合用于搭建高性能的優(yōu)秀網(wǎng)站。
  主要著(zhù)重在以下幾個(gè)點(diǎn):
  01完整的錯誤信息提示
  如果在開(kāi)發(fā)過(guò)程中出現了錯誤或異常,Django可以很直接定位指出錯誤,大大提高工作效率,避免花大量時(shí)間找錯。
  02自帶后臺管理系統admin
  只需通過(guò)簡(jiǎn)單的幾行配置和代碼就可以實(shí)現一個(gè)完整的后臺數據管理控制平臺。用簡(jiǎn)單方便的手段直接管理你的網(wǎng)站。
  03豐富的模板系統
  采用Template模板語(yǔ)言,設計簡(jiǎn)約,方便,易上手。不僅模板本身功能強大,而且還能自定義模板標簽。
  04強大的數據庫功能
  Django自身有著(zhù)非常強大的數據庫操作接口,可以和各種數據庫直接對接,如果使用過(guò)程中有需要的話(huà)還可以直接對接SQL。
  05網(wǎng)址映射靈活
  Django使用的是正則表達式,讓網(wǎng)址的靈活性和優(yōu)雅性更上一個(gè)臺階。在使用搭建的時(shí)候就能自定義自己的網(wǎng)址域名了。
  06先進(jìn)的App設計理念
  App是可插拔的,是不可多得的思想。不需要了,可以直接刪除,對系統整體影響不大。
  07完善的文檔
  Django已經(jīng)誕生多年,已經(jīng)有了很多的使用案例,擁有十分完善的在線(xiàn)文檔,在使用上遇到問(wèn)題時(shí)可以直接搜索解決,非常方便新人上手。
  總而言之,學(xué)習網(wǎng)絡(luò )開(kāi)發(fā)框架,一個(gè)Django就夠了!
  學(xué)了Django,我的簡(jiǎn)歷會(huì )更好看嗎?
  企業(yè)在照片web開(kāi)發(fā)人員時(shí),除了看重候選人的Python語(yǔ)言能力,還會(huì )要求他懂得網(wǎng)絡(luò )開(kāi)發(fā)框架如Django。如果你作為Python網(wǎng)站開(kāi)發(fā)人員,連Django都不知道,那么你應聘相關(guān)崗位估計也沒(méi)多大戲了。
  
  去哪里可以找到一起學(xué)習的小伙伴?
  許多城市都有Django特定的團體,如Django區、Django Boston和舊金山Django。
  在這里,各路開(kāi)發(fā)人員都可以暢所欲言,一旦遇到了任何困難,也可以及時(shí)求助。
  
  兩天就能學(xué)成,一點(diǎn)也不夸張
  Django作為一個(gè)成熟的網(wǎng)站和網(wǎng)絡(luò )應用開(kāi)發(fā)框架,有著(zhù)大而全的模塊和功能。
  對于剛從事網(wǎng)站開(kāi)發(fā)或剛熟悉Python語(yǔ)言的新手而言,覺(jué)得學(xué)Django好難是一件非常普遍的事情。
  但是,相比于長(cháng)線(xiàn)學(xué)習,Django是一門(mén)較為特殊的課程。因為只要掌握對方式,2天就能搞定。
  也就是說(shuō),只需要一個(gè)周末的時(shí)間,你就可以用Django搭建一個(gè)網(wǎng)站框架,不出意外,下周你的簡(jiǎn)歷就會(huì )多一處閃光點(diǎn)。
  很多學(xué)習Django的人都是由Python小白轉過(guò)來(lái)的,一邊自學(xué)一邊練習。
  我見(jiàn)過(guò)很多人學(xué)到一半就放棄了, 越學(xué)越迷茫。一是因為在實(shí)踐過(guò)程中碰到很多bug沒(méi)人指導,二是因為不知道學(xué)到什么程度才能找到一份不錯的工作有所回報。
  那么,如何完成上文提到的周末學(xué)好Django?
  答案是:來(lái)上九章算法新開(kāi)設的《Django周末速成班》!
  兩天時(shí)間,一個(gè)周末,16課時(shí),幫你搞定Django最好的選擇!
  Q:
  2天的學(xué)習,我能達到什么水平?
  A:
  獨自用Django搭建 Instagram 后端系統。
  開(kāi)發(fā)比較專(zhuān)業(yè)的博客(含登錄注冊,用戶(hù)關(guān)注,點(diǎn)贊,內容推薦和權限管理)
  或者和一個(gè)基本的電子商務(wù)網(wǎng)站(使用Memcached和Redis,包含購物車(chē)和使用支付寶支付接口完成在線(xiàn)支付)
  如果你夠聰明,還能熟練地利用DRF開(kāi)發(fā)Web API, 并且非常了解django項目的部署和配置。
  適合人群
  想擁有亮眼的網(wǎng)頁(yè)搭建項目的同學(xué);
  想學(xué)做網(wǎng)站但又不知從何開(kāi)始的同學(xué);
  想成為網(wǎng)頁(yè)工程師的同學(xué);
  想要接觸全棧開(kāi)發(fā)的同學(xué)。
  課程主要內容
  為什么要學(xué)習Django?
  搭建你的第一個(gè)Django服務(wù)器;
  后端功能實(shí)現及前后端交互;
  服務(wù)器部署和REST。
  講師介紹
  
  課程亮點(diǎn)>>>>
  周末速成直播班模式
  本課采用周末速成模式,如果你有工作,或是周一到周五抽不出時(shí)間,或者是想要速成Django技能,就可以選擇這門(mén)課,周末兩天,16個(gè)課時(shí),讓你速成Django。
  >>>>
  理論和實(shí)戰相配合
  這門(mén)課的大部分時(shí)間都是在教你配置環(huán)境搭建網(wǎng)站解決問(wèn)題,實(shí)戰的項目不僅可以幫助你更快更好的理解Django的實(shí)際應用,更能讓你在簡(jiǎn)歷上寫(xiě)上一條亮眼的項目。
  >>>>
  課程收獲
  將幫助你掌握Django框架;
  在你的簡(jiǎn)歷中增加網(wǎng)站搭建的項目經(jīng)歷;
  能夠勝任網(wǎng)站工程師的工作;
  可以學(xué)習全棧開(kāi)發(fā)的入門(mén)知識。
  >>>>
  免費試聽(tīng)內容
  >>>>
  報名方式
  免費試聽(tīng)課
  北京時(shí)間 2019年7月14日 周日00:00~01:30
  美東時(shí)間 2019年7月13日周六12:00~13:30
  美西時(shí)間 2019年7月13日 周六09:00~10:30
  長(cháng)按二維碼即可免費報名試聽(tīng)

最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2022-09-24 15:06 ? 來(lái)自相關(guān)話(huà)題

  最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生
  ??作者簡(jiǎn)介:一位熱愛(ài)將邏輯思維轉化為代碼的技術(shù)博主
  作者主頁(yè):【主頁(yè)-獲取更多優(yōu)質(zhì)源碼】
  Web前端最終作品:【已完成項目?jì)?yōu)秀實(shí)戰案例(1000套)】
  程序員一個(gè)有趣的告白方法:【HTML七夕情人節告白網(wǎng)頁(yè)制作(110套)】
  超酷的Echarts大屏可視化源碼:【Echarts大屏展示大數據平臺可視化(150套)】
  HTML+CSS+JS示例代碼:[?HTML+CSS+JS示例代碼(炫酷特效網(wǎng)頁(yè)代碼)持續更新中...]
  免費實(shí)用的網(wǎng)絡(luò )前端學(xué)習指南:
  作者簡(jiǎn)介:歷任研發(fā)工程師、技術(shù)組長(cháng)、教學(xué)主任; 2016年和2020年被評為CSDN十大博客之星。十年寒冰,難冷熱血;許多年過(guò)去了,變化之后,事情是非對錯。然而,對技術(shù)的探索和追求從未停止。堅持原創(chuàng ),熱心分享,不忘初心,繼往開(kāi)來(lái)!
  文章目錄
  一、?網(wǎng)站標題
  ?學(xué)生管理系統網(wǎng)頁(yè)設計、OA管理系統、后臺管理模板、智能停車(chē)系統等設計制作網(wǎng)站.
  二、??網(wǎng)站說(shuō)明
  ?HTML網(wǎng)頁(yè)設計,采用DIV+CSS布局,有多個(gè)頁(yè)面,布局干凈,內容豐富,主題清晰,首頁(yè)采用CSS布局更豐富,色彩鮮艷鮮艷,并且導航和文本字體設置為不同的字體大小。導航區域設置了背景圖像。子頁(yè)面包括純文本頁(yè)面和帶有圖片和文本的頁(yè)面。
  一個(gè)好的網(wǎng)頁(yè)設計應該包括(取決于個(gè)人要求)
  頁(yè)面分為四個(gè)部分:頁(yè)眉、菜單導航欄(最好是下拉)、中間內容部分和頁(yè)腳。所有頁(yè)面都相互超鏈接,可以轉到由多個(gè)頁(yè)面組成的二級和三級頁(yè)面。頁(yè)面樣式和樣式統一布局,顯示正常,不雜亂,使用Div+Css技術(shù)。菜單美觀(guān)醒目,二級菜單可以正常彈出和跳轉??蛇xJS特效,如圖片旋轉的定時(shí)切換和手動(dòng)切換。頁(yè)面中有多媒體元素,如gif,視頻,音樂(lè ),表單技術(shù)的使用。頁(yè)面清爽、美觀(guān)、大方、與眾不同。 不僅要能夠呈現用戶(hù)所需要的內容,還要滿(mǎn)足布局好、界面美觀(guān)、配色優(yōu)雅、表現形式多樣的要求。 三、網(wǎng)站簡(jiǎn)介
  網(wǎng)站布局:擬采用目前主流的浮動(dòng)網(wǎng)頁(yè)布局結構,兼容各大主流瀏覽器,顯示效果穩定。
  網(wǎng)站程序:擬使用最新的網(wǎng)頁(yè)編程語(yǔ)言HTML5+CSS3+JS編程語(yǔ)言完成網(wǎng)站的功能設計。并保證網(wǎng)站代碼兼容目前市面上所有主流瀏覽器,打開(kāi)后立即可以看到網(wǎng)站的效果。
  網(wǎng)站素材:我們計劃從各個(gè)平臺采集好看的圖片素材,精心挑選適合網(wǎng)頁(yè)風(fēng)格的圖片,然后用PS制作適合網(wǎng)頁(yè)大小的圖片。
  網(wǎng)站文件:網(wǎng)站系統文件類(lèi)型包括:html網(wǎng)頁(yè)結構文件、css網(wǎng)頁(yè)樣式文件、js網(wǎng)頁(yè)特效文件、images網(wǎng)頁(yè)圖片文件;
  網(wǎng)頁(yè)編輯:網(wǎng)頁(yè)作品代碼簡(jiǎn)單,可以使用任何HTML編輯軟件(如Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等)運行、修改和編輯。
  地點(diǎn):
  (1)html文件收錄:index.html為首頁(yè),其他html為二級頁(yè)面;
  (2)css文件收錄:css所有頁(yè)面樣式、文字滾動(dòng)、圖片放大等;
  (3)js文件收錄:js實(shí)現動(dòng)態(tài)輪播效果、表單提交、點(diǎn)擊事件等(js代碼用于個(gè)別網(wǎng)頁(yè))。
  四、網(wǎng)站演示
  五、?? 網(wǎng)站代碼 HTML 結構代碼
  
doctype html>



人員信息管理系統









人員管理后臺界面



首頁(yè)


人員查詢(xún)


組織機構維護


行業(yè)內人員信息


行業(yè)外人員信息


權限配置


通知管理


待辦事項





<p>
姓名:程皓
部門(mén):部門(mén)管理


中國煙草總公司職工進(jìn)修學(xué)院







function speckText(str){
//var request= new URLRequest();
var url = "http://tts.baidu.com/text2audi ... ot%3B + encodeURI(str); // baidu
//url = "http://translate.google.cn/tra ... ot%3B + encodeURI(str); // google
//request.url = encodeURI(url);
// request.contentType = "audio/mp3"; // for baidu
//request.contentType = "audio/mpeg"; // for google
var n = new Audio(url);
n.src = url;
n.play();
// $("...").play();
// var sound = new Sound(request);
// sound.play();
}
</p>
  CSS 樣式代碼
  
@import "style.css";
/***************reset樣式,保持瀏覽器樣式一致性******************/
* {
word-wrap: break-word;
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
p,
input[type="radio"],
input[type="checkbox"] {
margin: 0;
}
i {
font-style: normal;
}
a {
text-decoration: none;
cursor: pointer;
color: #666;
}
a:hover {
text-decoration: none;
outline: none;
color: #fff;
}
a.ie6:hover {
zoom: 1;
}
ul,
ol {
list-style: none;
}
a:focus {
outline: none;
color: #fff;
}
<p>
.leftBar .listItem .item.active .icon-15 {
display: block;
}
.leftBar .navBottom {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
color: #fff;
padding: 20px 0;
}
.leftBar .navBottom img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.leftBar .navBottom .person p {
padding: 0 10px;
opacity: 0.8;
}
.topBar {
position: fixed;
top: 0;
left: 0;
z-index: 1;
padding-left: 220px;
width: 100%;
height: 50px;
background: #fff;
-moz-box-shadow: 0 2px 12px #B9B9B9;
-webkit-box-shadow: 0 2px 12px #B9B9B9;
box-shadow: 0 2px 12px #B9B9B9;
min-width: 1200px;
}
.topBar .title {
font-size: 19px;
line-height: 50px;
padding-left: 20px;
letter-spacing: 1px;
}
.topBar .pull-right {
margin-right: 20px;
}
.topBar .pull-right i {
cursor: pointer;
position: relative;
font-size: 20px;
margin: 15px 8px;
display: inline-block;
}
.topBar .pull-right i.point:after {
content: "";
position: absolute;
top: 2px;
right: -2px;
display: block;
width: 6px;
height: 6px;
background: #FF6700;
border-radius: 50%;
}
.contentIndex {
position: fixed;
top: 50px;
left: 220px;
width: calc(100% - 220px);
height: calc(100% - 50px);
}
.contentIndex iframe {
width: 100%;
height: 100%;
}
</p>
  六、如何讓學(xué)習不再盲目
  21年程序員總結16條給編程菜鳥(niǎo)的忠告
  入門(mén)期間不要盲目看太多書(shū),找一本網(wǎng)上或身邊有經(jīng)驗的程序員推薦的教材,先系統學(xué)習。閱讀更多幫助文檔,幫助文檔就像游戲的玩法說(shuō)明,通關(guān)秘籍,該閱讀時(shí)不要太自信。菜鳥(niǎo)容易被對象、屬性、方法等詞混淆?這意味著(zhù)你連最基本的知識都沒(méi)有掌握。不要忽略任何看似不起眼的問(wèn)題,并經(jīng)常對其進(jìn)行總結以推斷其他事情。如果沒(méi)有積累足夠的知識和經(jīng)驗,就無(wú)法開(kāi)發(fā)出一個(gè)完整的項目。談?wù)撟钚碌募夹g(shù)比牢記過(guò)時(shí)的技術(shù)要好?;畹嚼?,學(xué)到老,只有一招半的功夫,也不能沖破江湖。讀懂的書(shū),讀不懂的書(shū)。書(shū)讀一百遍,自己看,別指望讀一遍就能掌握。請將教程中的示例付諸實(shí)踐,即使案例中有完整的源代碼。擴展您在教程中看到的有意義的示例;并將它們實(shí)際應用到您自己的工作中。不要錯過(guò)本教程中的任何練習 - 請全部完成并做筆記。水平是通過(guò)不斷的練習來(lái)完善和發(fā)展的,你和Daniel的區別只是經(jīng)驗的積累。每次學(xué)習到一個(gè)難點(diǎn),盡量把你的經(jīng)驗分享給朋友或者網(wǎng)上,讓別人理解,這說(shuō)明你真的掌握了。養成保存源文件的習慣,這些都是你積累的知識。不要張嘴問(wèn)問(wèn)題,學(xué)會(huì )自己尋找答案。比如google、百度、w3cschool上有很多編程相關(guān)的資料。您只需輸入關(guān)鍵字即可找到答案。 七、更多干貨
  1.如果我的博客對你有幫助,如果你喜歡我的博客內容,請一鍵“點(diǎn)贊”“??評論”“采集”!
  2.[跟我來(lái)|獲取更多源代碼 |高品質(zhì)文章]帶你學(xué)習各種前端插件、3D炫酷效果、圖片展示、文字效果,以及全站模板、大學(xué)畢業(yè)生HTML模板、期末作業(yè)模板等! “這里有很多前端開(kāi)發(fā)者,討論前端Node知識,互相學(xué)習”!
  3.
  歡迎交流學(xué)習以上內容及技術(shù)相關(guān)問(wèn)題
  解決方案:Google SEO優(yōu)化要怎么做?入行必知的谷歌SEO七大關(guān)鍵
  一直以來(lái),很多人在生活中遇到問(wèn)題的第一選擇就是打開(kāi)搜索引擎進(jìn)行搜索,這給搜索引擎帶來(lái)了大量的流量,搜索引擎會(huì )針對用戶(hù)的搜索< @k4@ >根據其收錄給定網(wǎng)頁(yè)并按權重排序,前幾頁(yè)的網(wǎng)頁(yè)基本上可以得到關(guān)鍵詞下的大部分流量,因為用戶(hù)很少需要轉很多頁(yè)來(lái)找到答案。
  因此,網(wǎng)頁(yè)之間對這個(gè)權重的競爭也非常復雜,而Google SEO(搜索引擎優(yōu)化)是每個(gè)跨境電商賣(mài)家的必修課。帶來(lái)巨大的流量,從而獲得更直接的消費和轉化。所以在這里我就告訴你谷歌SEO優(yōu)化的七個(gè)關(guān)鍵。
  一、合適的 URL/域
  在建立網(wǎng)站時(shí),需要先選擇一個(gè)合適的域名。域名的選擇會(huì )影響用戶(hù)的信任。比如最常見(jiàn)的.com后綴自然比其他后綴更受用戶(hù)信任。 并且域名要與你的內容或企業(yè)相關(guān),而且要盡量短,以便用戶(hù)理解域名的含義,便于記憶。和國內很多網(wǎng)站一樣,直接用拼音字母作為域名。真的很難忘。
  二、關(guān)鍵詞
  關(guān)鍵詞 可以說(shuō)是 SEO 中最重要的部分。在挖掘關(guān)鍵詞的過(guò)程中,不僅要對目標用戶(hù)的搜索習慣進(jìn)行研究,還要采集競品使用的關(guān)鍵詞,以便最好地掌握大部分信息,從而做出最佳 關(guān)鍵詞 選擇。
  
  三、網(wǎng)站框架
  一個(gè)合理的web框架,不僅可以提高搜索引擎的速度收錄,還可以提高用戶(hù)的瀏覽體驗。內容的更新和內容的布局也與網(wǎng)絡(luò )框架有關(guān)。
  四、提升訪(fǎng)問(wèn)體驗
  首先,每個(gè)瀏覽器的顯示效果其實(shí)會(huì )有些不同。所以前期要做好主流瀏覽器的適配,避免出現影響用戶(hù)閱讀體驗的顯示問(wèn)題。后期也可以嘗試使用一些分析工具。查看用戶(hù)最常使用哪些瀏覽器來(lái)查看您的 網(wǎng)站。
  五、網(wǎng)站開(kāi)啟速度
  這確實(shí)是最影響用戶(hù)體驗的一點(diǎn)。想象一下,如果用戶(hù)在搜索結果中同時(shí)打開(kāi)三個(gè)帶有標題內容的網(wǎng)頁(yè),用戶(hù)會(huì )首先查看加載速度最快的網(wǎng)頁(yè)。在第一次加載網(wǎng)頁(yè)后,用戶(hù)可能已經(jīng)解決了他們的需求,所以這很重要!
  
  六、高級內容
  優(yōu)質(zhì)的內容一直是??搜索引擎搜索的對象,搜索引擎也希望用戶(hù)每次搜索都能得到想要的答案。 網(wǎng)站的優(yōu)質(zhì)內容可以留住用戶(hù),解決用戶(hù)的需求,讓用戶(hù)毫不猶豫的將網(wǎng)站放入采集夾,這是提升轉化率最基本的東西。
  七、優(yōu)質(zhì)外鏈
  外部鏈接是一個(gè)比較重要的部分。外部鏈接的質(zhì)量會(huì )對SEO產(chǎn)生影響。谷歌對此也毫不含糊。懲罰。
  說(shuō)到這里,想必大家已經(jīng)對Google SEO有一個(gè)大概的了解了,但同樣的道理。做海外業(yè)務(wù),你需要一個(gè)海外代理。為此,我之前使用過(guò)國內的海外代理。它被稱(chēng)為智能代理。新手的時(shí)候就試過(guò)了,因為比較低。我發(fā)現IP相當穩定,安全性好,非常適合海外業(yè)務(wù)。最后,只希望這篇文章能給大家帶來(lái)一些幫助。如果你覺(jué)得關(guān)于谷歌SEO還有什么想了解的,可以在評論區問(wèn)我! 查看全部

  最佳實(shí)踐:【web課程設計網(wǎng)頁(yè)規劃與設計】基于HTML+CSS+JavaScript大學(xué)生
  ??作者簡(jiǎn)介:一位熱愛(ài)將邏輯思維轉化為代碼的技術(shù)博主
  作者主頁(yè):【主頁(yè)-獲取更多優(yōu)質(zhì)源碼】
  Web前端最終作品:【已完成項目?jì)?yōu)秀實(shí)戰案例(1000套)】
  程序員一個(gè)有趣的告白方法:【HTML七夕情人節告白網(wǎng)頁(yè)制作(110套)】
  超酷的Echarts大屏可視化源碼:【Echarts大屏展示大數據平臺可視化(150套)】
  HTML+CSS+JS示例代碼:[?HTML+CSS+JS示例代碼(炫酷特效網(wǎng)頁(yè)代碼)持續更新中...]
  免費實(shí)用的網(wǎng)絡(luò )前端學(xué)習指南:
  作者簡(jiǎn)介:歷任研發(fā)工程師、技術(shù)組長(cháng)、教學(xué)主任; 2016年和2020年被評為CSDN十大博客之星。十年寒冰,難冷熱血;許多年過(guò)去了,變化之后,事情是非對錯。然而,對技術(shù)的探索和追求從未停止。堅持原創(chuàng ),熱心分享,不忘初心,繼往開(kāi)來(lái)!
  文章目錄
  一、?網(wǎng)站標題
  ?學(xué)生管理系統網(wǎng)頁(yè)設計、OA管理系統、后臺管理模板、智能停車(chē)系統等設計制作網(wǎng)站.
  二、??網(wǎng)站說(shuō)明
  ?HTML網(wǎng)頁(yè)設計,采用DIV+CSS布局,有多個(gè)頁(yè)面,布局干凈,內容豐富,主題清晰,首頁(yè)采用CSS布局更豐富,色彩鮮艷鮮艷,并且導航和文本字體設置為不同的字體大小。導航區域設置了背景圖像。子頁(yè)面包括純文本頁(yè)面和帶有圖片和文本的頁(yè)面。
  一個(gè)好的網(wǎng)頁(yè)設計應該包括(取決于個(gè)人要求)
  頁(yè)面分為四個(gè)部分:頁(yè)眉、菜單導航欄(最好是下拉)、中間內容部分和頁(yè)腳。所有頁(yè)面都相互超鏈接,可以轉到由多個(gè)頁(yè)面組成的二級和三級頁(yè)面。頁(yè)面樣式和樣式統一布局,顯示正常,不雜亂,使用Div+Css技術(shù)。菜單美觀(guān)醒目,二級菜單可以正常彈出和跳轉??蛇xJS特效,如圖片旋轉的定時(shí)切換和手動(dòng)切換。頁(yè)面中有多媒體元素,如gif,視頻,音樂(lè ),表單技術(shù)的使用。頁(yè)面清爽、美觀(guān)、大方、與眾不同。 不僅要能夠呈現用戶(hù)所需要的內容,還要滿(mǎn)足布局好、界面美觀(guān)、配色優(yōu)雅、表現形式多樣的要求。 三、網(wǎng)站簡(jiǎn)介
  網(wǎng)站布局:擬采用目前主流的浮動(dòng)網(wǎng)頁(yè)布局結構,兼容各大主流瀏覽器,顯示效果穩定。
  網(wǎng)站程序:擬使用最新的網(wǎng)頁(yè)編程語(yǔ)言HTML5+CSS3+JS編程語(yǔ)言完成網(wǎng)站的功能設計。并保證網(wǎng)站代碼兼容目前市面上所有主流瀏覽器,打開(kāi)后立即可以看到網(wǎng)站的效果。
  網(wǎng)站素材:我們計劃從各個(gè)平臺采集好看的圖片素材,精心挑選適合網(wǎng)頁(yè)風(fēng)格的圖片,然后用PS制作適合網(wǎng)頁(yè)大小的圖片。
  網(wǎng)站文件:網(wǎng)站系統文件類(lèi)型包括:html網(wǎng)頁(yè)結構文件、css網(wǎng)頁(yè)樣式文件、js網(wǎng)頁(yè)特效文件、images網(wǎng)頁(yè)圖片文件;
  網(wǎng)頁(yè)編輯:網(wǎng)頁(yè)作品代碼簡(jiǎn)單,可以使用任何HTML編輯軟件(如Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等)運行、修改和編輯。
  地點(diǎn):
  (1)html文件收錄:index.html為首頁(yè),其他html為二級頁(yè)面;
  (2)css文件收錄:css所有頁(yè)面樣式、文字滾動(dòng)、圖片放大等;
  (3)js文件收錄:js實(shí)現動(dòng)態(tài)輪播效果、表單提交、點(diǎn)擊事件等(js代碼用于個(gè)別網(wǎng)頁(yè))。
  四、網(wǎng)站演示
  五、?? 網(wǎng)站代碼 HTML 結構代碼
  
doctype html>



人員信息管理系統









人員管理后臺界面



首頁(yè)


人員查詢(xún)


組織機構維護


行業(yè)內人員信息


行業(yè)外人員信息


權限配置


通知管理


待辦事項





<p>
姓名:程皓
部門(mén):部門(mén)管理


中國煙草總公司職工進(jìn)修學(xué)院







function speckText(str){
//var request= new URLRequest();
var url = "http://tts.baidu.com/text2audi ... ot%3B + encodeURI(str); // baidu
//url = "http://translate.google.cn/tra ... ot%3B + encodeURI(str); // google
//request.url = encodeURI(url);
// request.contentType = "audio/mp3"; // for baidu
//request.contentType = "audio/mpeg"; // for google
var n = new Audio(url);
n.src = url;
n.play();
// $("...").play();
// var sound = new Sound(request);
// sound.play();
}
</p>
  CSS 樣式代碼
  
@import "style.css";
/***************reset樣式,保持瀏覽器樣式一致性******************/
* {
word-wrap: break-word;
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
p,
input[type="radio"],
input[type="checkbox"] {
margin: 0;
}
i {
font-style: normal;
}
a {
text-decoration: none;
cursor: pointer;
color: #666;
}
a:hover {
text-decoration: none;
outline: none;
color: #fff;
}
a.ie6:hover {
zoom: 1;
}
ul,
ol {
list-style: none;
}
a:focus {
outline: none;
color: #fff;
}
<p>
.leftBar .listItem .item.active .icon-15 {
display: block;
}
.leftBar .navBottom {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
color: #fff;
padding: 20px 0;
}
.leftBar .navBottom img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.leftBar .navBottom .person p {
padding: 0 10px;
opacity: 0.8;
}
.topBar {
position: fixed;
top: 0;
left: 0;
z-index: 1;
padding-left: 220px;
width: 100%;
height: 50px;
background: #fff;
-moz-box-shadow: 0 2px 12px #B9B9B9;
-webkit-box-shadow: 0 2px 12px #B9B9B9;
box-shadow: 0 2px 12px #B9B9B9;
min-width: 1200px;
}
.topBar .title {
font-size: 19px;
line-height: 50px;
padding-left: 20px;
letter-spacing: 1px;
}
.topBar .pull-right {
margin-right: 20px;
}
.topBar .pull-right i {
cursor: pointer;
position: relative;
font-size: 20px;
margin: 15px 8px;
display: inline-block;
}
.topBar .pull-right i.point:after {
content: "";
position: absolute;
top: 2px;
right: -2px;
display: block;
width: 6px;
height: 6px;
background: #FF6700;
border-radius: 50%;
}
.contentIndex {
position: fixed;
top: 50px;
left: 220px;
width: calc(100% - 220px);
height: calc(100% - 50px);
}
.contentIndex iframe {
width: 100%;
height: 100%;
}
</p>
  六、如何讓學(xué)習不再盲目
  21年程序員總結16條給編程菜鳥(niǎo)的忠告
  入門(mén)期間不要盲目看太多書(shū),找一本網(wǎng)上或身邊有經(jīng)驗的程序員推薦的教材,先系統學(xué)習。閱讀更多幫助文檔,幫助文檔就像游戲的玩法說(shuō)明,通關(guān)秘籍,該閱讀時(shí)不要太自信。菜鳥(niǎo)容易被對象、屬性、方法等詞混淆?這意味著(zhù)你連最基本的知識都沒(méi)有掌握。不要忽略任何看似不起眼的問(wèn)題,并經(jīng)常對其進(jìn)行總結以推斷其他事情。如果沒(méi)有積累足夠的知識和經(jīng)驗,就無(wú)法開(kāi)發(fā)出一個(gè)完整的項目。談?wù)撟钚碌募夹g(shù)比牢記過(guò)時(shí)的技術(shù)要好?;畹嚼?,學(xué)到老,只有一招半的功夫,也不能沖破江湖。讀懂的書(shū),讀不懂的書(shū)。書(shū)讀一百遍,自己看,別指望讀一遍就能掌握。請將教程中的示例付諸實(shí)踐,即使案例中有完整的源代碼。擴展您在教程中看到的有意義的示例;并將它們實(shí)際應用到您自己的工作中。不要錯過(guò)本教程中的任何練習 - 請全部完成并做筆記。水平是通過(guò)不斷的練習來(lái)完善和發(fā)展的,你和Daniel的區別只是經(jīng)驗的積累。每次學(xué)習到一個(gè)難點(diǎn),盡量把你的經(jīng)驗分享給朋友或者網(wǎng)上,讓別人理解,這說(shuō)明你真的掌握了。養成保存源文件的習慣,這些都是你積累的知識。不要張嘴問(wèn)問(wèn)題,學(xué)會(huì )自己尋找答案。比如google、百度、w3cschool上有很多編程相關(guān)的資料。您只需輸入關(guān)鍵字即可找到答案。 七、更多干貨
  1.如果我的博客對你有幫助,如果你喜歡我的博客內容,請一鍵“點(diǎn)贊”“??評論”“采集”!
  2.[跟我來(lái)|獲取更多源代碼 |高品質(zhì)文章]帶你學(xué)習各種前端插件、3D炫酷效果、圖片展示、文字效果,以及全站模板、大學(xué)畢業(yè)生HTML模板、期末作業(yè)模板等! “這里有很多前端開(kāi)發(fā)者,討論前端Node知識,互相學(xué)習”!
  3.
  歡迎交流學(xué)習以上內容及技術(shù)相關(guān)問(wèn)題
  解決方案:Google SEO優(yōu)化要怎么做?入行必知的谷歌SEO七大關(guān)鍵
  一直以來(lái),很多人在生活中遇到問(wèn)題的第一選擇就是打開(kāi)搜索引擎進(jìn)行搜索,這給搜索引擎帶來(lái)了大量的流量,搜索引擎會(huì )針對用戶(hù)的搜索< @k4@ >根據其收錄給定網(wǎng)頁(yè)并按權重排序,前幾頁(yè)的網(wǎng)頁(yè)基本上可以得到關(guān)鍵詞下的大部分流量,因為用戶(hù)很少需要轉很多頁(yè)來(lái)找到答案。
  因此,網(wǎng)頁(yè)之間對這個(gè)權重的競爭也非常復雜,而Google SEO(搜索引擎優(yōu)化)是每個(gè)跨境電商賣(mài)家的必修課。帶來(lái)巨大的流量,從而獲得更直接的消費和轉化。所以在這里我就告訴你谷歌SEO優(yōu)化的七個(gè)關(guān)鍵。
  一、合適的 URL/域
  在建立網(wǎng)站時(shí),需要先選擇一個(gè)合適的域名。域名的選擇會(huì )影響用戶(hù)的信任。比如最常見(jiàn)的.com后綴自然比其他后綴更受用戶(hù)信任。 并且域名要與你的內容或企業(yè)相關(guān),而且要盡量短,以便用戶(hù)理解域名的含義,便于記憶。和國內很多網(wǎng)站一樣,直接用拼音字母作為域名。真的很難忘。
  二、關(guān)鍵詞
  關(guān)鍵詞 可以說(shuō)是 SEO 中最重要的部分。在挖掘關(guān)鍵詞的過(guò)程中,不僅要對目標用戶(hù)的搜索習慣進(jìn)行研究,還要采集競品使用的關(guān)鍵詞,以便最好地掌握大部分信息,從而做出最佳 關(guān)鍵詞 選擇。
  
  三、網(wǎng)站框架
  一個(gè)合理的web框架,不僅可以提高搜索引擎的速度收錄,還可以提高用戶(hù)的瀏覽體驗。內容的更新和內容的布局也與網(wǎng)絡(luò )框架有關(guān)。
  四、提升訪(fǎng)問(wèn)體驗
  首先,每個(gè)瀏覽器的顯示效果其實(shí)會(huì )有些不同。所以前期要做好主流瀏覽器的適配,避免出現影響用戶(hù)閱讀體驗的顯示問(wèn)題。后期也可以嘗試使用一些分析工具。查看用戶(hù)最常使用哪些瀏覽器來(lái)查看您的 網(wǎng)站。
  五、網(wǎng)站開(kāi)啟速度
  這確實(shí)是最影響用戶(hù)體驗的一點(diǎn)。想象一下,如果用戶(hù)在搜索結果中同時(shí)打開(kāi)三個(gè)帶有標題內容的網(wǎng)頁(yè),用戶(hù)會(huì )首先查看加載速度最快的網(wǎng)頁(yè)。在第一次加載網(wǎng)頁(yè)后,用戶(hù)可能已經(jīng)解決了他們的需求,所以這很重要!
  
  六、高級內容
  優(yōu)質(zhì)的內容一直是??搜索引擎搜索的對象,搜索引擎也希望用戶(hù)每次搜索都能得到想要的答案。 網(wǎng)站的優(yōu)質(zhì)內容可以留住用戶(hù),解決用戶(hù)的需求,讓用戶(hù)毫不猶豫的將網(wǎng)站放入采集夾,這是提升轉化率最基本的東西。
  七、優(yōu)質(zhì)外鏈
  外部鏈接是一個(gè)比較重要的部分。外部鏈接的質(zhì)量會(huì )對SEO產(chǎn)生影響。谷歌對此也毫不含糊。懲罰。
  說(shuō)到這里,想必大家已經(jīng)對Google SEO有一個(gè)大概的了解了,但同樣的道理。做海外業(yè)務(wù),你需要一個(gè)海外代理。為此,我之前使用過(guò)國內的海外代理。它被稱(chēng)為智能代理。新手的時(shí)候就試過(guò)了,因為比較低。我發(fā)現IP相當穩定,安全性好,非常適合海外業(yè)務(wù)。最后,只希望這篇文章能給大家帶來(lái)一些幫助。如果你覺(jué)得關(guān)于谷歌SEO還有什么想了解的,可以在評論區問(wèn)我!

網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 94 次瀏覽 ? 2022-09-20 23:13 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間
  網(wǎng)站內容管理系統后臺設計,前端的開(kāi)發(fā)工作需要一段時(shí)間,大概需要2-3個(gè)月的時(shí)間,還要將人員分配到各個(gè)部門(mén);建議找一個(gè)成熟、穩定的團隊進(jìn)行合作,最好提供包括項目階段性目標、經(jīng)濟或技術(shù)要求,驗收標準等詳細要求。
  
  設計完后確定開(kāi)發(fā)主體,項目經(jīng)理,前端開(kāi)發(fā)工程師,服務(wù)器開(kāi)發(fā)工程師,基礎架構開(kāi)發(fā)工程師,質(zhì)量控制工程師。其他的就交給他們吧,
  第一階段根據產(chǎn)品定位,考慮從哪個(gè)模塊入手。在此階段首先要確定開(kāi)發(fā)效率以及交付周期,先確定交付周期。確定交付周期,可以根據產(chǎn)品要求考慮如何把時(shí)間和質(zhì)量控制在最佳狀態(tài)。第二階段考慮前后端技術(shù)棧整合。對于前端,可以分為前端html模板,js動(dòng)態(tài)加載模板(如jquery/extjs/angularjs等),或者angularjs+vuejs(vuejs基于angularjs)。
  
  后端方面需要根據已有項目形式(php,nodejs/webpack)和未來(lái)需求可能性進(jìn)行綜合。第三階段,測試(回歸測試,產(chǎn)品驗收)交付前端開(kāi)發(fā)就是為了更好地表達產(chǎn)品功能,完成產(chǎn)品的開(kāi)發(fā)工作。所以開(kāi)發(fā)出來(lái)的東西一定要使用ui或者技術(shù)去做好交互和功能上的表達。一個(gè)成熟的開(kāi)發(fā)團隊可以完成這一項工作。
  每個(gè)團隊情況不同,前端開(kāi)發(fā)流程時(shí)間和難度差別較大。如果跨國團隊,基礎國際化問(wèn)題需要提前解決。三年業(yè)務(wù)基礎設施和資源配置良好,30-40人團隊時(shí)團隊可大可小,難度就從技術(shù)難度和工作時(shí)間和技術(shù)水平上分析,然后找團隊合作者和合作開(kāi)發(fā)者組成團隊即可。 查看全部

  網(wǎng)站內容管理系統后臺設計,前端開(kāi)發(fā)工作需要一段時(shí)間
  網(wǎng)站內容管理系統后臺設計,前端的開(kāi)發(fā)工作需要一段時(shí)間,大概需要2-3個(gè)月的時(shí)間,還要將人員分配到各個(gè)部門(mén);建議找一個(gè)成熟、穩定的團隊進(jìn)行合作,最好提供包括項目階段性目標、經(jīng)濟或技術(shù)要求,驗收標準等詳細要求。
  
  設計完后確定開(kāi)發(fā)主體,項目經(jīng)理,前端開(kāi)發(fā)工程師,服務(wù)器開(kāi)發(fā)工程師,基礎架構開(kāi)發(fā)工程師,質(zhì)量控制工程師。其他的就交給他們吧,
  第一階段根據產(chǎn)品定位,考慮從哪個(gè)模塊入手。在此階段首先要確定開(kāi)發(fā)效率以及交付周期,先確定交付周期。確定交付周期,可以根據產(chǎn)品要求考慮如何把時(shí)間和質(zhì)量控制在最佳狀態(tài)。第二階段考慮前后端技術(shù)棧整合。對于前端,可以分為前端html模板,js動(dòng)態(tài)加載模板(如jquery/extjs/angularjs等),或者angularjs+vuejs(vuejs基于angularjs)。
  
  后端方面需要根據已有項目形式(php,nodejs/webpack)和未來(lái)需求可能性進(jìn)行綜合。第三階段,測試(回歸測試,產(chǎn)品驗收)交付前端開(kāi)發(fā)就是為了更好地表達產(chǎn)品功能,完成產(chǎn)品的開(kāi)發(fā)工作。所以開(kāi)發(fā)出來(lái)的東西一定要使用ui或者技術(shù)去做好交互和功能上的表達。一個(gè)成熟的開(kāi)發(fā)團隊可以完成這一項工作。
  每個(gè)團隊情況不同,前端開(kāi)發(fā)流程時(shí)間和難度差別較大。如果跨國團隊,基礎國際化問(wèn)題需要提前解決。三年業(yè)務(wù)基礎設施和資源配置良好,30-40人團隊時(shí)團隊可大可小,難度就從技術(shù)難度和工作時(shí)間和技術(shù)水平上分析,然后找團隊合作者和合作開(kāi)發(fā)者組成團隊即可。

后臺產(chǎn)品——權限設計

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 157 次瀏覽 ? 2022-09-01 16:40 ? 來(lái)自相關(guān)話(huà)題

  后臺產(chǎn)品——權限設計
  權限設計是后臺產(chǎn)品必須要考慮的一個(gè)問(wèn)題。后臺產(chǎn)品與前臺產(chǎn)品相比較來(lái)說(shuō),前者會(huì )涉及到更多不同的用戶(hù),為了數據的安全性以及操作的便利性,需要給不同的用戶(hù)賦予不同的權限。
  權限設計時(shí)要設計權限控制的模型,現在已有的權限控制模型有:傳統的訪(fǎng)問(wèn)控制模型(DAC\MAC\ACL)、基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型、基于任務(wù)和工作流的訪(fǎng)問(wèn)控制(TBAC) 模型、基于任務(wù)和角色的訪(fǎng)問(wèn)控制(T-RBAC) 模型、基于對象的訪(fǎng)問(wèn)控制模型(OBAC)、使用控制模型( UCON)、基于屬性的訪(fǎng)問(wèn)控制(ABAC)模型等。
  其中,基于角色的訪(fǎng)問(wèn)控制模型是一種比較優(yōu)秀的模型,它具有以下幾個(gè)特征:
  本文,將結合作者的親身經(jīng)歷來(lái)重點(diǎn)討論基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型如何實(shí)現。如果大家對其他的訪(fǎng)問(wèn)控制模型有興趣,可以查看文章結尾的參考鏈接,也可自行在網(wǎng)上查找相關(guān)資料。
  首先,先把基于角色的訪(fǎng)問(wèn)控制模型整體結構說(shuō)一下,如下圖所示:
  整個(gè)模型的整體結構呈金字塔結構,從底部到頂部依次是權限、角色、用戶(hù)。權限分為操作權限和數據權限;通過(guò)給角色關(guān)聯(lián)操作權限和數據權限,從而使角色成為權限的集合;最后,通過(guò)給用戶(hù)分配角色來(lái)讓用戶(hù)獲取角色的權限。這個(gè)模型在“用戶(hù)”和“權限”之間增加“角色”,從而使賦予用戶(hù)權限變得簡(jiǎn)單,只需要給用戶(hù)分配相應的角色即可。
  以上是對這個(gè)模型的整體說(shuō)明,下面將對模型圖進(jìn)行詳細說(shuō)明,從權限、角色、用戶(hù)這三個(gè)方面來(lái)闡述。
  權限
  權限分為兩部分:一部分是操作權限,這部分權限決定著(zhù)用戶(hù)可以進(jìn)行哪些操作;另一部分是數據權限,這部分權限決定著(zhù)用戶(hù)可以看到哪些數據。
  操作權限
  操作權限決定著(zhù)可以進(jìn)行哪些操作。
  “操作”并不是單獨存在的,還要有操作的對象,我們把操作的對象稱(chēng)為“資源”。只有選定某種資源后,我們才能再去選擇這種資源對應的操作?!九e例】:如果選擇操作權限時(shí),只選擇了一個(gè)“查看”操作是不合理的,因為系統不知道這是哪個(gè)對象的查看操作。我們必須要先選定一個(gè)對象,比如說(shuō)某個(gè)菜單,然后再選擇“查看”操作,這樣系統才能知道可以對這個(gè)菜單進(jìn)行查看操作。
  這里的“資源”是一個(gè)比較寬泛的概念,我們將菜單、頁(yè)面元素、文件等統一視為“資源”。這樣做的好處在于不論是粒度大的(如菜單)還是粒度小的(頁(yè)面元素、文件)資源都能很方便地進(jìn)行管理,可以自由控制權限控制的粒度大??;
  
  同時(shí),我們還要意識到,“資源”和“操作”是多對多的關(guān)系。
  通過(guò)上面的論述,我們可以在實(shí)際后臺產(chǎn)品權限設計時(shí),將操作權限這部分劃分為“資源管理”和“操作管理”這兩部分?!百Y源管理”部分可以對資源進(jìn)行管理;“操作管理”部分可以對操作進(jìn)行管理。然后通過(guò)資源和操作的不同組合來(lái)實(shí)現不同資源的不同操作權限控制,非常靈活。
  本節對應下圖中紅框圈起來(lái)的內容:
  數據權限
  數據權限決定著(zhù)可以看到哪些數據。
  先介紹一下數據權限和操作權限的區別。操作權限決定著(zhù)可以對(數據)對象進(jìn)行的操作;而數據權限決定著(zhù)可以對哪些數據進(jìn)行操作?!九e例】:有兩個(gè)系統用戶(hù):小明和小紅。他們都能對列表的數據進(jìn)行新增、修改、刪除、查詢(xún)操作;但是,小明能看到頻道A的數據;小紅能看到頻道a(頻道a屬于頻道A)的數據。從操作權限來(lái)看,這兩個(gè)用戶(hù)的權限一致;但是從數據權限來(lái)看,小明明顯比小紅可操作的數據多。
  那么如何確保能夠使數據權限生效呢?或者說(shuō),如何將數據劃分到不同的數據權限,從而能夠實(shí)現數據權限控制?這就要求在新建后臺數據時(shí),要對數據進(jìn)行劃分,劃分的維度和粒度由數據權限控制的維度和粒度決定?!九e例】:有兩個(gè)用戶(hù)需要開(kāi)通后臺權限,小明需要看到頻道A的數據,小紅需要只看到頻道a的數據。通過(guò)分析得知,頻道a屬于頻道A,因此,要在新增數據時(shí),增加對應的頻道字段,并且要精確到二級頻道。最終,我們在新增數據頁(yè)面增加了“一級頻道”、“二級頻道”字段,用來(lái)支持數據權限的實(shí)現。(另外再說(shuō)一句:上一篇文章《后臺產(chǎn)品——字段設計》中提到了字段來(lái)源有兩個(gè):業(yè)務(wù)需求和系統需求。在上面的例子中,“一級頻道”、“二級頻道”字段就屬于從系統需求中分析出來(lái)的字段)
  本節對應下圖中紅框圈起來(lái)的內容:
  角色
  “角色”是基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型的獨特部分,它是聯(lián)系用戶(hù)和權限的紐帶。
  “角色”可以理解為“操作權限”和“數據權限”的一個(gè)集合,在這個(gè)集合中,可以選擇任意的“資源”、“操作”、“數據權限”進(jìn)行搭配,然后根據需要創(chuàng )建各種各樣的角色。打個(gè)比方來(lái)說(shuō),無(wú)論你是移動(dòng)、聯(lián)通還是電信用戶(hù),肯定都辦理過(guò)套餐。移動(dòng)有一種自選套餐,這個(gè)套餐里面包含通話(huà)時(shí)長(cháng)、流量、短信等各種業(yè)務(wù),可以任意搭配?!敖巧睆哪撤N程度上,就可以理解為自選套餐。如下圖所示:
  
  因為角色是各種“資源”、“操作”、“數據權限”的集合,其承載的信息可能會(huì )很多,所以建議在創(chuàng )建角色時(shí),實(shí)時(shí)將選擇的權限顯示出來(lái),這樣方便當前和以后查看該角色已經(jīng)選了哪些權限。
  因為角色本身承載的信息很多,如果每次創(chuàng )建角色都要一個(gè)一個(gè)選擇權限的話(huà),效率會(huì )比較低??梢栽趧?chuàng )建角色時(shí),增加一個(gè)“復制角色”的字段,如果要創(chuàng )建的角色和已經(jīng)存在的角色差別不是很大,就可以復制這個(gè)已有角色的權限,然后在此基礎上進(jìn)行修改即可。當然,這個(gè)功能只會(huì )復制已有角色的權限,并不會(huì )對已有角色的權限進(jìn)行回寫(xiě)。
  本節對應下圖中紅框圈起來(lái)的內容:
  用戶(hù)
  用戶(hù)處于這個(gè)模型的最上層,當將權限、角色配置好之后,給用戶(hù)賦予權限也就是水到渠成的事情了。
  通過(guò)給用戶(hù)選擇角色,來(lái)給用戶(hù)賦予角色所集成的權限;在這里,支持給用戶(hù)同時(shí)賦予多個(gè)角色。用戶(hù)的權限是這些角色權限的并集。
  因為角色本身的權限就很多,再加上用戶(hù)可能會(huì )同時(shí)選擇多個(gè)角色,因此最好將已經(jīng)選好的權限列出來(lái)了,這樣方便當前和以后查看該用戶(hù)已經(jīng)選了哪些權限。
  下面介紹一個(gè)小技巧:
  那我們再發(fā)散一下,比方說(shuō),一個(gè)大公司的某個(gè)部門(mén)有100個(gè)用戶(hù),他們之前都是角色1的權限,現在因為業(yè)務(wù)的變動(dòng),需要將這些用戶(hù)的權限變?yōu)榻巧?,如果每個(gè)用戶(hù)都重新選擇一次角色2的話(huà),顯然會(huì )比較費時(shí)費力。那么遇到這種用戶(hù)比較多的情況,該怎么處理呢? 在這種情況下,我們可以引入“用戶(hù)組”的概念,先給“用戶(hù)組”賦予角色1的權限,之后有新用戶(hù)的話(huà),只需要加入該用戶(hù)組就可以獲得角色1的權限。同時(shí),只要將該用戶(hù)組的權限改為角色2,那么該用戶(hù)組下的用戶(hù)也都會(huì )同時(shí)換為角色2的權限。
  總結
  通過(guò)上面的介紹,可以看到在這個(gè)模型中,“操作”和“資源”、“資源”和“角色”、“數據權限”和“角色”、“角色”和“用戶(hù)”都是多對多的關(guān)系,這樣保證了靈活性;同時(shí),“資源”、“操作”、“角色”、“用戶(hù)”又各自劃分為了不同的模塊,又保證了各自的獨立性和擴展性。
  大家也可以根據實(shí)際業(yè)務(wù)需求,在這個(gè)模型的基礎上進(jìn)行擴展來(lái)實(shí)現各自業(yè)務(wù)的需求。
  以上是自己的一些心得體會(huì ),希望對你有用,也歡迎大家拍磚,謝謝~
  附:參考鏈接 查看全部

  后臺產(chǎn)品——權限設計
  權限設計是后臺產(chǎn)品必須要考慮的一個(gè)問(wèn)題。后臺產(chǎn)品與前臺產(chǎn)品相比較來(lái)說(shuō),前者會(huì )涉及到更多不同的用戶(hù),為了數據的安全性以及操作的便利性,需要給不同的用戶(hù)賦予不同的權限。
  權限設計時(shí)要設計權限控制的模型,現在已有的權限控制模型有:傳統的訪(fǎng)問(wèn)控制模型(DAC\MAC\ACL)、基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型、基于任務(wù)和工作流的訪(fǎng)問(wèn)控制(TBAC) 模型、基于任務(wù)和角色的訪(fǎng)問(wèn)控制(T-RBAC) 模型、基于對象的訪(fǎng)問(wèn)控制模型(OBAC)、使用控制模型( UCON)、基于屬性的訪(fǎng)問(wèn)控制(ABAC)模型等。
  其中,基于角色的訪(fǎng)問(wèn)控制模型是一種比較優(yōu)秀的模型,它具有以下幾個(gè)特征:
  本文,將結合作者的親身經(jīng)歷來(lái)重點(diǎn)討論基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型如何實(shí)現。如果大家對其他的訪(fǎng)問(wèn)控制模型有興趣,可以查看文章結尾的參考鏈接,也可自行在網(wǎng)上查找相關(guān)資料。
  首先,先把基于角色的訪(fǎng)問(wèn)控制模型整體結構說(shuō)一下,如下圖所示:
  整個(gè)模型的整體結構呈金字塔結構,從底部到頂部依次是權限、角色、用戶(hù)。權限分為操作權限和數據權限;通過(guò)給角色關(guān)聯(lián)操作權限和數據權限,從而使角色成為權限的集合;最后,通過(guò)給用戶(hù)分配角色來(lái)讓用戶(hù)獲取角色的權限。這個(gè)模型在“用戶(hù)”和“權限”之間增加“角色”,從而使賦予用戶(hù)權限變得簡(jiǎn)單,只需要給用戶(hù)分配相應的角色即可。
  以上是對這個(gè)模型的整體說(shuō)明,下面將對模型圖進(jìn)行詳細說(shuō)明,從權限、角色、用戶(hù)這三個(gè)方面來(lái)闡述。
  權限
  權限分為兩部分:一部分是操作權限,這部分權限決定著(zhù)用戶(hù)可以進(jìn)行哪些操作;另一部分是數據權限,這部分權限決定著(zhù)用戶(hù)可以看到哪些數據。
  操作權限
  操作權限決定著(zhù)可以進(jìn)行哪些操作。
  “操作”并不是單獨存在的,還要有操作的對象,我們把操作的對象稱(chēng)為“資源”。只有選定某種資源后,我們才能再去選擇這種資源對應的操作?!九e例】:如果選擇操作權限時(shí),只選擇了一個(gè)“查看”操作是不合理的,因為系統不知道這是哪個(gè)對象的查看操作。我們必須要先選定一個(gè)對象,比如說(shuō)某個(gè)菜單,然后再選擇“查看”操作,這樣系統才能知道可以對這個(gè)菜單進(jìn)行查看操作。
  這里的“資源”是一個(gè)比較寬泛的概念,我們將菜單、頁(yè)面元素、文件等統一視為“資源”。這樣做的好處在于不論是粒度大的(如菜單)還是粒度小的(頁(yè)面元素、文件)資源都能很方便地進(jìn)行管理,可以自由控制權限控制的粒度大??;
  
  同時(shí),我們還要意識到,“資源”和“操作”是多對多的關(guān)系。
  通過(guò)上面的論述,我們可以在實(shí)際后臺產(chǎn)品權限設計時(shí),將操作權限這部分劃分為“資源管理”和“操作管理”這兩部分?!百Y源管理”部分可以對資源進(jìn)行管理;“操作管理”部分可以對操作進(jìn)行管理。然后通過(guò)資源和操作的不同組合來(lái)實(shí)現不同資源的不同操作權限控制,非常靈活。
  本節對應下圖中紅框圈起來(lái)的內容:
  數據權限
  數據權限決定著(zhù)可以看到哪些數據。
  先介紹一下數據權限和操作權限的區別。操作權限決定著(zhù)可以對(數據)對象進(jìn)行的操作;而數據權限決定著(zhù)可以對哪些數據進(jìn)行操作?!九e例】:有兩個(gè)系統用戶(hù):小明和小紅。他們都能對列表的數據進(jìn)行新增、修改、刪除、查詢(xún)操作;但是,小明能看到頻道A的數據;小紅能看到頻道a(頻道a屬于頻道A)的數據。從操作權限來(lái)看,這兩個(gè)用戶(hù)的權限一致;但是從數據權限來(lái)看,小明明顯比小紅可操作的數據多。
  那么如何確保能夠使數據權限生效呢?或者說(shuō),如何將數據劃分到不同的數據權限,從而能夠實(shí)現數據權限控制?這就要求在新建后臺數據時(shí),要對數據進(jìn)行劃分,劃分的維度和粒度由數據權限控制的維度和粒度決定?!九e例】:有兩個(gè)用戶(hù)需要開(kāi)通后臺權限,小明需要看到頻道A的數據,小紅需要只看到頻道a的數據。通過(guò)分析得知,頻道a屬于頻道A,因此,要在新增數據時(shí),增加對應的頻道字段,并且要精確到二級頻道。最終,我們在新增數據頁(yè)面增加了“一級頻道”、“二級頻道”字段,用來(lái)支持數據權限的實(shí)現。(另外再說(shuō)一句:上一篇文章《后臺產(chǎn)品——字段設計》中提到了字段來(lái)源有兩個(gè):業(yè)務(wù)需求和系統需求。在上面的例子中,“一級頻道”、“二級頻道”字段就屬于從系統需求中分析出來(lái)的字段)
  本節對應下圖中紅框圈起來(lái)的內容:
  角色
  “角色”是基于角色的訪(fǎng)問(wèn)控制(RBAC) 模型的獨特部分,它是聯(lián)系用戶(hù)和權限的紐帶。
  “角色”可以理解為“操作權限”和“數據權限”的一個(gè)集合,在這個(gè)集合中,可以選擇任意的“資源”、“操作”、“數據權限”進(jìn)行搭配,然后根據需要創(chuàng )建各種各樣的角色。打個(gè)比方來(lái)說(shuō),無(wú)論你是移動(dòng)、聯(lián)通還是電信用戶(hù),肯定都辦理過(guò)套餐。移動(dòng)有一種自選套餐,這個(gè)套餐里面包含通話(huà)時(shí)長(cháng)、流量、短信等各種業(yè)務(wù),可以任意搭配?!敖巧睆哪撤N程度上,就可以理解為自選套餐。如下圖所示:
  
  因為角色是各種“資源”、“操作”、“數據權限”的集合,其承載的信息可能會(huì )很多,所以建議在創(chuàng )建角色時(shí),實(shí)時(shí)將選擇的權限顯示出來(lái),這樣方便當前和以后查看該角色已經(jīng)選了哪些權限。
  因為角色本身承載的信息很多,如果每次創(chuàng )建角色都要一個(gè)一個(gè)選擇權限的話(huà),效率會(huì )比較低??梢栽趧?chuàng )建角色時(shí),增加一個(gè)“復制角色”的字段,如果要創(chuàng )建的角色和已經(jīng)存在的角色差別不是很大,就可以復制這個(gè)已有角色的權限,然后在此基礎上進(jìn)行修改即可。當然,這個(gè)功能只會(huì )復制已有角色的權限,并不會(huì )對已有角色的權限進(jìn)行回寫(xiě)。
  本節對應下圖中紅框圈起來(lái)的內容:
  用戶(hù)
  用戶(hù)處于這個(gè)模型的最上層,當將權限、角色配置好之后,給用戶(hù)賦予權限也就是水到渠成的事情了。
  通過(guò)給用戶(hù)選擇角色,來(lái)給用戶(hù)賦予角色所集成的權限;在這里,支持給用戶(hù)同時(shí)賦予多個(gè)角色。用戶(hù)的權限是這些角色權限的并集。
  因為角色本身的權限就很多,再加上用戶(hù)可能會(huì )同時(shí)選擇多個(gè)角色,因此最好將已經(jīng)選好的權限列出來(lái)了,這樣方便當前和以后查看該用戶(hù)已經(jīng)選了哪些權限。
  下面介紹一個(gè)小技巧:
  那我們再發(fā)散一下,比方說(shuō),一個(gè)大公司的某個(gè)部門(mén)有100個(gè)用戶(hù),他們之前都是角色1的權限,現在因為業(yè)務(wù)的變動(dòng),需要將這些用戶(hù)的權限變?yōu)榻巧?,如果每個(gè)用戶(hù)都重新選擇一次角色2的話(huà),顯然會(huì )比較費時(shí)費力。那么遇到這種用戶(hù)比較多的情況,該怎么處理呢? 在這種情況下,我們可以引入“用戶(hù)組”的概念,先給“用戶(hù)組”賦予角色1的權限,之后有新用戶(hù)的話(huà),只需要加入該用戶(hù)組就可以獲得角色1的權限。同時(shí),只要將該用戶(hù)組的權限改為角色2,那么該用戶(hù)組下的用戶(hù)也都會(huì )同時(shí)換為角色2的權限。
  總結
  通過(guò)上面的介紹,可以看到在這個(gè)模型中,“操作”和“資源”、“資源”和“角色”、“數據權限”和“角色”、“角色”和“用戶(hù)”都是多對多的關(guān)系,這樣保證了靈活性;同時(shí),“資源”、“操作”、“角色”、“用戶(hù)”又各自劃分為了不同的模塊,又保證了各自的獨立性和擴展性。
  大家也可以根據實(shí)際業(yè)務(wù)需求,在這個(gè)模型的基礎上進(jìn)行擴展來(lái)實(shí)現各自業(yè)務(wù)的需求。
  以上是自己的一些心得體會(huì ),希望對你有用,也歡迎大家拍磚,謝謝~
  附:參考鏈接

那些開(kāi)箱即用的中后臺管理模版,建議收藏!

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-08-29 03:13 ? 來(lái)自相關(guān)話(huà)題

  那些開(kāi)箱即用的中后臺管理模版,建議收藏!
  哈嘍大家好,今天編程導航來(lái)給大家推薦幾款開(kāi)箱即用的中后臺管理模版,每一個(gè)都值得收藏!
  Vue Element Admin
  vue-element-admin 是一個(gè)后臺前端解決方案,它基于 vue 和 element-ui實(shí)現。它使用了最新的前端技術(shù)棧,內置了 i18n 國際化解決方案,動(dòng)態(tài)路由,權限驗證,提煉了典型的業(yè)務(wù)模型,提供了豐富的功能組件,它可以幫助你快速搭建企業(yè)級中后臺產(chǎn)品原型。
  Github(??77.5k):
  Ant Design Pro
  Ant Design Pro 是基于 Ant Design 和 umi 的封裝的一整套企業(yè)級中后臺前端/設計解決方案,致力于在設計規范和基礎組件的基礎上,繼續向上構建,提煉出典型模板/業(yè)務(wù)組件/配套設計資源,進(jìn)一步提升企業(yè)級中后臺產(chǎn)品設計研發(fā)過(guò)程中的用戶(hù)和設計者的體驗。
  Ant Design Pro 的特點(diǎn)如下:
  Github(??32.5k):
  React Admin
  React Admin 是基于 React17.x、Ant Design4.x、Material Design 在 REST/GraphQL API 之上構建在瀏覽器中運行的管理應用程序的一款前端框架。
  Github(??20.2k):
  iView Admin
  iView-admin 是 iView 生態(tài)中的成員之一,是一套采用前后端分離開(kāi)發(fā)模式,基于 Vue 的后臺管理系統前端解決方案。其內置了開(kāi)發(fā)后臺管理系統常用的邏輯功能,和開(kāi)箱即用的業(yè)務(wù)組件,旨在讓開(kāi)發(fā)者能夠以最小的成本開(kāi)發(fā)后臺管理系統,降低開(kāi)發(fā)量。
  Github(??16.1k):
  Vue Manage System
  Vue Manage System 是一個(gè)后臺管理系統解決方案。它作為一套多功能的后臺框架模板,適用于絕大部分的后臺管理系統(Web Management System)開(kāi)發(fā)?;?Vue3 + pinia,引用 Element Plus 組件庫,方便開(kāi)發(fā)快速簡(jiǎn)潔好看的組件。分離顏色樣式,支持手動(dòng)切換主題色,而且很方便使用自定義主題色。
  Github(??15.4k):
  Vue vben admin
  
  Vue Vben Admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 vue3,vite2,TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。其特點(diǎn)如下:
  Github(??13k):
  Vue Admin Better
  vue-admin-better 是一個(gè)基于 vue3+element-plus 的中后臺前端框架。其特點(diǎn)如下:
  Github(??12.6k):
  D2Admin
  D2Admin 是一個(gè)完全開(kāi)源免費的企業(yè)中后臺產(chǎn)品前端集成方案,使用最新的前端技術(shù)棧,小于 60kb 的本地首屏 js 加載,已經(jīng)做好大部分項目前期準備工作,并且帶有大量示例代碼,助力管理系統敏捷開(kāi)發(fā)。
  Github(??11.6k):
  AntD Admin
  AntD Admin 是一套優(yōu)秀的中后臺前端解決方案。其特征如下:
  Github(??9k):
  Vuestic Admin
  Vuestic Admin 是一套免費且美觀(guān)的 Vue.js (3.x)管理模板,使用 Vuestic UI 構建,包含 44 多個(gè)自定義 UI 組件。
  Github(??8.8k):
  Vue Pure Admin
  vue-pure-admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 Vue3、Vite2、Element-Plus、TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。
  Github(??3.2k):
  
  Vue Antd Admin
  Vue Antd Admin 是 Ant Design Pro 的 Vue 實(shí)現版本,是一個(gè)開(kāi)箱即用的中后臺前端/設計解決方案。
  Github(??3.1k):
  Geeker Admin
  Geeker Admin 是基于 Vue3.2、TypeScript、Vite2、Pinia、Element-Plus 開(kāi)源的一套后臺管理模板。
  Github(??1.8k):
  Soybean Admin
  Soybean Admin 是一個(gè)基于 Vue3、Vite3、TypeScript、Naive UI 和 UnoCSS 的清新優(yōu)雅的中后臺模版,它使用了最新的前端技術(shù)棧,內置豐富的主題配置,有著(zhù)極高的代碼規范,基于 mock 實(shí)現的動(dòng)態(tài)權限路由,開(kāi)箱即用的中后臺前端解決方案。
  Github(??1.2k):
  Vue Admin Box
  vue-admin-box 是一個(gè)免費并且開(kāi)源的中后臺管理系統模板。使用最新版本的 vue3+vite+element-plus 開(kāi)發(fā)而成,目的是為了解決通用型的業(yè)務(wù)中后臺系統復雜的配置。
  Github(??880):
  Vue3.0 Template Admin
  vue3.0-template-admin 是基于 vue3+ElementPlus+Typescript+Vite 搭建一套通用的后臺管理模板;并基于常見(jiàn)業(yè)務(wù)場(chǎng)景,抽象出常見(jiàn)功能組件;包括動(dòng)態(tài)菜單,菜單權限、登錄、主題切換、國際化、個(gè)人中心、表單頁(yè)、列表頁(yè)、復制文本、二維碼分享等。
  Github(??760):
  本期內容就到這里啦~以上所有項目均可在 編程導航網(wǎng)站搜索名稱(chēng)直接訪(fǎng)問(wèn)哦,如果本文對您有幫助,也請幫忙點(diǎn)個(gè)贊 + 在看啦!??
  最后,歡迎加入(點(diǎn)擊了解詳情),和大家一起交流學(xué)習編程,向魚(yú)皮和大廠(chǎng)同學(xué) 1 對 1 提問(wèn)、幫你制定學(xué)習計劃不迷茫、跟著(zhù)魚(yú)皮直播做項目(往期項目可無(wú)限回看)、領(lǐng)取魚(yú)皮原創(chuàng )編程學(xué)習 / 求職資料等。最近秋招開(kāi)始了,星球內也會(huì )幫大家規劃求職進(jìn)度、完善簡(jiǎn)歷和項目。
  星球目前已超過(guò) 1 萬(wàn)人了,會(huì )在 8 月 21 日晚漲價(jià),并且不再發(fā)放 60 元優(yōu)惠價(jià),現在加入限時(shí)優(yōu)惠60元 ,歡迎想一起學(xué)習進(jìn)步的小伙伴~ 查看全部

  那些開(kāi)箱即用的中后臺管理模版,建議收藏!
  哈嘍大家好,今天編程導航來(lái)給大家推薦幾款開(kāi)箱即用的中后臺管理模版,每一個(gè)都值得收藏!
  Vue Element Admin
  vue-element-admin 是一個(gè)后臺前端解決方案,它基于 vue 和 element-ui實(shí)現。它使用了最新的前端技術(shù)棧,內置了 i18n 國際化解決方案,動(dòng)態(tài)路由,權限驗證,提煉了典型的業(yè)務(wù)模型,提供了豐富的功能組件,它可以幫助你快速搭建企業(yè)級中后臺產(chǎn)品原型。
  Github(??77.5k):
  Ant Design Pro
  Ant Design Pro 是基于 Ant Design 和 umi 的封裝的一整套企業(yè)級中后臺前端/設計解決方案,致力于在設計規范和基礎組件的基礎上,繼續向上構建,提煉出典型模板/業(yè)務(wù)組件/配套設計資源,進(jìn)一步提升企業(yè)級中后臺產(chǎn)品設計研發(fā)過(guò)程中的用戶(hù)和設計者的體驗。
  Ant Design Pro 的特點(diǎn)如下:
  Github(??32.5k):
  React Admin
  React Admin 是基于 React17.x、Ant Design4.x、Material Design 在 REST/GraphQL API 之上構建在瀏覽器中運行的管理應用程序的一款前端框架。
  Github(??20.2k):
  iView Admin
  iView-admin 是 iView 生態(tài)中的成員之一,是一套采用前后端分離開(kāi)發(fā)模式,基于 Vue 的后臺管理系統前端解決方案。其內置了開(kāi)發(fā)后臺管理系統常用的邏輯功能,和開(kāi)箱即用的業(yè)務(wù)組件,旨在讓開(kāi)發(fā)者能夠以最小的成本開(kāi)發(fā)后臺管理系統,降低開(kāi)發(fā)量。
  Github(??16.1k):
  Vue Manage System
  Vue Manage System 是一個(gè)后臺管理系統解決方案。它作為一套多功能的后臺框架模板,適用于絕大部分的后臺管理系統(Web Management System)開(kāi)發(fā)?;?Vue3 + pinia,引用 Element Plus 組件庫,方便開(kāi)發(fā)快速簡(jiǎn)潔好看的組件。分離顏色樣式,支持手動(dòng)切換主題色,而且很方便使用自定義主題色。
  Github(??15.4k):
  Vue vben admin
  
  Vue Vben Admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 vue3,vite2,TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。其特點(diǎn)如下:
  Github(??13k):
  Vue Admin Better
  vue-admin-better 是一個(gè)基于 vue3+element-plus 的中后臺前端框架。其特點(diǎn)如下:
  Github(??12.6k):
  D2Admin
  D2Admin 是一個(gè)完全開(kāi)源免費的企業(yè)中后臺產(chǎn)品前端集成方案,使用最新的前端技術(shù)棧,小于 60kb 的本地首屏 js 加載,已經(jīng)做好大部分項目前期準備工作,并且帶有大量示例代碼,助力管理系統敏捷開(kāi)發(fā)。
  Github(??11.6k):
  AntD Admin
  AntD Admin 是一套優(yōu)秀的中后臺前端解決方案。其特征如下:
  Github(??9k):
  Vuestic Admin
  Vuestic Admin 是一套免費且美觀(guān)的 Vue.js (3.x)管理模板,使用 Vuestic UI 構建,包含 44 多個(gè)自定義 UI 組件。
  Github(??8.8k):
  Vue Pure Admin
  vue-pure-admin 是一個(gè)免費開(kāi)源的中后臺模版。使用了最新的 Vue3、Vite2、Element-Plus、TypeScript 等主流技術(shù)開(kāi)發(fā),開(kāi)箱即用的中后臺前端解決方案。
  Github(??3.2k):
  
  Vue Antd Admin
  Vue Antd Admin 是 Ant Design Pro 的 Vue 實(shí)現版本,是一個(gè)開(kāi)箱即用的中后臺前端/設計解決方案。
  Github(??3.1k):
  Geeker Admin
  Geeker Admin 是基于 Vue3.2、TypeScript、Vite2、Pinia、Element-Plus 開(kāi)源的一套后臺管理模板。
  Github(??1.8k):
  Soybean Admin
  Soybean Admin 是一個(gè)基于 Vue3、Vite3、TypeScript、Naive UI 和 UnoCSS 的清新優(yōu)雅的中后臺模版,它使用了最新的前端技術(shù)棧,內置豐富的主題配置,有著(zhù)極高的代碼規范,基于 mock 實(shí)現的動(dòng)態(tài)權限路由,開(kāi)箱即用的中后臺前端解決方案。
  Github(??1.2k):
  Vue Admin Box
  vue-admin-box 是一個(gè)免費并且開(kāi)源的中后臺管理系統模板。使用最新版本的 vue3+vite+element-plus 開(kāi)發(fā)而成,目的是為了解決通用型的業(yè)務(wù)中后臺系統復雜的配置。
  Github(??880):
  Vue3.0 Template Admin
  vue3.0-template-admin 是基于 vue3+ElementPlus+Typescript+Vite 搭建一套通用的后臺管理模板;并基于常見(jiàn)業(yè)務(wù)場(chǎng)景,抽象出常見(jiàn)功能組件;包括動(dòng)態(tài)菜單,菜單權限、登錄、主題切換、國際化、個(gè)人中心、表單頁(yè)、列表頁(yè)、復制文本、二維碼分享等。
  Github(??760):
  本期內容就到這里啦~以上所有項目均可在 編程導航網(wǎng)站搜索名稱(chēng)直接訪(fǎng)問(wèn)哦,如果本文對您有幫助,也請幫忙點(diǎn)個(gè)贊 + 在看啦!??
  最后,歡迎加入(點(diǎn)擊了解詳情),和大家一起交流學(xué)習編程,向魚(yú)皮和大廠(chǎng)同學(xué) 1 對 1 提問(wèn)、幫你制定學(xué)習計劃不迷茫、跟著(zhù)魚(yú)皮直播做項目(往期項目可無(wú)限回看)、領(lǐng)取魚(yú)皮原創(chuàng )編程學(xué)習 / 求職資料等。最近秋招開(kāi)始了,星球內也會(huì )幫大家規劃求職進(jìn)度、完善簡(jiǎn)歷和項目。
  星球目前已超過(guò) 1 萬(wàn)人了,會(huì )在 8 月 21 日晚漲價(jià),并且不再發(fā)放 60 元優(yōu)惠價(jià),現在加入限時(shí)優(yōu)惠60元 ,歡迎想一起學(xué)習進(jìn)步的小伙伴~

網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 122 次瀏覽 ? 2022-08-07 21:05 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!
  網(wǎng)站內容管理系統后臺設計規范
  1、商城首頁(yè)請分清重要性小清新的花哨網(wǎng)站不適合網(wǎng)站定位高端,需要品牌影響力和專(zhuān)業(yè)性,不適合大規模商城出現。比如某天貓,某京東,這樣商城在小清新花哨頁(yè)面可以,但重要不能出現。畢竟商城肯定以收入為主要目的。
  2、商城內容定位要清晰內容屬性聚合優(yōu)化是在不同類(lèi)型的內容中盡可能使用相同或相似的命名方式,以此方便查找和傳達信息。
  3、圖文并茂網(wǎng)站的內容在設計上一定要更注重圖文并茂這一塊,如果不注重圖文內容,圖片設計也要化繁為簡(jiǎn),在方便用戶(hù)的同時(shí)也符合網(wǎng)站定位。
  
  4、注重轉化和留存那么怎么才能讓頁(yè)面更抓住用戶(hù)的眼球,在提高網(wǎng)站點(diǎn)擊率的同時(shí)提高用戶(hù)留存率。那么就應該在視覺(jué)和內容上出其不意,讓用戶(hù)在嘗試進(jìn)入的過(guò)程中完成留存和轉化。
  5、善用底部導航二級導航和三級導航是目前常見(jiàn)的,如果二級導航能更好的引導用戶(hù)去購買(mǎi),那么產(chǎn)品導購就應該成為重點(diǎn)。二級導航的設計:網(wǎng)站除了底部導航外,在網(wǎng)站的操作區域也能注意二級導航的設計,比如在設置好商品詳情信息,用戶(hù)有針對性的在該頁(yè)面進(jìn)行詳細搜索操作。
  6、靈活收集整理網(wǎng)站下面會(huì )有一些商品和常用功能,比如優(yōu)惠券,或者其他內容。當這些網(wǎng)站都設計完畢,想要對網(wǎng)站有一個(gè)全面性的了解,去找已經(jīng)設計好的網(wǎng)站,定位用戶(hù)在哪些功能區域中使用哪些功能,然后根據功能維度再去設計網(wǎng)站的下一步,這樣網(wǎng)站就能夠更加完善。
  內容管理系統后臺設計規范
  
  1、應該分類(lèi)整理應該在軟件定位使用的目標用戶(hù)人群中,按照分類(lèi)標準來(lái)設計后臺,比如男女,年齡段,月收入。不同的用戶(hù)人群可以根據自己的應用需求,特點(diǎn)設計不同的標準。
  2、內容基本完善很多規范不但要跟使用的人員交流,也要跟開(kāi)發(fā)制作相互溝通,才能夠制定出更加合理的規范。如果是一個(gè)企業(yè)站或者各地分公司也要經(jīng)常去核對有沒(méi)有錯別字,平臺頁(yè)面有沒(méi)有模板,內容是否在頁(yè)面中正確的匹配內容。
  3、不同商品或者商品詳情中收納商品基本信息或者商品基本常識收納。
  4、顯示出商品動(dòng)態(tài)和統計分析多個(gè)商品或者商品詳情頁(yè)面中,列出每個(gè)商品或者商品列表中商品的動(dòng)態(tài)和統計分析。每個(gè)商品在消費者購買(mǎi)和退換貨等操作過(guò)程中動(dòng)態(tài)與統計信息。如果整站或者商品存在大量庫存,你就需要給整站或者所有的商品加載出庫存的信息統計,例如銷(xiāo)售數據和動(dòng)態(tài)等信息,千萬(wàn)不要把信息或者人員信息整個(gè)放在一個(gè)頁(yè)面中,更不要設置一個(gè)“顯示”或者“隱藏”按鈕。
  5、商品詳情應該有天貓、京東等大型網(wǎng)站的圖片,能夠給消費者一個(gè)整體感, 查看全部

  網(wǎng)站內容管理系統后臺設計規范,你知道嗎?!
  網(wǎng)站內容管理系統后臺設計規范
  1、商城首頁(yè)請分清重要性小清新的花哨網(wǎng)站不適合網(wǎng)站定位高端,需要品牌影響力和專(zhuān)業(yè)性,不適合大規模商城出現。比如某天貓,某京東,這樣商城在小清新花哨頁(yè)面可以,但重要不能出現。畢竟商城肯定以收入為主要目的。
  2、商城內容定位要清晰內容屬性聚合優(yōu)化是在不同類(lèi)型的內容中盡可能使用相同或相似的命名方式,以此方便查找和傳達信息。
  3、圖文并茂網(wǎng)站的內容在設計上一定要更注重圖文并茂這一塊,如果不注重圖文內容,圖片設計也要化繁為簡(jiǎn),在方便用戶(hù)的同時(shí)也符合網(wǎng)站定位。
  
  4、注重轉化和留存那么怎么才能讓頁(yè)面更抓住用戶(hù)的眼球,在提高網(wǎng)站點(diǎn)擊率的同時(shí)提高用戶(hù)留存率。那么就應該在視覺(jué)和內容上出其不意,讓用戶(hù)在嘗試進(jìn)入的過(guò)程中完成留存和轉化。
  5、善用底部導航二級導航和三級導航是目前常見(jiàn)的,如果二級導航能更好的引導用戶(hù)去購買(mǎi),那么產(chǎn)品導購就應該成為重點(diǎn)。二級導航的設計:網(wǎng)站除了底部導航外,在網(wǎng)站的操作區域也能注意二級導航的設計,比如在設置好商品詳情信息,用戶(hù)有針對性的在該頁(yè)面進(jìn)行詳細搜索操作。
  6、靈活收集整理網(wǎng)站下面會(huì )有一些商品和常用功能,比如優(yōu)惠券,或者其他內容。當這些網(wǎng)站都設計完畢,想要對網(wǎng)站有一個(gè)全面性的了解,去找已經(jīng)設計好的網(wǎng)站,定位用戶(hù)在哪些功能區域中使用哪些功能,然后根據功能維度再去設計網(wǎng)站的下一步,這樣網(wǎng)站就能夠更加完善。
  內容管理系統后臺設計規范
  
  1、應該分類(lèi)整理應該在軟件定位使用的目標用戶(hù)人群中,按照分類(lèi)標準來(lái)設計后臺,比如男女,年齡段,月收入。不同的用戶(hù)人群可以根據自己的應用需求,特點(diǎn)設計不同的標準。
  2、內容基本完善很多規范不但要跟使用的人員交流,也要跟開(kāi)發(fā)制作相互溝通,才能夠制定出更加合理的規范。如果是一個(gè)企業(yè)站或者各地分公司也要經(jīng)常去核對有沒(méi)有錯別字,平臺頁(yè)面有沒(méi)有模板,內容是否在頁(yè)面中正確的匹配內容。
  3、不同商品或者商品詳情中收納商品基本信息或者商品基本常識收納。
  4、顯示出商品動(dòng)態(tài)和統計分析多個(gè)商品或者商品詳情頁(yè)面中,列出每個(gè)商品或者商品列表中商品的動(dòng)態(tài)和統計分析。每個(gè)商品在消費者購買(mǎi)和退換貨等操作過(guò)程中動(dòng)態(tài)與統計信息。如果整站或者商品存在大量庫存,你就需要給整站或者所有的商品加載出庫存的信息統計,例如銷(xiāo)售數據和動(dòng)態(tài)等信息,千萬(wàn)不要把信息或者人員信息整個(gè)放在一個(gè)頁(yè)面中,更不要設置一個(gè)“顯示”或者“隱藏”按鈕。
  5、商品詳情應該有天貓、京東等大型網(wǎng)站的圖片,能夠給消費者一個(gè)整體感,

網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 108 次瀏覽 ? 2022-07-26 14:03 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口
  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口在系統上線(xiàn)之前設計好ppt上線(xiàn)之后自動(dòng)刷新頁(yè)面(ajax下),增加用戶(hù)體驗,維護的壓力就小很多;后臺的數據存儲數據量不是問(wèn)題;網(wǎng)站內容管理系統在網(wǎng)站上線(xiàn)后,除了1.2、1.3等針對特定內容使用了seo優(yōu)化外,沒(méi)有用第三方內容管理系統。因為自建內容管理系統成本不算低。
  
  google把特定內容投放到站點(diǎn),sem+ppc+googleadsense費用在5.5萬(wàn)一年,對于小網(wǎng)站來(lái)說(shuō),根本不劃算。buybg選擇通過(guò)刷新頁(yè)面拉新,先刷新自建站點(diǎn),使用原有資源支撐facebook,instagram等。沒(méi)有用第三方內容管理系統,我們認為技術(shù)是問(wèn)題,不是價(jià)格的問(wèn)題,而是對產(chǎn)品本身的認知不夠。
  經(jīng)過(guò)細細研究,還是要回歸到網(wǎng)站內容管理系統上,才是保障用戶(hù)體驗最本質(zhì)的事情。網(wǎng)站內容管理系統為什么會(huì )經(jīng)常搞得人煩死人:一般我們的網(wǎng)站內容管理系統都是基于xml格式,通過(guò)js來(lái)控制各個(gè)元素通過(guò)js來(lái)控制ajax文件通過(guò)js來(lái)控制網(wǎng)站各個(gè)內容互動(dòng)服務(wù)器維護管理邏輯給后端提供的配置sdk,集中管理程序升級(維護產(chǎn)品)各個(gè)站點(diǎn)對產(chǎn)品的操作邏輯,不給后端內容刷新緩存區域,增加大量的工作量不能實(shí)現2個(gè)網(wǎng)站互通我們使用了國內第一款阿里云的云集內容管理系統,讓任何網(wǎng)站可以同時(shí)存在于阿里云、騰訊云、facebook等等,相互無(wú)縫對接。
  
  這樣既方便進(jìn)行統一管理,又無(wú)需加班搶設備二是避免額外增加產(chǎn)品功能應用這里要提醒大家是,我們的產(chǎn)品一般不會(huì )賣(mài)全球,常常會(huì )控制在幾個(gè)國家。對一般中小企業(yè)來(lái)說(shuō),集中管理的資源太多、工作量太大對于一般中小企業(yè)來(lái)說(shuō),這樣做太開(kāi)放,隨便在任何一個(gè)國家,一個(gè)權限范圍都有控制,一個(gè)系統就要投入大量的運維人員隨便百度一下云集內容管理系統,都有大量的免費下載版本或者收費版本。
  由于我們經(jīng)常使用的是阿里云的產(chǎn)品,使用阿里云的便捷性是業(yè)內最高的。接下來(lái)一定要考慮清楚,每個(gè)公司給錢(qián)的項目點(diǎn)不一樣,能賺多少錢(qián),能不能接受這個(gè)投入產(chǎn)出比。內容管理系統解決方案阿里云產(chǎn)品大網(wǎng)站“云集”內容管理系統解決方案阿里云產(chǎn)品小網(wǎng)站“阿里云逸智”內容管理系統解決方案騰訊云產(chǎn)品阿里云產(chǎn)品騰訊云產(chǎn)品下載版本說(shuō)明(后面有阿里云產(chǎn)品網(wǎng)站內容管理系統下載,無(wú)需下載)從項目經(jīng)理的角度看產(chǎn)品是商品,各位運營(yíng)、ui、測試、qa、產(chǎn)品經(jīng)理來(lái)看產(chǎn)品是供應商,每個(gè)人看到的都是同一品類(lèi)的商品,而且可能需要分化,不能混淆。云集產(chǎn)品在本地運行的時(shí)候,本地也會(huì )具備大量這類(lèi)資源。阿里云逸智產(chǎn)品在對接騰訊云的時(shí)候,也是在阿里。 查看全部

  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口
  網(wǎng)站內容管理系統后臺設計前端技術(shù)實(shí)現頁(yè)面風(fēng)格設計好接口在系統上線(xiàn)之前設計好ppt上線(xiàn)之后自動(dòng)刷新頁(yè)面(ajax下),增加用戶(hù)體驗,維護的壓力就小很多;后臺的數據存儲數據量不是問(wèn)題;網(wǎng)站內容管理系統在網(wǎng)站上線(xiàn)后,除了1.2、1.3等針對特定內容使用了seo優(yōu)化外,沒(méi)有用第三方內容管理系統。因為自建內容管理系統成本不算低。
  
  google把特定內容投放到站點(diǎn),sem+ppc+googleadsense費用在5.5萬(wàn)一年,對于小網(wǎng)站來(lái)說(shuō),根本不劃算。buybg選擇通過(guò)刷新頁(yè)面拉新,先刷新自建站點(diǎn),使用原有資源支撐facebook,instagram等。沒(méi)有用第三方內容管理系統,我們認為技術(shù)是問(wèn)題,不是價(jià)格的問(wèn)題,而是對產(chǎn)品本身的認知不夠。
  經(jīng)過(guò)細細研究,還是要回歸到網(wǎng)站內容管理系統上,才是保障用戶(hù)體驗最本質(zhì)的事情。網(wǎng)站內容管理系統為什么會(huì )經(jīng)常搞得人煩死人:一般我們的網(wǎng)站內容管理系統都是基于xml格式,通過(guò)js來(lái)控制各個(gè)元素通過(guò)js來(lái)控制ajax文件通過(guò)js來(lái)控制網(wǎng)站各個(gè)內容互動(dòng)服務(wù)器維護管理邏輯給后端提供的配置sdk,集中管理程序升級(維護產(chǎn)品)各個(gè)站點(diǎn)對產(chǎn)品的操作邏輯,不給后端內容刷新緩存區域,增加大量的工作量不能實(shí)現2個(gè)網(wǎng)站互通我們使用了國內第一款阿里云的云集內容管理系統,讓任何網(wǎng)站可以同時(shí)存在于阿里云、騰訊云、facebook等等,相互無(wú)縫對接。
  
  這樣既方便進(jìn)行統一管理,又無(wú)需加班搶設備二是避免額外增加產(chǎn)品功能應用這里要提醒大家是,我們的產(chǎn)品一般不會(huì )賣(mài)全球,常常會(huì )控制在幾個(gè)國家。對一般中小企業(yè)來(lái)說(shuō),集中管理的資源太多、工作量太大對于一般中小企業(yè)來(lái)說(shuō),這樣做太開(kāi)放,隨便在任何一個(gè)國家,一個(gè)權限范圍都有控制,一個(gè)系統就要投入大量的運維人員隨便百度一下云集內容管理系統,都有大量的免費下載版本或者收費版本。
  由于我們經(jīng)常使用的是阿里云的產(chǎn)品,使用阿里云的便捷性是業(yè)內最高的。接下來(lái)一定要考慮清楚,每個(gè)公司給錢(qián)的項目點(diǎn)不一樣,能賺多少錢(qián),能不能接受這個(gè)投入產(chǎn)出比。內容管理系統解決方案阿里云產(chǎn)品大網(wǎng)站“云集”內容管理系統解決方案阿里云產(chǎn)品小網(wǎng)站“阿里云逸智”內容管理系統解決方案騰訊云產(chǎn)品阿里云產(chǎn)品騰訊云產(chǎn)品下載版本說(shuō)明(后面有阿里云產(chǎn)品網(wǎng)站內容管理系統下載,無(wú)需下載)從項目經(jīng)理的角度看產(chǎn)品是商品,各位運營(yíng)、ui、測試、qa、產(chǎn)品經(jīng)理來(lái)看產(chǎn)品是供應商,每個(gè)人看到的都是同一品類(lèi)的商品,而且可能需要分化,不能混淆。云集產(chǎn)品在本地運行的時(shí)候,本地也會(huì )具備大量這類(lèi)資源。阿里云逸智產(chǎn)品在對接騰訊云的時(shí)候,也是在阿里。

幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 107 次瀏覽 ? 2022-07-25 16:34 ? 來(lái)自相關(guān)話(huà)題

  幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能
  點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書(shū)訊
  Python 長(cháng)期穩居編程語(yǔ)言排行的前五,不僅已經(jīng)成為數據分析、人工智能領(lǐng)域必不可少的工具,還被越來(lái)越多地公司用于網(wǎng)站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的編程語(yǔ)言之一。
  目前,市場(chǎng)上的Python基礎書(shū)很多了,那你在學(xué)完P(guān)ython基礎書(shū)后有沒(méi)有興趣用Python的Web框架Django來(lái)進(jìn)行網(wǎng)站開(kāi)發(fā)呢?
  本文將介紹商城系統后臺的需求分析、架構設計及數據庫設計。
  商城系統后臺,使用Django框架自帶的Admin后臺管理系統來(lái)實(shí)現。
  在創(chuàng )建好模型后,幾乎不寫(xiě)一行代碼即可快速開(kāi)發(fā)出商城系統的后臺功能。
  1
  商城系統后臺的設計分析
  商城系統后臺的設計分析,主要包含需求分析、架構設計和數據庫模型設計。
  1.需求分析
  商城系統后臺的功能如下圖所示。
  2.架構設計
  為實(shí)現商城系統后臺,采用Django框架作為服務(wù)器端的基礎框架,采用“HTML + CSS + JavaScript”搭建前端,數據庫采用MySQL,如下圖所示。
  3.數據庫模型設計
  準確了解用戶(hù)需求是整個(gè)系統設計的基礎,也是最困難、最耗費時(shí)間的一步。在了解清楚需求后,開(kāi)始進(jìn)行數據庫模型設計。模型設計分為邏輯模型設計和物理模型設計。
  從邏輯模型到物理模型,是一個(gè)從抽象到具體、不斷細化完善的過(guò)程。一般使用PowerDesign或者PDMan進(jìn)行數據庫的模型設計。
 ?。?)生成物理模型
  在PDMan中可以新增模型,設計商品分類(lèi)表和商品表,如下圖所示。商品分類(lèi)表和商品表是“一對多”關(guān)系。
  在模型設計完成后,可以導出DDL腳本,然后在指定數據庫中生成數據表。
 ?。?)反向生成Django模型
  在完成數據庫的物理模型設計后,可以根據物理模型反向生成Django模型。
  在VS Code終端控制臺中輸入如下命令:
  python manage.py inspectdb #輸出數據庫中的所有表到控制臺中python manage.py inspectdb > models.py #輸出到models.py文件中
  當數據表中字段很多時(shí),反向生成模型可以提高模型的編寫(xiě)效率。
  
  2
  使用Django自帶的Admin后臺管理系統
  使用Django的Admin后臺管理系統,不寫(xiě)一行代碼即可完成數據的增加、刪除、修改和查詢(xún)。只要定義好模型,Django就能生成一個(gè)具備增加、刪除、修改和查詢(xún)功能的應用。這也是Django之所以非常流行的一個(gè)很大原因。如果對軟件界面效果要求不高,或者只是臨時(shí)做個(gè)界面錄入信息,則可以采用這種方式。
  Django自帶的Admin后臺管理系統可用于對網(wǎng)站中的各個(gè)模塊進(jìn)行管理,比如文字、圖片、文件等的增加、刪除、修改和查詢(xún)。
  1.創(chuàng )建商城系統后臺項目
  新建一個(gè)項目myshop-back,接下來(lái)的操作都在該項目中完成。在該項目下創(chuàng )建一個(gè)apps目錄,用來(lái)放置所有的商城應用。
 ?。?)輸入如下命令創(chuàng )建應用。
  python manage.py startapp basic #基礎應用python manage.py startapp goods #商品應用python manage.py startapp users #用戶(hù)應用python manage.py startapp order #訂單應用
  創(chuàng )建完成后,將這4個(gè)應用目錄放到apps目錄下,如下圖所示。
  打開(kāi)本書(shū)配套資源中的“settings.py”,在INSTALLED_APPS列表中增加商城系統后臺的相關(guān)應用,如以下代碼所示。
  INSTALLED_APPS = [ … 'apps.basic', #注意寫(xiě)法 'apps.goods', #注意寫(xiě)法 'apps.order', #注意寫(xiě)法 'apps.users', #注意寫(xiě)法 …]
 ?。?)創(chuàng )建商品分類(lèi)模型和商品模型。
  打開(kāi)本書(shū)配套資源中的“apps/goods/models.py”,新增模型類(lèi)GoodsCategory和Goods,如以下代碼所示。
  …class GoodsCategory(BaseModel): id = models.AutoField(primary_key=True) name=models.CharField(max_length=50,verbose_name='分類(lèi)名稱(chēng)',default='') parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父類(lèi)",on_delete=models.DO_NOTHING,related_name="sub_cat") logo=models.ImageField(verbose_name="分類(lèi)logo圖片",upload_to= "uploads/goods_img/") is_nav=models.BooleanField(default=False,verbose_name='是否顯示在導航欄') sort=models.IntegerField(verbose_name='排序')<br /><br /> …<br /><br />class Goods(models.Model): STATUS=( (0,'正常'), (1,'下架'), ) name = models.CharField(max_length=50,verbose_name='商品名稱(chēng)', default='') category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分類(lèi)',on_delete=models.DO_NOTHING) market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市場(chǎng)價(jià)格') price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='實(shí)際價(jià)格') … status=models.IntegerField(default=0,choices=STATUS) …
  限于篇幅,其他模型不一一列出,讀者可以查閱本書(shū)配套資源中的代碼。接下來(lái)繼續配置Admin后臺管理系統。
  2.登錄Admin后臺管理系統
  在登錄Admin后臺管理系統前,需要創(chuàng )建一個(gè)管理員用戶(hù)。在VS Code終端界面輸入如下命令,之后根據命令提示輸入用戶(hù)名和密碼即可完成用戶(hù)的注冊。郵箱可以不用輸入。
  python manage.py createsuperuser
  接下來(lái)就可以登錄Admin后臺管理系統了。訪(fǎng)問(wèn)Admin后臺管理系統“:8000/admin/”,使用剛才創(chuàng )建的管理員用戶(hù)名和密碼進(jìn)行登錄,登錄后的界面如下圖所示。
  3.配置Admin后臺管理系統
  默認用戶(hù)模型和組模型會(huì )在A(yíng)dmin后臺管理系統中顯示出來(lái),其他的模型還需要在每個(gè)應用中設置相應的文件才能正常顯示。
 ?。?)設置apps.py文件
  打開(kāi)本書(shū)配套資源中的“goods/apps.py”,在其中添加如下代碼。
  from django.apps import AppConfigclass GoodsConfig(AppConfig): name = 'apps.goods' verbose_name="商品管理"
  這樣,“商品管理”會(huì )顯示在A(yíng)dmin后臺管理系統中的左側菜單導航中。
 ?。?)設置__init__.py文件
  
  打開(kāi)本書(shū)配套資源中的“goods/__init__.py”,在其中添加如下代碼。
  from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'
  __init__.py是應用的初始化文件。在該文件中設置default_app_config變量,用來(lái)指向apps.py文件中定義的AppConfig類(lèi)。
 ?。?)設置admin.py文件
  打開(kāi)本書(shū)配套資源中的“goods/admin.py”,在其中添加如下代碼。
  from django.contrib import adminfrom apps.goods.models import *@admin.register(GoodsCategory)class GoodsCategoryAdmin(admin.ModelAdmin): admin.site.site_title="我的特產(chǎn)商城后臺" admin.site.site_header="我的特產(chǎn)商城后臺" admin.site.index_title="商城平臺管理" #設置列表中顯示的字段 list_display=['name','logo','sort','create_time'] #搜索 search_fields=['name','parent_id'] #過(guò)濾 list_filter=['name','parent_id'] #設置日期選擇器 date_hierarchy='create_time' #設置每頁(yè)現實(shí)的數據量 list_per_page=10 #設置排序 ordering=['sort']@admin.register(Slide)class SlideAdmin(admin.ModelAdmin): #設置列表中顯示的字段 list_display=['goods_id','sort','images']
  上述代碼的實(shí)現過(guò)程如下。
 ?。?)自定義一個(gè)繼承自ModelAdmin的類(lèi)。該類(lèi)用來(lái)在A(yíng)dmin后臺管理系統中顯示模型。
 ?。?)使用裝飾器將模型類(lèi)Goods和GoodsAdmin關(guān)聯(lián)起來(lái),并注冊到Admin后臺管理系統中。
  admin.py用于將項目應用定義的模型獨享注冊,并綁定到Admin后臺管理系統中。注冊后,Admin后臺管理系統自動(dòng)擁有了該模型對應數據表的增加、刪除、修改和查詢(xún)功能。
  刷新Admin后臺管理系統界面,如下圖所示??梢钥吹皆谧髠鹊牟藛巍吧唐饭芾怼毕鲁霈F了商品信息、商品分類(lèi)和首頁(yè)輪播等二級菜單。
  單擊左側菜單中的“商品分類(lèi)”鏈接,右側會(huì )顯示商品分類(lèi)列表數據。商品分類(lèi)列表數據按照在代碼中定義的規則進(jìn)行顯示,如下圖所示。
  此外,還可以對商品分類(lèi)表和商品表進(jìn)行數據維護,如下三圖所示。
  感興趣的讀者可以動(dòng)手試試Django的Admin后臺管理系統中的其他功能。
  本文摘自《Django + Vue.js實(shí)戰派――Python Web開(kāi)發(fā)與運維》,更多精彩內容歡迎閱讀本書(shū)!
  限時(shí)五折
  掃碼查看本書(shū)詳情
  如果喜歡本文歡迎?在看丨留言丨分享至朋友圈?三連<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;clear: both;min-height: 1em;vertical-align: inherit;color: #ffffff;font-size: 14px;letter-spacing: 1px;">?熱文推薦??
  <br />
  一文理解分布式開(kāi)發(fā)中的服務(wù)治理<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  特斯拉為何使用.NET Core技術(shù)框架?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  后深度學(xué)習時(shí)代,推薦系統向何處去?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  全流程指導,從0開(kāi)始打造自己的API網(wǎng)關(guān)
  <br />
  <br /></p> 查看全部

  幾乎不寫(xiě)一行代碼,快速開(kāi)發(fā)后臺功能
  點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書(shū)訊
  Python 長(cháng)期穩居編程語(yǔ)言排行的前五,不僅已經(jīng)成為數據分析、人工智能領(lǐng)域必不可少的工具,還被越來(lái)越多地公司用于網(wǎng)站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的編程語(yǔ)言之一。
  目前,市場(chǎng)上的Python基礎書(shū)很多了,那你在學(xué)完P(guān)ython基礎書(shū)后有沒(méi)有興趣用Python的Web框架Django來(lái)進(jìn)行網(wǎng)站開(kāi)發(fā)呢?
  本文將介紹商城系統后臺的需求分析、架構設計及數據庫設計。
  商城系統后臺,使用Django框架自帶的Admin后臺管理系統來(lái)實(shí)現。
  在創(chuàng )建好模型后,幾乎不寫(xiě)一行代碼即可快速開(kāi)發(fā)出商城系統的后臺功能。
  1
  商城系統后臺的設計分析
  商城系統后臺的設計分析,主要包含需求分析、架構設計和數據庫模型設計。
  1.需求分析
  商城系統后臺的功能如下圖所示。
  2.架構設計
  為實(shí)現商城系統后臺,采用Django框架作為服務(wù)器端的基礎框架,采用“HTML + CSS + JavaScript”搭建前端,數據庫采用MySQL,如下圖所示。
  3.數據庫模型設計
  準確了解用戶(hù)需求是整個(gè)系統設計的基礎,也是最困難、最耗費時(shí)間的一步。在了解清楚需求后,開(kāi)始進(jìn)行數據庫模型設計。模型設計分為邏輯模型設計和物理模型設計。
  從邏輯模型到物理模型,是一個(gè)從抽象到具體、不斷細化完善的過(guò)程。一般使用PowerDesign或者PDMan進(jìn)行數據庫的模型設計。
 ?。?)生成物理模型
  在PDMan中可以新增模型,設計商品分類(lèi)表和商品表,如下圖所示。商品分類(lèi)表和商品表是“一對多”關(guān)系。
  在模型設計完成后,可以導出DDL腳本,然后在指定數據庫中生成數據表。
 ?。?)反向生成Django模型
  在完成數據庫的物理模型設計后,可以根據物理模型反向生成Django模型。
  在VS Code終端控制臺中輸入如下命令:
  python manage.py inspectdb #輸出數據庫中的所有表到控制臺中python manage.py inspectdb > models.py #輸出到models.py文件中
  當數據表中字段很多時(shí),反向生成模型可以提高模型的編寫(xiě)效率。
  
  2
  使用Django自帶的Admin后臺管理系統
  使用Django的Admin后臺管理系統,不寫(xiě)一行代碼即可完成數據的增加、刪除、修改和查詢(xún)。只要定義好模型,Django就能生成一個(gè)具備增加、刪除、修改和查詢(xún)功能的應用。這也是Django之所以非常流行的一個(gè)很大原因。如果對軟件界面效果要求不高,或者只是臨時(shí)做個(gè)界面錄入信息,則可以采用這種方式。
  Django自帶的Admin后臺管理系統可用于對網(wǎng)站中的各個(gè)模塊進(jìn)行管理,比如文字、圖片、文件等的增加、刪除、修改和查詢(xún)。
  1.創(chuàng )建商城系統后臺項目
  新建一個(gè)項目myshop-back,接下來(lái)的操作都在該項目中完成。在該項目下創(chuàng )建一個(gè)apps目錄,用來(lái)放置所有的商城應用。
 ?。?)輸入如下命令創(chuàng )建應用。
  python manage.py startapp basic #基礎應用python manage.py startapp goods #商品應用python manage.py startapp users #用戶(hù)應用python manage.py startapp order #訂單應用
  創(chuàng )建完成后,將這4個(gè)應用目錄放到apps目錄下,如下圖所示。
  打開(kāi)本書(shū)配套資源中的“settings.py”,在INSTALLED_APPS列表中增加商城系統后臺的相關(guān)應用,如以下代碼所示。
  INSTALLED_APPS = [ … 'apps.basic', #注意寫(xiě)法 'apps.goods', #注意寫(xiě)法 'apps.order', #注意寫(xiě)法 'apps.users', #注意寫(xiě)法 …]
 ?。?)創(chuàng )建商品分類(lèi)模型和商品模型。
  打開(kāi)本書(shū)配套資源中的“apps/goods/models.py”,新增模型類(lèi)GoodsCategory和Goods,如以下代碼所示。
  …class GoodsCategory(BaseModel): id = models.AutoField(primary_key=True) name=models.CharField(max_length=50,verbose_name='分類(lèi)名稱(chēng)',default='') parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父類(lèi)",on_delete=models.DO_NOTHING,related_name="sub_cat") logo=models.ImageField(verbose_name="分類(lèi)logo圖片",upload_to= "uploads/goods_img/") is_nav=models.BooleanField(default=False,verbose_name='是否顯示在導航欄') sort=models.IntegerField(verbose_name='排序')<br /><br /> …<br /><br />class Goods(models.Model): STATUS=( (0,'正常'), (1,'下架'), ) name = models.CharField(max_length=50,verbose_name='商品名稱(chēng)', default='') category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分類(lèi)',on_delete=models.DO_NOTHING) market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市場(chǎng)價(jià)格') price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='實(shí)際價(jià)格') … status=models.IntegerField(default=0,choices=STATUS) …
  限于篇幅,其他模型不一一列出,讀者可以查閱本書(shū)配套資源中的代碼。接下來(lái)繼續配置Admin后臺管理系統。
  2.登錄Admin后臺管理系統
  在登錄Admin后臺管理系統前,需要創(chuàng )建一個(gè)管理員用戶(hù)。在VS Code終端界面輸入如下命令,之后根據命令提示輸入用戶(hù)名和密碼即可完成用戶(hù)的注冊。郵箱可以不用輸入。
  python manage.py createsuperuser
  接下來(lái)就可以登錄Admin后臺管理系統了。訪(fǎng)問(wèn)Admin后臺管理系統“:8000/admin/”,使用剛才創(chuàng )建的管理員用戶(hù)名和密碼進(jìn)行登錄,登錄后的界面如下圖所示。
  3.配置Admin后臺管理系統
  默認用戶(hù)模型和組模型會(huì )在A(yíng)dmin后臺管理系統中顯示出來(lái),其他的模型還需要在每個(gè)應用中設置相應的文件才能正常顯示。
 ?。?)設置apps.py文件
  打開(kāi)本書(shū)配套資源中的“goods/apps.py”,在其中添加如下代碼。
  from django.apps import AppConfigclass GoodsConfig(AppConfig): name = 'apps.goods' verbose_name="商品管理"
  這樣,“商品管理”會(huì )顯示在A(yíng)dmin后臺管理系統中的左側菜單導航中。
 ?。?)設置__init__.py文件
  
  打開(kāi)本書(shū)配套資源中的“goods/__init__.py”,在其中添加如下代碼。
  from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'
  __init__.py是應用的初始化文件。在該文件中設置default_app_config變量,用來(lái)指向apps.py文件中定義的AppConfig類(lèi)。
 ?。?)設置admin.py文件
  打開(kāi)本書(shū)配套資源中的“goods/admin.py”,在其中添加如下代碼。
  from django.contrib import adminfrom apps.goods.models import *@admin.register(GoodsCategory)class GoodsCategoryAdmin(admin.ModelAdmin): admin.site.site_title="我的特產(chǎn)商城后臺" admin.site.site_header="我的特產(chǎn)商城后臺" admin.site.index_title="商城平臺管理" #設置列表中顯示的字段 list_display=['name','logo','sort','create_time'] #搜索 search_fields=['name','parent_id'] #過(guò)濾 list_filter=['name','parent_id'] #設置日期選擇器 date_hierarchy='create_time' #設置每頁(yè)現實(shí)的數據量 list_per_page=10 #設置排序 ordering=['sort']@admin.register(Slide)class SlideAdmin(admin.ModelAdmin): #設置列表中顯示的字段 list_display=['goods_id','sort','images']
  上述代碼的實(shí)現過(guò)程如下。
 ?。?)自定義一個(gè)繼承自ModelAdmin的類(lèi)。該類(lèi)用來(lái)在A(yíng)dmin后臺管理系統中顯示模型。
 ?。?)使用裝飾器將模型類(lèi)Goods和GoodsAdmin關(guān)聯(lián)起來(lái),并注冊到Admin后臺管理系統中。
  admin.py用于將項目應用定義的模型獨享注冊,并綁定到Admin后臺管理系統中。注冊后,Admin后臺管理系統自動(dòng)擁有了該模型對應數據表的增加、刪除、修改和查詢(xún)功能。
  刷新Admin后臺管理系統界面,如下圖所示??梢钥吹皆谧髠鹊牟藛巍吧唐饭芾怼毕鲁霈F了商品信息、商品分類(lèi)和首頁(yè)輪播等二級菜單。
  單擊左側菜單中的“商品分類(lèi)”鏈接,右側會(huì )顯示商品分類(lèi)列表數據。商品分類(lèi)列表數據按照在代碼中定義的規則進(jìn)行顯示,如下圖所示。
  此外,還可以對商品分類(lèi)表和商品表進(jìn)行數據維護,如下三圖所示。
  感興趣的讀者可以動(dòng)手試試Django的Admin后臺管理系統中的其他功能。
  本文摘自《Django + Vue.js實(shí)戰派――Python Web開(kāi)發(fā)與運維》,更多精彩內容歡迎閱讀本書(shū)!
  限時(shí)五折
  掃碼查看本書(shū)詳情
  如果喜歡本文歡迎?在看留言分享至朋友圈?三連<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;clear: both;min-height: 1em;vertical-align: inherit;color: #ffffff;font-size: 14px;letter-spacing: 1px;">?熱文推薦??
  <br />
  一文理解分布式開(kāi)發(fā)中的服務(wù)治理<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  特斯拉為何使用.NET Core技術(shù)框架?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  后深度學(xué)習時(shí)代,推薦系統向何處去?<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  全流程指導,從0開(kāi)始打造自己的API網(wǎng)關(guān)
  <br />
  <br /></p>

設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 89 次瀏覽 ? 2022-07-22 01:44 ? 來(lái)自相關(guān)話(huà)題

  設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用
  隨著(zhù)B端體驗設計的發(fā)展,表單類(lèi)頁(yè)面已經(jīng)形成了一定的設計模式,例如登錄頁(yè)面,場(chǎng)景比較明確、業(yè)務(wù)流程和設計模式都比較成熟了。
  業(yè)務(wù)型表單設計與業(yè)務(wù)強相關(guān)。既需要考慮交互帶來(lái)的用戶(hù)體驗,又要從業(yè)務(wù)角度出發(fā)滿(mǎn)足用戶(hù)的行為需求,相對比較復雜。不過(guò)也形成了一些固定的設計方法。今天我們先來(lái)看看「精簡(jiǎn)」策略。
  本文主要內容:
  表單是系統與用戶(hù)進(jìn)行溝通的語(yǔ)言,它應當符合雙方的認知邏輯。因此表單設計時(shí),需要解決「產(chǎn)品」和「用戶(hù)」2個(gè)方面的問(wèn)題:尤其是面對復雜表單,需要從這兩方面尋找到突破口。復雜表單通常包含多種業(yè)務(wù)場(chǎng)景,并且與其他業(yè)務(wù)存在關(guān)聯(lián)和嵌套,導致表單內容信息量較大。我們需要通過(guò)「刪除」、「組織」、「隱藏」、「轉移」4個(gè)交互設計原則,讓表單頁(yè)面更加簡(jiǎn)單、有效。
  ▎01刪除,實(shí)現表單輕量化前幾年,我們在銀行或者移動(dòng)營(yíng)業(yè)廳開(kāi)通一些新業(yè)務(wù)時(shí),都會(huì )填寫(xiě)表單,通常是密密麻麻一堆信息。但是實(shí)際需要填寫(xiě)的內容可能只有2~3項,業(yè)務(wù)人員會(huì )特意勾選出來(lái)給客戶(hù),其余的都是非必填項,或者是業(yè)務(wù)人員填寫(xiě)的。線(xiàn)上表單設計時(shí),沒(méi)有專(zhuān)門(mén)的業(yè)務(wù)人員指導,用戶(hù)更容易迷失。所以設計師或者產(chǎn)品經(jīng)理的首要任務(wù)就是盡可能地減少表單信息量,降低用戶(hù)的認知負荷。最近在做一個(gè)表單的優(yōu)化,業(yè)務(wù)方要求增加“入參”、“出參”兩個(gè)表格項,說(shuō)是用戶(hù)會(huì )看。與用戶(hù)溝通后,反饋也說(shuō)“會(huì )看一下”。但是在深度挖掘用戶(hù)場(chǎng)景后,發(fā)現用戶(hù)確實(shí)會(huì )查看這個(gè)信息,只不過(guò)不是在當前環(huán)節查看,而是在結果項中查看。所以我們最終去掉了這兩個(gè)信息量較大的表格內容,從而讓整個(gè)表單的信息量得到了明顯的下降。因此面對復雜長(cháng)表單,我們需要從需求入手,判斷是否有必要讓用戶(hù)提供如此多的復雜信息。
  ▎02組織,讓表單更加有層次當我們不得不面對復雜表單時(shí),如果采用簡(jiǎn)單內容平鋪,用戶(hù)看到的是滿(mǎn)屏的散點(diǎn)信息,造成信息識別困難,用戶(hù)一時(shí)間難以找到填寫(xiě)思路,反而增加用戶(hù)的心理負擔。因此信息的層次性,對于復雜表單至關(guān)重要。首先要從內容和視覺(jué)層面讓復雜信息變得清晰、規整,更加符合用戶(hù)的認知習慣。例如,可以利用分組標題、分割線(xiàn)、卡片,按照不同信息的類(lèi)別、屬性和相關(guān)性進(jìn)行區塊劃分。根據不同的布局和交互,主要有以下4種表單設計模式。
  1、順序表單表單分組后,可以按照業(yè)務(wù)邏輯順序鋪開(kāi)展示。用戶(hù)只要按順序填寫(xiě)就可以了。但是對于超長(cháng)表單,這種布局方式下,用戶(hù)無(wú)法全覽頁(yè)面信息。頁(yè)面上下滾動(dòng)、定位查找帶來(lái)的交互成本比較高。1)平鋪表單
  2)卡片表單
  
  因此順序表單更多地用在業(yè)務(wù)信息比較簡(jiǎn)單的場(chǎng)景中。2、錨點(diǎn)表單為了解決長(cháng)表單的定位效率問(wèn)題,可以在順序表單的基礎上增加錨點(diǎn)。另外錨點(diǎn)還可以幫助用戶(hù)快速了解表單所包含的內容模塊。
  根據錨點(diǎn)的布局,可以分為橫向錨點(diǎn)和縱向錨點(diǎn)兩類(lèi)。錨點(diǎn)需要吸頂方便用戶(hù)操作。本質(zhì)上來(lái)說(shuō),錨點(diǎn)表單是順序表單的優(yōu)化版本。
  3、標簽表單如果長(cháng)表單內容沒(méi)有依賴(lài)關(guān)系,還可以將表單拆分為幾個(gè)相互獨立的標簽內容,這就是標簽表單。
  不過(guò)標簽表單更強調內容的并列關(guān)系,常用于配置表單中,例如 MAC 或者 Windows 系統的配置彈窗。
  標簽表單在全新表單中應用較少。因為標簽表單容易造成內容遺漏,并且無(wú)法告知用戶(hù)哪些標簽已經(jīng)填寫(xiě),哪些標簽未填寫(xiě),或者無(wú)法清晰地展示校驗信息。來(lái)回切換標簽查看信息,也會(huì )影響效率,因此主要用于用戶(hù)有目的的配置行為中。4、步驟表單
  步驟表單是一種常見(jiàn)的表單拆分方式。通過(guò)節點(diǎn)將子表單串聯(lián)起來(lái),形成一個(gè)完整的業(yè)務(wù)閉環(huán)。例如阿里云的云服務(wù)器訂單流程,或者一些開(kāi)戶(hù)流程等。
  
  步驟表單有幾個(gè)特點(diǎn):1)過(guò)程串聯(lián)理論上來(lái)說(shuō),步驟表單有明顯的操作順序,用戶(hù)需要按照節點(diǎn)完成內容填寫(xiě),因此不會(huì )產(chǎn)生信息遺漏。當然也可以根據實(shí)際的業(yè)務(wù)場(chǎng)景,設置選填節點(diǎn)。但是總得來(lái)說(shuō),步驟表單更強調的是順序操作。2)業(yè)務(wù)引導性
  對于復雜業(yè)務(wù),步驟表單可以將分散在不同頁(yè)面中的獨立業(yè)務(wù)串聯(lián)起來(lái),在一定程度上具備新人教學(xué)功能,幫助用戶(hù)了解業(yè)務(wù)邏輯。減少用戶(hù)自定義操作時(shí)在不同頁(yè)面的跳轉,從而提供新人用戶(hù)的操作效率。例如系統配置向導類(lèi)的步驟表單。
  3)逆向操作
  由于步驟表單存在正向和逆向操作,因此設計時(shí)還需要考慮清楚逆向操作的設計邏輯。例如:4)節點(diǎn)的平衡性步驟表單可以分拆信息,化整為零。但是信息節點(diǎn)也不能過(guò)多,否則同樣會(huì )影響用戶(hù)的操作效率。所以要減少不必要的流程節點(diǎn)。最近在做設計時(shí),發(fā)現步驟表單最后一步是內容預覽。通過(guò)用戶(hù)調研發(fā)現,部分用戶(hù)會(huì )謹慎地預覽前面4步填寫(xiě)的內容。而另一部分用戶(hù)則認為,剛填寫(xiě)了內容不需要預覽,強制預覽的設計并不友好。該如何平衡設計呢?最終我們選擇了將預覽節點(diǎn)取消,將預覽功能調整到第4步,采用「預覽」按鈕的形式。既滿(mǎn)足了部分用戶(hù)預覽的需要,另一部分用戶(hù)也可以不做預覽,直接提交申請。所以步驟表單過(guò)程中的節點(diǎn)具有一定的強制性,需要謹慎對待,保證節點(diǎn)的合理有效。
  ▎03隱藏,讓表單更加靈活1、模塊隱藏表單實(shí)際上是任務(wù)信息的集合,為了具有更高的適配性,內容通常是多種場(chǎng)景的集合。而場(chǎng)景有高頻、低頻區分,對于高頻信息需要優(yōu)先展示,便于提高用戶(hù)的填寫(xiě)效率;對于低頻場(chǎng)景,可以隱藏弱化展示,從而降低整個(gè)表單的復雜度。例如我們常見(jiàn)的「高級配置」,通常在表單的底部默認收起展示。
  2、信息隱藏復雜表單中信息會(huì )出現多級信息共存的場(chǎng)景。這種場(chǎng)景下,復雜表單默認展示當前選項對應的子內容,隱藏其他選項的內容,從而提高信息的指向性。
  3、合理的組件形式比較典型的就是單選和下拉選擇器如何選擇。有人為了強調效率,一味地追求單選按鈕平鋪展示,認為單選更加直觀(guān),用戶(hù)不需要點(diǎn)擊下拉滾動(dòng)查看備選項。但是用戶(hù)同樣需要逐個(gè)瀏覽選擇,反而增加了整個(gè)頁(yè)面的信息量。所以單選框更多用在備選項較少的場(chǎng)景,如果備選項較多,建議優(yōu)先采用下拉選擇器,隱藏備選項。▎04轉移,擴展表單的異步空間1、信息轉移在表單設計時(shí),可以將部分二級信息轉移到彈窗、抽屜中,利用浮層空間拓展業(yè)務(wù)內容,根據用戶(hù)操作逐級加載出來(lái)。從而減少表單的信息量。例如下圖中,沒(méi)有將「所有配送區域及運費」直接展示出來(lái)供用戶(hù)選擇,而是放在了彈窗中,表單中只呈現最后的選擇結果。既簡(jiǎn)化了表單的內容,又讓選擇結果更加突出,方便用戶(hù)的查看和校驗。
  2、記憶轉移
  現在很多瀏覽器都增加了密碼存儲功能,減少用戶(hù)記憶成本。而在電商購物網(wǎng)站可以設定默認的收貨地址。系統自動(dòng)讀取調用,從而減少用戶(hù)的輸入操作。3、行為轉移現在越來(lái)越多的網(wǎng)站支持「手機短信驗證碼」免密注冊登錄方式,或者第三方登錄方式,或者手機端掃碼登錄。將原有的表單填寫(xiě)轉變?yōu)橄到y行為,從而降低用戶(hù)的行為成本。 查看全部

  設計基礎(7): 簡(jiǎn)約設計4原則在表單設計中的應用
  隨著(zhù)B端體驗設計的發(fā)展,表單類(lèi)頁(yè)面已經(jīng)形成了一定的設計模式,例如登錄頁(yè)面,場(chǎng)景比較明確、業(yè)務(wù)流程和設計模式都比較成熟了。
  業(yè)務(wù)型表單設計與業(yè)務(wù)強相關(guān)。既需要考慮交互帶來(lái)的用戶(hù)體驗,又要從業(yè)務(wù)角度出發(fā)滿(mǎn)足用戶(hù)的行為需求,相對比較復雜。不過(guò)也形成了一些固定的設計方法。今天我們先來(lái)看看「精簡(jiǎn)」策略。
  本文主要內容:
  表單是系統與用戶(hù)進(jìn)行溝通的語(yǔ)言,它應當符合雙方的認知邏輯。因此表單設計時(shí),需要解決「產(chǎn)品」和「用戶(hù)」2個(gè)方面的問(wèn)題:尤其是面對復雜表單,需要從這兩方面尋找到突破口。復雜表單通常包含多種業(yè)務(wù)場(chǎng)景,并且與其他業(yè)務(wù)存在關(guān)聯(lián)和嵌套,導致表單內容信息量較大。我們需要通過(guò)「刪除」、「組織」、「隱藏」、「轉移」4個(gè)交互設計原則,讓表單頁(yè)面更加簡(jiǎn)單、有效。
  ▎01刪除,實(shí)現表單輕量化前幾年,我們在銀行或者移動(dòng)營(yíng)業(yè)廳開(kāi)通一些新業(yè)務(wù)時(shí),都會(huì )填寫(xiě)表單,通常是密密麻麻一堆信息。但是實(shí)際需要填寫(xiě)的內容可能只有2~3項,業(yè)務(wù)人員會(huì )特意勾選出來(lái)給客戶(hù),其余的都是非必填項,或者是業(yè)務(wù)人員填寫(xiě)的。線(xiàn)上表單設計時(shí),沒(méi)有專(zhuān)門(mén)的業(yè)務(wù)人員指導,用戶(hù)更容易迷失。所以設計師或者產(chǎn)品經(jīng)理的首要任務(wù)就是盡可能地減少表單信息量,降低用戶(hù)的認知負荷。最近在做一個(gè)表單的優(yōu)化,業(yè)務(wù)方要求增加“入參”、“出參”兩個(gè)表格項,說(shuō)是用戶(hù)會(huì )看。與用戶(hù)溝通后,反饋也說(shuō)“會(huì )看一下”。但是在深度挖掘用戶(hù)場(chǎng)景后,發(fā)現用戶(hù)確實(shí)會(huì )查看這個(gè)信息,只不過(guò)不是在當前環(huán)節查看,而是在結果項中查看。所以我們最終去掉了這兩個(gè)信息量較大的表格內容,從而讓整個(gè)表單的信息量得到了明顯的下降。因此面對復雜長(cháng)表單,我們需要從需求入手,判斷是否有必要讓用戶(hù)提供如此多的復雜信息。
  ▎02組織,讓表單更加有層次當我們不得不面對復雜表單時(shí),如果采用簡(jiǎn)單內容平鋪,用戶(hù)看到的是滿(mǎn)屏的散點(diǎn)信息,造成信息識別困難,用戶(hù)一時(shí)間難以找到填寫(xiě)思路,反而增加用戶(hù)的心理負擔。因此信息的層次性,對于復雜表單至關(guān)重要。首先要從內容和視覺(jué)層面讓復雜信息變得清晰、規整,更加符合用戶(hù)的認知習慣。例如,可以利用分組標題、分割線(xiàn)、卡片,按照不同信息的類(lèi)別、屬性和相關(guān)性進(jìn)行區塊劃分。根據不同的布局和交互,主要有以下4種表單設計模式。
  1、順序表單表單分組后,可以按照業(yè)務(wù)邏輯順序鋪開(kāi)展示。用戶(hù)只要按順序填寫(xiě)就可以了。但是對于超長(cháng)表單,這種布局方式下,用戶(hù)無(wú)法全覽頁(yè)面信息。頁(yè)面上下滾動(dòng)、定位查找帶來(lái)的交互成本比較高。1)平鋪表單
  2)卡片表單
  
  因此順序表單更多地用在業(yè)務(wù)信息比較簡(jiǎn)單的場(chǎng)景中。2、錨點(diǎn)表單為了解決長(cháng)表單的定位效率問(wèn)題,可以在順序表單的基礎上增加錨點(diǎn)。另外錨點(diǎn)還可以幫助用戶(hù)快速了解表單所包含的內容模塊。
  根據錨點(diǎn)的布局,可以分為橫向錨點(diǎn)和縱向錨點(diǎn)兩類(lèi)。錨點(diǎn)需要吸頂方便用戶(hù)操作。本質(zhì)上來(lái)說(shuō),錨點(diǎn)表單是順序表單的優(yōu)化版本。
  3、標簽表單如果長(cháng)表單內容沒(méi)有依賴(lài)關(guān)系,還可以將表單拆分為幾個(gè)相互獨立的標簽內容,這就是標簽表單。
  不過(guò)標簽表單更強調內容的并列關(guān)系,常用于配置表單中,例如 MAC 或者 Windows 系統的配置彈窗。
  標簽表單在全新表單中應用較少。因為標簽表單容易造成內容遺漏,并且無(wú)法告知用戶(hù)哪些標簽已經(jīng)填寫(xiě),哪些標簽未填寫(xiě),或者無(wú)法清晰地展示校驗信息。來(lái)回切換標簽查看信息,也會(huì )影響效率,因此主要用于用戶(hù)有目的的配置行為中。4、步驟表單
  步驟表單是一種常見(jiàn)的表單拆分方式。通過(guò)節點(diǎn)將子表單串聯(lián)起來(lái),形成一個(gè)完整的業(yè)務(wù)閉環(huán)。例如阿里云的云服務(wù)器訂單流程,或者一些開(kāi)戶(hù)流程等。
  
  步驟表單有幾個(gè)特點(diǎn):1)過(guò)程串聯(lián)理論上來(lái)說(shuō),步驟表單有明顯的操作順序,用戶(hù)需要按照節點(diǎn)完成內容填寫(xiě),因此不會(huì )產(chǎn)生信息遺漏。當然也可以根據實(shí)際的業(yè)務(wù)場(chǎng)景,設置選填節點(diǎn)。但是總得來(lái)說(shuō),步驟表單更強調的是順序操作。2)業(yè)務(wù)引導性
  對于復雜業(yè)務(wù),步驟表單可以將分散在不同頁(yè)面中的獨立業(yè)務(wù)串聯(lián)起來(lái),在一定程度上具備新人教學(xué)功能,幫助用戶(hù)了解業(yè)務(wù)邏輯。減少用戶(hù)自定義操作時(shí)在不同頁(yè)面的跳轉,從而提供新人用戶(hù)的操作效率。例如系統配置向導類(lèi)的步驟表單。
  3)逆向操作
  由于步驟表單存在正向和逆向操作,因此設計時(shí)還需要考慮清楚逆向操作的設計邏輯。例如:4)節點(diǎn)的平衡性步驟表單可以分拆信息,化整為零。但是信息節點(diǎn)也不能過(guò)多,否則同樣會(huì )影響用戶(hù)的操作效率。所以要減少不必要的流程節點(diǎn)。最近在做設計時(shí),發(fā)現步驟表單最后一步是內容預覽。通過(guò)用戶(hù)調研發(fā)現,部分用戶(hù)會(huì )謹慎地預覽前面4步填寫(xiě)的內容。而另一部分用戶(hù)則認為,剛填寫(xiě)了內容不需要預覽,強制預覽的設計并不友好。該如何平衡設計呢?最終我們選擇了將預覽節點(diǎn)取消,將預覽功能調整到第4步,采用「預覽」按鈕的形式。既滿(mǎn)足了部分用戶(hù)預覽的需要,另一部分用戶(hù)也可以不做預覽,直接提交申請。所以步驟表單過(guò)程中的節點(diǎn)具有一定的強制性,需要謹慎對待,保證節點(diǎn)的合理有效。
  ▎03隱藏,讓表單更加靈活1、模塊隱藏表單實(shí)際上是任務(wù)信息的集合,為了具有更高的適配性,內容通常是多種場(chǎng)景的集合。而場(chǎng)景有高頻、低頻區分,對于高頻信息需要優(yōu)先展示,便于提高用戶(hù)的填寫(xiě)效率;對于低頻場(chǎng)景,可以隱藏弱化展示,從而降低整個(gè)表單的復雜度。例如我們常見(jiàn)的「高級配置」,通常在表單的底部默認收起展示。
  2、信息隱藏復雜表單中信息會(huì )出現多級信息共存的場(chǎng)景。這種場(chǎng)景下,復雜表單默認展示當前選項對應的子內容,隱藏其他選項的內容,從而提高信息的指向性。
  3、合理的組件形式比較典型的就是單選和下拉選擇器如何選擇。有人為了強調效率,一味地追求單選按鈕平鋪展示,認為單選更加直觀(guān),用戶(hù)不需要點(diǎn)擊下拉滾動(dòng)查看備選項。但是用戶(hù)同樣需要逐個(gè)瀏覽選擇,反而增加了整個(gè)頁(yè)面的信息量。所以單選框更多用在備選項較少的場(chǎng)景,如果備選項較多,建議優(yōu)先采用下拉選擇器,隱藏備選項。▎04轉移,擴展表單的異步空間1、信息轉移在表單設計時(shí),可以將部分二級信息轉移到彈窗、抽屜中,利用浮層空間拓展業(yè)務(wù)內容,根據用戶(hù)操作逐級加載出來(lái)。從而減少表單的信息量。例如下圖中,沒(méi)有將「所有配送區域及運費」直接展示出來(lái)供用戶(hù)選擇,而是放在了彈窗中,表單中只呈現最后的選擇結果。既簡(jiǎn)化了表單的內容,又讓選擇結果更加突出,方便用戶(hù)的查看和校驗。
  2、記憶轉移
  現在很多瀏覽器都增加了密碼存儲功能,減少用戶(hù)記憶成本。而在電商購物網(wǎng)站可以設定默認的收貨地址。系統自動(dòng)讀取調用,從而減少用戶(hù)的輸入操作。3、行為轉移現在越來(lái)越多的網(wǎng)站支持「手機短信驗證碼」免密注冊登錄方式,或者第三方登錄方式,或者手機端掃碼登錄。將原有的表單填寫(xiě)轉變?yōu)橄到y行為,從而降低用戶(hù)的行為成本。

【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2022-07-21 14:42 ? 來(lái)自相關(guān)話(huà)題

  【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐
  前言
  本文來(lái)自。今日前端早讀課文章由哈啰出行@杜詩(shī)晨分享,公號:哈啰技術(shù)授權分享。
  @杜詩(shī)晨(vx: emododo),先后就職北京新浪,36氪,百度,有接近十年的前端開(kāi)發(fā)經(jīng)驗,現在是哈啰出行業(yè)財&清結算的前端負責人,也是杭州哈啰第一個(gè)入職的前端。
  正文從這開(kāi)始~~
  什么是低代碼搭建
  通過(guò)提供一種可視化的應用開(kāi)發(fā)環(huán)境,降低或去除對原生代碼編寫(xiě)的需求量快速構建應用程序。
  傳統開(kāi)發(fā)交付一個(gè)產(chǎn)品的流程,首先產(chǎn)品輸出 prd,然后設計 ui 設計進(jìn)行設計,設計完成給到前端,前端再去開(kāi)發(fā)。如果是個(gè)新項目可能還要這種配置各種復雜環(huán)境。同時(shí)后端也在開(kāi)發(fā),然后聯(lián)調、測試。其實(shí)現在大部分的公司都是這種開(kāi)發(fā)流程。那這種缺點(diǎn)就很明顯,涉及到的人非常多,開(kāi)發(fā)周期也變得非常長(cháng)。
  低代碼搭建是一個(gè)什么樣的流程?如果是一個(gè)成熟的配置搭建平臺,只需要提供一個(gè)配置平臺,開(kāi)發(fā)人員不論是剛畢業(yè)的大學(xué)生或者是前端小白,甚至可能是一個(gè)后端開(kāi)發(fā),都可以通過(guò)這個(gè)配置平臺搭建,快速生成網(wǎng)頁(yè)。
  關(guān)于低代碼的市場(chǎng)規模和衍生的歷史大家可以從下圖中了解一下,這里提供兩份報告作為延伸學(xué)習:海比研究報告 | 艾瑞咨詢(xún)
  概念衍生歷史
  低代碼這個(gè)概念其實(shí)很早就有了,80年代的時(shí)候提出了第四代編程語(yǔ)言,這個(gè)第四代是什么意思呢,第一代是機器語(yǔ)言,第二代匯編語(yǔ)言,第三代高級語(yǔ)言。前三代都是操作語(yǔ)言,需要編程指出怎么做,一步一步的寫(xiě)運行步驟,這樣是有學(xué)習成本的,并且項目開(kāi)發(fā)周期長(cháng),出于商業(yè)需要第四代語(yǔ)言被軟件廠(chǎng)商提出,在一定程度上只需要說(shuō)明做什么,有什么目的,不需要寫(xiě)出怎么做的過(guò)程。
  2000 年 vpl 被提出,可視化編程語(yǔ)言,意思就是用戶(hù)用過(guò)圖形化操作程序元素而不是通過(guò)文本制定來(lái)創(chuàng )建程序,基于流的概念比如虛幻引擎,還有一些運用在3D編程,音樂(lè )合成,信號處理,物聯(lián)網(wǎng)嵌入式等等領(lǐng)域。
  2014年知名咨詢(xún)公司提出了低代碼/零代碼的概念,在這之前國外有很多低代碼產(chǎn)品出現并且商業(yè)化
  2016年,國內相繼發(fā)布這些低代碼的平臺。國內知名的像阿里百度騰訊,他們都有這種搭建平臺。
  在今年(2021),整個(gè)中國市場(chǎng)已經(jīng)形成了完整的低代碼無(wú)代碼的生態(tài)體系。就比如說(shuō)像現在這種 aPass 平臺或者是 Sass 平臺之類(lèi)的,平臺會(huì )包含的低代碼去快速搭建這種應用。
  市場(chǎng)規模
  投資界似乎也發(fā)現了這種趨勢,全球規模在去年的時(shí)候已經(jīng)達到了八十四億美元。預計今年超過(guò)百億。23年超過(guò)200億。
  比如說(shuō)二月份的時(shí)候,就有一家創(chuàng )業(yè)公司,他們融了大概上億美元,估值也有幾十億。所以說(shuō)這一塊從全球的低代碼的市場(chǎng)規模來(lái)說(shuō),低代碼還是非常有潛力的。
  搭建分類(lèi)
  現在市場(chǎng)上基本上分為兩類(lèi)搭建類(lèi)型,一類(lèi)是營(yíng)銷(xiāo)類(lèi)搭建 no code,一類(lèi)是通用類(lèi)搭建,就是我們所說(shuō)的 low code 和 pro code。營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建。
  面向人群
  那么這么分類(lèi)我認為是面向的人群不同,一個(gè)特別通用的搭建平臺,可能復雜度就上升了很高,所以說(shuō)我們要做這個(gè)低代碼搭建平臺的時(shí)候,一定要想好我們面向的人群是什么?
  營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建
  中后臺領(lǐng)域痛點(diǎn)
  首先交互不統一,比如說(shuō)有一些很相似的頁(yè)面,但是由不同的產(chǎn)品或者設計師出的圖。
  那實(shí)際上他們想要達到的效果是很相似的。但是交互不同,不同的前端開(kāi)發(fā)出來(lái)的效果也不一樣。不同職級的開(kāi)發(fā)可維護性就會(huì )差一點(diǎn),代碼可能會(huì )復雜一些,會(huì )出現不同的編碼風(fēng)格。中臺還有一個(gè)痛點(diǎn)的就是中臺的系統非常多,業(yè)務(wù)重,人員有缺口。我之前負責的那個(gè)域,前后端比例當時(shí)是有 1:7 的樣子,借人也好,招人也好,都是很難去補上這個(gè)缺口。
  
  設定目標
  所以我們設定了三個(gè)目標,一個(gè)是提效降本。我們怎么樣去把這一塊的研發(fā)效能提上來(lái)。
  第二個(gè)目標是部分生產(chǎn)力可轉移后端,讓后端也有能力輸出前端頁(yè)面
  第三點(diǎn)就是抽象中后臺的系統基礎組件。前端在組件化的過(guò)程中逐漸沉淀,復用這些能力,賦能到搭建平臺中。
  如何做?波塞冬建站平臺
  有了這些目標,促使我們做了波塞冬建站平臺,通過(guò)可視化操作 + 部分編碼(或者不編碼)生成中后臺系統。讓前端業(yè)務(wù)開(kāi)發(fā)變成組件開(kāi)發(fā),逐漸沉淀可復用組件,讓簡(jiǎn)單業(yè)務(wù)少編碼甚至不編碼。為前端增效,為后端賦能。
  使用數據
  這個(gè)平臺上線(xiàn)之后,線(xiàn)上的有117個(gè)頁(yè)面在運行,共發(fā)布了870次,其中已經(jīng)設計了6個(gè)團隊,提升的人效也很顯著(zhù),假設我們平均開(kāi)發(fā)一個(gè)增量頁(yè)面需要3人日,用波塞冬只需要一人日,老頁(yè)面迭代修改配置也只需要0.5d
  平臺流程
  給大家講解下平臺原理,比如說(shuō)一個(gè)創(chuàng )建者,他首先要去波塞冬平臺創(chuàng )建頁(yè)面,生成一份 schema ,這份 schema 被波塞冬后端保存在SQL中,我們的用戶(hù),也就是頁(yè)面訪(fǎng)問(wèn)者,通過(guò)業(yè)務(wù)平臺網(wǎng)站獲取頁(yè)面,這里邊相當于業(yè)務(wù)平臺網(wǎng)站有個(gè)sdk,他直接取拉波塞冬保存的schema,sdk通過(guò) schema 渲染組件 和 業(yè)務(wù)數據的接口,這樣一個(gè)頁(yè)面就展示出來(lái)了
  那我們這邊也有很多組件貢獻者,如果創(chuàng )建者不滿(mǎn)足需求的,貢獻者這邊去維護組件這樣就能貢獻生態(tài)
  平臺架構
  整個(gè)平臺的架構是這樣的:
  底層我們是拿vue搭建,不過(guò)這塊技術(shù)選型哪個(gè)框架都可以,只要定義好 schema,react + antd 也能搞
  組件這一塊就是根據固定的 schema 進(jìn)行封裝,未來(lái)可能還有一些業(yè)務(wù)組件接入
  渲染這一層主要是提供給開(kāi)發(fā)者用來(lái)豐富組件庫或一些其他業(yè)務(wù)場(chǎng)景
  平臺能力也就是我們要提供的這個(gè)界面,主要是一些用戶(hù)可以操作的功能,這些功能想一下入手還有一點(diǎn)小成本,我們提供了文檔,視頻等,可以做到邊接入邊開(kāi)發(fā),還提供了一些實(shí)例供配置方借鑒
  接入方式
  我們的解析方式有三種,一種是 sdk直接引入,這樣方便升級,也方便二次開(kāi)發(fā),sdk的引入方式非常靈活。
  還有一種是 ifame 引入,這樣只需引入一個(gè)標簽即可,剩下的都在波塞冬里配置。
  一鍵建站的方式,相當于站點(diǎn)維度,沒(méi)有項目的概念,域名菜單權限頁(yè)面,都是在波塞冬里完成的,不需要本地環(huán)境,這種比較適合后端開(kāi)發(fā)人員
  渲染引擎
  展示一下 sdk 的引用,我們可能會(huì )在不同開(kāi)發(fā)環(huán)境中引入,這里提供環(huán)境變量的配置
  一鍵建站
  剛才有介紹我們有三種引入方式,給大家看下第三種一鍵建站是怎么做的,我們加強了應用管理,一個(gè)應用就是一個(gè)站點(diǎn),菜單,域名都是在平臺里申請,這樣用戶(hù)通過(guò)頁(yè)面訪(fǎng)問(wèn)就是配置的界面,完全不需要再去申請工程,這里我們用了代理的方式進(jìn)行一個(gè)轉發(fā),轉發(fā)的目標是一個(gè)基座,類(lèi)似微前端的那個(gè)基座,只不過(guò)這個(gè)基座我們通過(guò)當前域名拉取配置,最終提供給用戶(hù)。
  
  頁(yè)面布局
  帶大家看一下創(chuàng )建頁(yè)面的布局,最左側是組件區,目前是基礎組件,這里未來(lái)可能會(huì )做組件分類(lèi),把業(yè)務(wù)組件和自定義組件也接進(jìn)來(lái),中間是布局設計區,比如說(shuō)列表頁(yè)有固定三個(gè)區域,篩選項,中部功能區,列表,表單頁(yè)不做限制,右側為配置區,可以配置綁定字段和文案還有一些額外屬性,組件的交互,像select這種option是接口調用的數據,還可以配置遠程接口
  模型設計(JSON SCHEMA)
  我們創(chuàng )建頁(yè)面后,會(huì )生成一份 schema ,什么是 json schema ,簡(jiǎn)單介紹一下,json shema 是 json 的一種約束,用來(lái)定義json的數據結構和驗證格式,我們在這里用來(lái)保證數據的一致性
  每個(gè)頁(yè)面有一個(gè)主體,用來(lái)描述版本和一些原信息,body就是他的內容
  JSON SCHEMA
  我們目前頁(yè)面分為兩種,一種就是列表頁(yè)面,一種是 form 頁(yè),但是他們的描述協(xié)議都是一樣的,那基本的組件描述我們定義好了,這樣其實(shí)簡(jiǎn)單的需求就能實(shí)現了,但是前端避免不了交互這一層,比如說(shuō)一個(gè)選擇框,當我選擇了 A,B會(huì )觸發(fā)一個(gè)事件,并且B還要拿到A所攜帶的入參信息
  操作事件
  我們這邊做了一個(gè)操作事件功能,我們只需要把組件的 ref 設置好,操作事件這一塊就可以定義他的出參入參,方便交互
  數據中心
  接口配置這里,比如說(shuō)一個(gè) select 從遠程接口獲取到一個(gè)枚舉,就可以存下來(lái),給其他組件消費
  自定義插槽
  比如說(shuō)平臺目前有不支持的組件或交互,還沒(méi)有維護在平臺里的,這里可以利用 vue 的 slot 進(jìn)行二次開(kāi)發(fā),只需要拖入一個(gè) slot
  自定義插槽-編碼
  slot 里的組件可以獲取到配置里的 ref 和想要拿到的 scope,做任何你想做的事兒
  穩定性
  我們做低代碼平臺,歸根到底是一個(gè)渲染引擎渲染一組 schema ,那么穩定性也得考慮,我們每次修改線(xiàn)上配置,可能心情如圖,那我發(fā)布時(shí)怎么保證準確性,傳統開(kāi)發(fā)我們會(huì )有一個(gè)review 的過(guò)程,我們就把這個(gè)過(guò)程也搬上來(lái)了
  SCHEMA DIFF & 版本對比
  schema diff 每次發(fā)布時(shí),需要選擇版本來(lái)確認我改了什么,大大降低了風(fēng)險。
  發(fā)布時(shí)也要進(jìn)行二次確認
  未來(lái)規劃
  AUTO-CODE
  我們目前的能力,在版本對比這一塊希望能做到 merge,并且提供可視化,也就是說(shuō)你不一定非要看 schema 這種東西,組件這里繼續豐富,能承載更多的需求,low-code 目標就做到 no-code 讓非開(kāi)發(fā)人員直接生成頁(yè)面,不需要寫(xiě)一點(diǎn)代碼,最終這個(gè)生產(chǎn)力就可以轉移,終極目標就是做成 auto-code ,利用機器學(xué)習識別設計圖,直接生成網(wǎng)站,抹去大部分配置,auto-code 目前業(yè)界有很多公司已經(jīng)實(shí)現,我們也在慢慢摸索。
  關(guān)于本文 查看全部

  【第2316期】中后臺領(lǐng)域低代碼搭建設計與實(shí)踐
  前言
  本文來(lái)自。今日前端早讀課文章由哈啰出行@杜詩(shī)晨分享,公號:哈啰技術(shù)授權分享。
  @杜詩(shī)晨(vx: emododo),先后就職北京新浪,36氪,百度,有接近十年的前端開(kāi)發(fā)經(jīng)驗,現在是哈啰出行業(yè)財&清結算的前端負責人,也是杭州哈啰第一個(gè)入職的前端。
  正文從這開(kāi)始~~
  什么是低代碼搭建
  通過(guò)提供一種可視化的應用開(kāi)發(fā)環(huán)境,降低或去除對原生代碼編寫(xiě)的需求量快速構建應用程序。
  傳統開(kāi)發(fā)交付一個(gè)產(chǎn)品的流程,首先產(chǎn)品輸出 prd,然后設計 ui 設計進(jìn)行設計,設計完成給到前端,前端再去開(kāi)發(fā)。如果是個(gè)新項目可能還要這種配置各種復雜環(huán)境。同時(shí)后端也在開(kāi)發(fā),然后聯(lián)調、測試。其實(shí)現在大部分的公司都是這種開(kāi)發(fā)流程。那這種缺點(diǎn)就很明顯,涉及到的人非常多,開(kāi)發(fā)周期也變得非常長(cháng)。
  低代碼搭建是一個(gè)什么樣的流程?如果是一個(gè)成熟的配置搭建平臺,只需要提供一個(gè)配置平臺,開(kāi)發(fā)人員不論是剛畢業(yè)的大學(xué)生或者是前端小白,甚至可能是一個(gè)后端開(kāi)發(fā),都可以通過(guò)這個(gè)配置平臺搭建,快速生成網(wǎng)頁(yè)。
  關(guān)于低代碼的市場(chǎng)規模和衍生的歷史大家可以從下圖中了解一下,這里提供兩份報告作為延伸學(xué)習:海比研究報告 | 艾瑞咨詢(xún)
  概念衍生歷史
  低代碼這個(gè)概念其實(shí)很早就有了,80年代的時(shí)候提出了第四代編程語(yǔ)言,這個(gè)第四代是什么意思呢,第一代是機器語(yǔ)言,第二代匯編語(yǔ)言,第三代高級語(yǔ)言。前三代都是操作語(yǔ)言,需要編程指出怎么做,一步一步的寫(xiě)運行步驟,這樣是有學(xué)習成本的,并且項目開(kāi)發(fā)周期長(cháng),出于商業(yè)需要第四代語(yǔ)言被軟件廠(chǎng)商提出,在一定程度上只需要說(shuō)明做什么,有什么目的,不需要寫(xiě)出怎么做的過(guò)程。
  2000 年 vpl 被提出,可視化編程語(yǔ)言,意思就是用戶(hù)用過(guò)圖形化操作程序元素而不是通過(guò)文本制定來(lái)創(chuàng )建程序,基于流的概念比如虛幻引擎,還有一些運用在3D編程,音樂(lè )合成,信號處理,物聯(lián)網(wǎng)嵌入式等等領(lǐng)域。
  2014年知名咨詢(xún)公司提出了低代碼/零代碼的概念,在這之前國外有很多低代碼產(chǎn)品出現并且商業(yè)化
  2016年,國內相繼發(fā)布這些低代碼的平臺。國內知名的像阿里百度騰訊,他們都有這種搭建平臺。
  在今年(2021),整個(gè)中國市場(chǎng)已經(jīng)形成了完整的低代碼無(wú)代碼的生態(tài)體系。就比如說(shuō)像現在這種 aPass 平臺或者是 Sass 平臺之類(lèi)的,平臺會(huì )包含的低代碼去快速搭建這種應用。
  市場(chǎng)規模
  投資界似乎也發(fā)現了這種趨勢,全球規模在去年的時(shí)候已經(jīng)達到了八十四億美元。預計今年超過(guò)百億。23年超過(guò)200億。
  比如說(shuō)二月份的時(shí)候,就有一家創(chuàng )業(yè)公司,他們融了大概上億美元,估值也有幾十億。所以說(shuō)這一塊從全球的低代碼的市場(chǎng)規模來(lái)說(shuō),低代碼還是非常有潛力的。
  搭建分類(lèi)
  現在市場(chǎng)上基本上分為兩類(lèi)搭建類(lèi)型,一類(lèi)是營(yíng)銷(xiāo)類(lèi)搭建 no code,一類(lèi)是通用類(lèi)搭建,就是我們所說(shuō)的 low code 和 pro code。營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建。
  面向人群
  那么這么分類(lèi)我認為是面向的人群不同,一個(gè)特別通用的搭建平臺,可能復雜度就上升了很高,所以說(shuō)我們要做這個(gè)低代碼搭建平臺的時(shí)候,一定要想好我們面向的人群是什么?
  營(yíng)銷(xiāo)類(lèi) no node 無(wú)需編碼,直接生成營(yíng)銷(xiāo)活動(dòng),前端資源緊缺的時(shí)候,后端開(kāi)發(fā)人員也可通過(guò) low code 可搭建中臺領(lǐng)域的頁(yè)面,前端這邊為了避免各種工程環(huán)境,減低門(mén)檻也可通過(guò) pro code 的形式來(lái)去搭建
  中后臺領(lǐng)域痛點(diǎn)
  首先交互不統一,比如說(shuō)有一些很相似的頁(yè)面,但是由不同的產(chǎn)品或者設計師出的圖。
  那實(shí)際上他們想要達到的效果是很相似的。但是交互不同,不同的前端開(kāi)發(fā)出來(lái)的效果也不一樣。不同職級的開(kāi)發(fā)可維護性就會(huì )差一點(diǎn),代碼可能會(huì )復雜一些,會(huì )出現不同的編碼風(fēng)格。中臺還有一個(gè)痛點(diǎn)的就是中臺的系統非常多,業(yè)務(wù)重,人員有缺口。我之前負責的那個(gè)域,前后端比例當時(shí)是有 1:7 的樣子,借人也好,招人也好,都是很難去補上這個(gè)缺口。
  
  設定目標
  所以我們設定了三個(gè)目標,一個(gè)是提效降本。我們怎么樣去把這一塊的研發(fā)效能提上來(lái)。
  第二個(gè)目標是部分生產(chǎn)力可轉移后端,讓后端也有能力輸出前端頁(yè)面
  第三點(diǎn)就是抽象中后臺的系統基礎組件。前端在組件化的過(guò)程中逐漸沉淀,復用這些能力,賦能到搭建平臺中。
  如何做?波塞冬建站平臺
  有了這些目標,促使我們做了波塞冬建站平臺,通過(guò)可視化操作 + 部分編碼(或者不編碼)生成中后臺系統。讓前端業(yè)務(wù)開(kāi)發(fā)變成組件開(kāi)發(fā),逐漸沉淀可復用組件,讓簡(jiǎn)單業(yè)務(wù)少編碼甚至不編碼。為前端增效,為后端賦能。
  使用數據
  這個(gè)平臺上線(xiàn)之后,線(xiàn)上的有117個(gè)頁(yè)面在運行,共發(fā)布了870次,其中已經(jīng)設計了6個(gè)團隊,提升的人效也很顯著(zhù),假設我們平均開(kāi)發(fā)一個(gè)增量頁(yè)面需要3人日,用波塞冬只需要一人日,老頁(yè)面迭代修改配置也只需要0.5d
  平臺流程
  給大家講解下平臺原理,比如說(shuō)一個(gè)創(chuàng )建者,他首先要去波塞冬平臺創(chuàng )建頁(yè)面,生成一份 schema ,這份 schema 被波塞冬后端保存在SQL中,我們的用戶(hù),也就是頁(yè)面訪(fǎng)問(wèn)者,通過(guò)業(yè)務(wù)平臺網(wǎng)站獲取頁(yè)面,這里邊相當于業(yè)務(wù)平臺網(wǎng)站有個(gè)sdk,他直接取拉波塞冬保存的schema,sdk通過(guò) schema 渲染組件 和 業(yè)務(wù)數據的接口,這樣一個(gè)頁(yè)面就展示出來(lái)了
  那我們這邊也有很多組件貢獻者,如果創(chuàng )建者不滿(mǎn)足需求的,貢獻者這邊去維護組件這樣就能貢獻生態(tài)
  平臺架構
  整個(gè)平臺的架構是這樣的:
  底層我們是拿vue搭建,不過(guò)這塊技術(shù)選型哪個(gè)框架都可以,只要定義好 schema,react + antd 也能搞
  組件這一塊就是根據固定的 schema 進(jìn)行封裝,未來(lái)可能還有一些業(yè)務(wù)組件接入
  渲染這一層主要是提供給開(kāi)發(fā)者用來(lái)豐富組件庫或一些其他業(yè)務(wù)場(chǎng)景
  平臺能力也就是我們要提供的這個(gè)界面,主要是一些用戶(hù)可以操作的功能,這些功能想一下入手還有一點(diǎn)小成本,我們提供了文檔,視頻等,可以做到邊接入邊開(kāi)發(fā),還提供了一些實(shí)例供配置方借鑒
  接入方式
  我們的解析方式有三種,一種是 sdk直接引入,這樣方便升級,也方便二次開(kāi)發(fā),sdk的引入方式非常靈活。
  還有一種是 ifame 引入,這樣只需引入一個(gè)標簽即可,剩下的都在波塞冬里配置。
  一鍵建站的方式,相當于站點(diǎn)維度,沒(méi)有項目的概念,域名菜單權限頁(yè)面,都是在波塞冬里完成的,不需要本地環(huán)境,這種比較適合后端開(kāi)發(fā)人員
  渲染引擎
  展示一下 sdk 的引用,我們可能會(huì )在不同開(kāi)發(fā)環(huán)境中引入,這里提供環(huán)境變量的配置
  一鍵建站
  剛才有介紹我們有三種引入方式,給大家看下第三種一鍵建站是怎么做的,我們加強了應用管理,一個(gè)應用就是一個(gè)站點(diǎn),菜單,域名都是在平臺里申請,這樣用戶(hù)通過(guò)頁(yè)面訪(fǎng)問(wèn)就是配置的界面,完全不需要再去申請工程,這里我們用了代理的方式進(jìn)行一個(gè)轉發(fā),轉發(fā)的目標是一個(gè)基座,類(lèi)似微前端的那個(gè)基座,只不過(guò)這個(gè)基座我們通過(guò)當前域名拉取配置,最終提供給用戶(hù)。
  
  頁(yè)面布局
  帶大家看一下創(chuàng )建頁(yè)面的布局,最左側是組件區,目前是基礎組件,這里未來(lái)可能會(huì )做組件分類(lèi),把業(yè)務(wù)組件和自定義組件也接進(jìn)來(lái),中間是布局設計區,比如說(shuō)列表頁(yè)有固定三個(gè)區域,篩選項,中部功能區,列表,表單頁(yè)不做限制,右側為配置區,可以配置綁定字段和文案還有一些額外屬性,組件的交互,像select這種option是接口調用的數據,還可以配置遠程接口
  模型設計(JSON SCHEMA)
  我們創(chuàng )建頁(yè)面后,會(huì )生成一份 schema ,什么是 json schema ,簡(jiǎn)單介紹一下,json shema 是 json 的一種約束,用來(lái)定義json的數據結構和驗證格式,我們在這里用來(lái)保證數據的一致性
  每個(gè)頁(yè)面有一個(gè)主體,用來(lái)描述版本和一些原信息,body就是他的內容
  JSON SCHEMA
  我們目前頁(yè)面分為兩種,一種就是列表頁(yè)面,一種是 form 頁(yè),但是他們的描述協(xié)議都是一樣的,那基本的組件描述我們定義好了,這樣其實(shí)簡(jiǎn)單的需求就能實(shí)現了,但是前端避免不了交互這一層,比如說(shuō)一個(gè)選擇框,當我選擇了 A,B會(huì )觸發(fā)一個(gè)事件,并且B還要拿到A所攜帶的入參信息
  操作事件
  我們這邊做了一個(gè)操作事件功能,我們只需要把組件的 ref 設置好,操作事件這一塊就可以定義他的出參入參,方便交互
  數據中心
  接口配置這里,比如說(shuō)一個(gè) select 從遠程接口獲取到一個(gè)枚舉,就可以存下來(lái),給其他組件消費
  自定義插槽
  比如說(shuō)平臺目前有不支持的組件或交互,還沒(méi)有維護在平臺里的,這里可以利用 vue 的 slot 進(jìn)行二次開(kāi)發(fā),只需要拖入一個(gè) slot
  自定義插槽-編碼
  slot 里的組件可以獲取到配置里的 ref 和想要拿到的 scope,做任何你想做的事兒
  穩定性
  我們做低代碼平臺,歸根到底是一個(gè)渲染引擎渲染一組 schema ,那么穩定性也得考慮,我們每次修改線(xiàn)上配置,可能心情如圖,那我發(fā)布時(shí)怎么保證準確性,傳統開(kāi)發(fā)我們會(huì )有一個(gè)review 的過(guò)程,我們就把這個(gè)過(guò)程也搬上來(lái)了
  SCHEMA DIFF & 版本對比
  schema diff 每次發(fā)布時(shí),需要選擇版本來(lái)確認我改了什么,大大降低了風(fēng)險。
  發(fā)布時(shí)也要進(jìn)行二次確認
  未來(lái)規劃
  AUTO-CODE
  我們目前的能力,在版本對比這一塊希望能做到 merge,并且提供可視化,也就是說(shuō)你不一定非要看 schema 這種東西,組件這里繼續豐富,能承載更多的需求,low-code 目標就做到 no-code 讓非開(kāi)發(fā)人員直接生成頁(yè)面,不需要寫(xiě)一點(diǎn)代碼,最終這個(gè)生產(chǎn)力就可以轉移,終極目標就是做成 auto-code ,利用機器學(xué)習識別設計圖,直接生成網(wǎng)站,抹去大部分配置,auto-code 目前業(yè)界有很多公司已經(jīng)實(shí)現,我們也在慢慢摸索。
  關(guān)于本文

網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-07-11 17:08 ? 來(lái)自相關(guān)話(huà)題

  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用
  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站作為在線(xiàn)網(wǎng)絡(luò )的應用平臺,是現代企業(yè)銷(xiāo)售、宣傳、教育、技術(shù)服務(wù)等一系列的基礎的應用工具,起到了一個(gè)“龍頭”的作用。
  1、單文件策略:每個(gè)訪(fǎng)問(wèn)者都有獨立的賬號和權限,結合內部獨立主頁(yè)可有效識別并控制訪(fǎng)問(wèn)者
  2、統一管理內容:外部導航、內部導航、內容聚合、轉盤(pán)隨時(shí)更改顯示結果
  3、開(kāi)放共享系統:可基于互聯(lián)網(wǎng)給第三方開(kāi)發(fā)者提供的api接口進(jìn)行開(kāi)發(fā),發(fā)布第三方代碼,允許第三方建立網(wǎng)站,
  
  4、防止惡意頁(yè)面爬蟲(chóng):為了防止惡意頁(yè)面爬蟲(chóng),需要網(wǎng)站內容管理系統擁有ssl證書(shū),且需要標注access_token。
  5、后臺基本設置:菜單、控制區域、安全控制區域、開(kāi)放度
  6、后臺存儲數據:數據文件、記錄表格、圖片和json等
  7、后臺賬號的管理:需要加入的賬號、已有賬號、通用賬號、雙子賬號等
  
  8、后臺注冊、密碼重置:登錄賬號、密碼、日志權限安全問(wèn)題:
  1、服務(wù)器安全控制策略要記錄登錄用戶(hù)的操作,
  2、安全評估的管理要記錄每個(gè)用戶(hù)的操作行為,保證后臺操作沒(méi)有被他人訪(fǎng)問(wèn)過(guò),哪怕是按指紋,攝像頭權限,
  3、安全控制內容:a)有價(jià)值數據的備份管理b)登錄后臺賬號的清單管理c)公共數據記錄的記錄管理d)清晰的數據內容請求級別管理和定位
  4、服務(wù)器安全控制:最好通過(guò)模擬登錄的方式將后臺管理數據發(fā)送給托管平臺管理平臺模擬登錄 查看全部

  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站安全評估的作用
  網(wǎng)站內容管理系統后臺設計思路:網(wǎng)站作為在線(xiàn)網(wǎng)絡(luò )的應用平臺,是現代企業(yè)銷(xiāo)售、宣傳、教育、技術(shù)服務(wù)等一系列的基礎的應用工具,起到了一個(gè)“龍頭”的作用。
  1、單文件策略:每個(gè)訪(fǎng)問(wèn)者都有獨立的賬號和權限,結合內部獨立主頁(yè)可有效識別并控制訪(fǎng)問(wèn)者
  2、統一管理內容:外部導航、內部導航、內容聚合、轉盤(pán)隨時(shí)更改顯示結果
  3、開(kāi)放共享系統:可基于互聯(lián)網(wǎng)給第三方開(kāi)發(fā)者提供的api接口進(jìn)行開(kāi)發(fā),發(fā)布第三方代碼,允許第三方建立網(wǎng)站,
  
  4、防止惡意頁(yè)面爬蟲(chóng):為了防止惡意頁(yè)面爬蟲(chóng),需要網(wǎng)站內容管理系統擁有ssl證書(shū),且需要標注access_token。
  5、后臺基本設置:菜單、控制區域、安全控制區域、開(kāi)放度
  6、后臺存儲數據:數據文件、記錄表格、圖片和json等
  7、后臺賬號的管理:需要加入的賬號、已有賬號、通用賬號、雙子賬號等
  
  8、后臺注冊、密碼重置:登錄賬號、密碼、日志權限安全問(wèn)題:
  1、服務(wù)器安全控制策略要記錄登錄用戶(hù)的操作,
  2、安全評估的管理要記錄每個(gè)用戶(hù)的操作行為,保證后臺操作沒(méi)有被他人訪(fǎng)問(wèn)過(guò),哪怕是按指紋,攝像頭權限,
  3、安全控制內容:a)有價(jià)值數據的備份管理b)登錄后臺賬號的清單管理c)公共數據記錄的記錄管理d)清晰的數據內容請求級別管理和定位
  4、服務(wù)器安全控制:最好通過(guò)模擬登錄的方式將后臺管理數據發(fā)送給托管平臺管理平臺模擬登錄

SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 104 次瀏覽 ? 2022-07-10 16:03 ? 來(lái)自相關(guān)話(huà)題

  SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?
  CSDN官方推薦10W+JAVA技術(shù)人文章發(fā)布打卡社區
  項目名稱(chēng)
  SSM框架扶貧管理系統的設計與實(shí)現
  效果視頻
  SSM框架扶貧管理系統的設計與實(shí)現
  系統說(shuō)明
  扶貧管理系統平臺,他的業(yè)務(wù)流程如下:顧客通過(guò)網(wǎng)址瀏覽商品,挑選喜歡的商品登陸賬號將其收藏并加入購物車(chē),在購物車(chē)界面提交訂單,選擇支付方式,支付成功后生成訂單,之后再我的主頁(yè)里查看訂單信息,后臺管理員接收到訂單后實(shí)時(shí)查看到訂單信息,并可以進(jìn)行發(fā)貨處理和解決售后問(wèn)題,我們是直接接入到賣(mài)家的商品庫存,他們種植的農作物會(huì )同步到我們的庫存,管理員可以直接進(jìn)行發(fā)貨。按照結業(yè)設計基本功能和產(chǎn)品要求,本次設計的主要任務(wù)是設計扶貧管理系統的方案,實(shí)現扶貧管理系統的編程,主要應用于農村地區貧苦地區種植的農產(chǎn)品的售賣(mài)。其主要功能包括以下幾個(gè)功能:
  如圖3.1所示,以下是系統的總體功能結構圖,扶貧管理系統主要分為前臺和后臺兩個(gè)方向,前臺是用戶(hù)主要使用的地方功能主要分為:首頁(yè)、商品分類(lèi)、新聞咨詢(xún)、關(guān)于我們、購物車(chē)、個(gè)人資料、訂單管理、售后管理、留言管理等功能,主要是方便前臺用戶(hù)能夠方便地購買(mǎi)扶貧商品并查看相關(guān)的扶貧新聞以及系統介紹。后臺是管理員管理系統的地方功能主要分為:系統管理、會(huì )員管理、資訊管理、商品管理、訂單管理、留言管理以及統計管理等功能,主要是方便管理員對系統內容進(jìn)行管理并保證系統的正常業(yè)務(wù)流轉。
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。? 查看全部

  SSM框架扶貧管理系統的設計與實(shí)現+論文第六稿+中期自檢表+文獻綜述+安裝視頻+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?
  CSDN官方推薦10W+JAVA技術(shù)人文章發(fā)布打卡社區
  項目名稱(chēng)
  SSM框架扶貧管理系統的設計與實(shí)現
  效果視頻
  SSM框架扶貧管理系統的設計與實(shí)現
  系統說(shuō)明
  扶貧管理系統平臺,他的業(yè)務(wù)流程如下:顧客通過(guò)網(wǎng)址瀏覽商品,挑選喜歡的商品登陸賬號將其收藏并加入購物車(chē),在購物車(chē)界面提交訂單,選擇支付方式,支付成功后生成訂單,之后再我的主頁(yè)里查看訂單信息,后臺管理員接收到訂單后實(shí)時(shí)查看到訂單信息,并可以進(jìn)行發(fā)貨處理和解決售后問(wèn)題,我們是直接接入到賣(mài)家的商品庫存,他們種植的農作物會(huì )同步到我們的庫存,管理員可以直接進(jìn)行發(fā)貨。按照結業(yè)設計基本功能和產(chǎn)品要求,本次設計的主要任務(wù)是設計扶貧管理系統的方案,實(shí)現扶貧管理系統的編程,主要應用于農村地區貧苦地區種植的農產(chǎn)品的售賣(mài)。其主要功能包括以下幾個(gè)功能:
  如圖3.1所示,以下是系統的總體功能結構圖,扶貧管理系統主要分為前臺和后臺兩個(gè)方向,前臺是用戶(hù)主要使用的地方功能主要分為:首頁(yè)、商品分類(lèi)、新聞咨詢(xún)、關(guān)于我們、購物車(chē)、個(gè)人資料、訂單管理、售后管理、留言管理等功能,主要是方便前臺用戶(hù)能夠方便地購買(mǎi)扶貧商品并查看相關(guān)的扶貧新聞以及系統介紹。后臺是管理員管理系統的地方功能主要分為:系統管理、會(huì )員管理、資訊管理、商品管理、訂單管理、留言管理以及統計管理等功能,主要是方便管理員對系統內容進(jìn)行管理并保證系統的正常業(yè)務(wù)流轉。
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。?

SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-07-06 11:00 ? 來(lái)自相關(guān)話(huà)題

  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?項目名稱(chēng)
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  視頻效果
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  系統說(shuō)明
  該系統主要由前臺和后臺兩部分組成,后臺是由系統管理員進(jìn)行管理,主要工作是系統維護,管理員主要實(shí)現了統計分析、留言管理、系統管理、會(huì )員管理、資訊管理、類(lèi)別管理、商品管理、庫存管理、訂單管理、售后管理等功能模塊;前臺是用戶(hù)使用,主要功能包括注冊登錄、首頁(yè)、商品分類(lèi)、新聞資訊、關(guān)于我們、購物車(chē)、個(gè)人信息、訂單管理、留言板、售后管理等。
  編輯
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。? 查看全部

  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼+論文第六稿+外文翻譯+ppt+中期檢查表+
  活動(dòng)地址:畢業(yè)季·進(jìn)擊的技術(shù)er
  博主介紹:?在職Java研發(fā)工程師、專(zhuān)注于程序設計、源碼分享、技術(shù)交流、專(zhuān)注于Java技術(shù)領(lǐng)域和畢業(yè)設計?項目名稱(chēng)
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  視頻效果
  SSM框架特產(chǎn)銷(xiāo)售網(wǎng)站設計與開(kāi)發(fā)源碼
  系統說(shuō)明
  該系統主要由前臺和后臺兩部分組成,后臺是由系統管理員進(jìn)行管理,主要工作是系統維護,管理員主要實(shí)現了統計分析、留言管理、系統管理、會(huì )員管理、資訊管理、類(lèi)別管理、商品管理、庫存管理、訂單管理、售后管理等功能模塊;前臺是用戶(hù)使用,主要功能包括注冊登錄、首頁(yè)、商品分類(lèi)、新聞資訊、關(guān)于我們、購物車(chē)、個(gè)人信息、訂單管理、留言板、售后管理等。
  編輯
  環(huán)境需要
  1.運行環(huán)境:最好是java jdk 1.8,我們在這個(gè)平臺上運行的。其他版本理論上也可以。
  2.IDE環(huán)境:IDEA,Eclipse,Myeclipse都可以。推薦IDEA;
  3.tomcat環(huán)境:Tomcat 7.x,8.x,9.x版本均可
  4.硬件環(huán)境:windows 7/8/10 1G內存以上;或者 Mac OS;
  5.數據庫:MySql 5.7版本;
  6.是否Maven項目:否;
  技術(shù)棧
  1. 后端:Spring+SpringMVC+Mybatis
  2. 前端:JSP+CSS+JavaScript+jQuery
  使用說(shuō)明
  
  1. 使用Navicat或者其它工具,在mysql中創(chuàng )建對應名稱(chēng)的數據庫,并導入項目的sql文件;
  2. 使用IDEA/Eclipse/MyEclipse導入項目,Eclipse/MyEclipse導入時(shí),若為maven項目請選擇maven;
  若為maven項目,導入成功后請執行maven clean;maven install命令,然后運行;
  3. 將項目中springmvc-servlet.xml配置文件中的數據庫配置改為自己的配置;
  4. 運行項目,在瀏覽器中輸入:8080/ 登錄
  運行截圖
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  
  編輯
  編輯
  編輯
  編輯
  編輯
  編輯
  用戶(hù)管理控制層:
  package com.houserss.controller;<br /><br />import javax.servlet.http.HttpSession;<br /><br />import org.apache.commons.lang3.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.RequestParam;<br />import org.springframework.web.bind.annotation.ResponseBody;<br /><br />import com.houserss.common.Const;<br />import com.houserss.common.Const.Role;<br />import com.houserss.common.ServerResponse;<br />import com.houserss.pojo.User;<br />import com.houserss.service.IUserService;<br />import com.houserss.service.impl.UserServiceImpl;<br />import com.houserss.util.MD5Util;<br />import com.houserss.util.TimeUtils;<br />import com.houserss.vo.DeleteHouseVo;<br />import com.houserss.vo.PageInfoVo;<br /><br />/**<br /> * Created by admin<br /> */<br />@Controller<br />@RequestMapping("/user/")<br />public class UserController {<br /> @Autowired<br /> private IUserService iUserService;<br /><br /> /**<br /> * 用戶(hù)登錄<br /> * @param username<br /> * @param password<br /> * @param session<br /> * @return<br /> */<br /> @RequestMapping(value = "login.do",method = RequestMethod.POST)<br /> @ResponseBody<br /> public ServerResponse login(User user,String uvcode, HttpSession session){<br /> String code = (String)session.getAttribute("validationCode");<br /> if(StringUtils.isNotBlank(code)) {<br /> if(!code.equalsIgnoreCase(uvcode)) {<br /> return ServerResponse.createByErrorMessage("驗證碼不正確");<br /> }<br /> }<br /> ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());<br /> if(response.isSuccess()){<br /> session.setAttribute(Const.CURRENT_USER,response.getData());<br /> }<br /> return response;<br /> }<br /><br /> <br /> <br /> <br />}
  管理員管理控制層:
  package com.sxl.controller.admin;<br /><br />import java.util.List;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("adminController")<br />@RequestMapping(value = "/admin")<br />public class AdminController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/main";<br /> }<br /> <br /> @RequestMapping(value = "/tj1")<br /> public String tj1(Model model, HttpServletRequest request)throws Exception {<br /> String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";<br /> List list = db.queryForList(sql);<br /> model.addAttribute("list", list);<br /> System.out.println(list);<br /> return "/admin/tj/tj1";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/admin/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map admin = getAdmin(request);<br /> if(oldPassword.equals(admin.get("password").toString())){<br /> String sql="update t_admin set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,admin.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br />}
  修改密碼業(yè)務(wù)邏輯:
  package com.sxl.controller.admin;<br /><br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.springframework.http.ResponseEntity;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.ui.Model;<br />import org.springframework.web.bind.annotation.RequestMapping;<br /><br />import com.sxl.controller.MyController;<br /><br />@Controller("userController")<br />@RequestMapping(value = "/user")<br />public class UserController extends MyController {<br /> <br /><br /> @RequestMapping(value = "/index")<br /> public String frame(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/index";<br /> }<br /> <br /> @RequestMapping(value = "/main")<br /> public String main(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/main";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/password")<br /> public String password(Model model, HttpServletRequest request)throws Exception {<br /> return "/user/password";<br /> }<br /> <br /> <br /> @RequestMapping(value = "/changePassword")<br /> public ResponseEntity loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {<br /> Map user = getUser(request);<br /> if(oldPassword.equals(user.get("password").toString())){<br /> String sql="update t_user set password=? where id=?";<br /> db.update(sql, new Object[]{newPassword,user.get("id")});<br /> return renderData(true,"1",null);<br /> }else{<br /> return renderData(false,"1",null);<br /> }<br /> }<br /> @RequestMapping(value = "/mine")<br /> public String mine(Model model, HttpServletRequest request)throws Exception {<br />Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";<br /> }<br /> <br /> <br /><br /> @RequestMapping(value = "/mineSave")<br /> public ResponseEntity mineSave(Model model,HttpServletRequest request,Long id<br /> ,String username,String password,String name,String gh,String mobile) throws Exception{<br /> int result = 0;<br /> String sql="update t_user set name=?,gh=?,mobile=? where id=?";<br /> result = db.update(sql, new Object[]{name,gh,mobile,id});<br /> if(result==1){<br /> return renderData(true,"操作成功",null);<br /> }else{<br /> return renderData(false,"操作失敗",null);<br /> }<br /> }<br /> }
  通用管理模塊:
  package com.sxl.controller;<br /><br /><br />import java.nio.charset.Charset;<br />import java.util.Locale;<br />import java.util.ResourceBundle;<br /><br />import javax.servlet.http.HttpServletRequest;<br /><br />import org.apache.commons.lang.StringUtils;<br />import org.springframework.beans.factory.annotation.Autowired;<br />import org.springframework.http.HttpHeaders;<br />import org.springframework.http.HttpStatus;<br />import org.springframework.http.MediaType;<br />import org.springframework.http.ResponseEntity;<br /><br />import com.sxl.util.JacksonJsonUtil;<br />import com.sxl.util.StringUtil;<br />import com.sxl.util.SystemProperties;<br /><br /><br />public class BaseController {<br /> public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天<br /><br /> @Autowired<br /> private SystemProperties systemProperties;<br /><br /> /**<br /> * 獲得配置文件內容<br /> */<br /> public String getConfig(String key) {<br /> return systemProperties.getProperties(key);<br /> }<br /><br /> /**<br /> * 返回服務(wù)器地址 like http://192.168.1.1:8441/UUBean/<br /> */<br /> public String getHostUrl(HttpServletRequest request) {<br /> String hostName = request.getServerName();<br /> Integer hostPort = request.getServerPort();<br /> String path = request.getContextPath();<br /><br /> if (hostPort == 80) {<br /> return "http://" + hostName + path + "/";<br /> } else {<br /> return "http://" + hostName + ":" + hostPort + path + "/";<br /> }<br /> }<br /><br /> /***<br /> * 獲取當前的website路徑 String<br /> */<br /> public static String getWebSite(HttpServletRequest request) {<br /> String returnUrl = request.getScheme() + "://"<br /> + request.getServerName();<br /><br /> if (request.getServerPort() != 80) {<br /> returnUrl += ":" + request.getServerPort();<br /> }<br /><br /> returnUrl += request.getContextPath();<br /><br /> return returnUrl;<br /> }<br /><br /><br /><br /> /**<br /> * 初始化HTTP頭.<br /> * <br /> * @return HttpHeaders<br /> */<br /> public HttpHeaders initHttpHeaders() {<br /> HttpHeaders headers = new HttpHeaders();<br /> MediaType mediaType = new MediaType("text", "html",<br /> Charset.forName("utf-8"));<br /> headers.setContentType(mediaType);<br /> return headers;<br /> }<br /><br /> /**<br /> * 返回 信息數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @return<br /> */<br /> public ResponseEntity renderMsg(Boolean status, String msg) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";<br /> ResponseEntity responseEntity = new ResponseEntity(str,<br /> initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /> /**<br /> * 返回obj數據<br /> * <br /> * @param status<br /> * @param msg<br /> * @param obj<br /> * @return<br /> */<br /> public ResponseEntity renderData(Boolean status, String msg,<br /> Object obj) {<br /> if (StringUtils.isEmpty(msg)) {<br /> msg = "";<br /> }<br /> StringBuffer sb = new StringBuffer();<br /> sb.append("{");<br /> sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");<br /> sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");<br /> sb.append("}");<br /><br /> ResponseEntity responseEntity = new ResponseEntity(<br /> sb.toString(), initHttpHeaders(), HttpStatus.OK);<br /> return responseEntity;<br /> }<br /><br /><br /> /***<br /> * 獲取IP(如果是多級代理,則得到的是一串IP值)<br /> */<br /> public static String getIpAddr(HttpServletRequest request) {<br /> String ip = request.getHeader("x-forwarded-for");<br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getHeader("WL-Proxy-Client-IP");<br /> }<br /><br /> if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {<br /> ip = request.getRemoteAddr();<br /> }<br /><br /> if (ip != null && ip.length() > 0) {<br /> String[] ips = ip.split(",");<br /> for (int i = 0; i < ips.length; i++) {<br /> if (!"unknown".equalsIgnoreCase(ips[i])) {<br /> ip = ips[i];<br /> break;<br /> }<br /> }<br /> }<br /><br /> return ip;<br /> }<br /><br /> /**<br /> * 國際化獲得語(yǔ)言?xún)热?lt;br /> * <br /> * @param key<br /> * 語(yǔ)言key<br /> * @param args<br /> * @param argsSplit<br /> * @param defaultMessage<br /> * @param locale<br /> * @return<br /> */<br /> public static String getLanguage(String key, String args, String argsSplit,<br /> String defaultMessage, String locale) {<br /> String language = "zh";<br /> String contry = "cn";<br /> String returnValue = defaultMessage;<br /><br /> if (!StringUtil.isEmpty(locale)) {<br /> try {<br /> String[] localeArray = locale.split("_");<br /> language = localeArray[0];<br /> contry = localeArray[1];<br /> } catch (Exception e) {<br /> }<br /> }<br /><br /> try {<br /> ResourceBundle resource = ResourceBundle.getBundle("lang.resource",<br /> new Locale(language, contry));<br /> returnValue = resource.getString(key);<br /> if (!StringUtil.isEmpty(args)) {<br /> String[] argsArray = args.split(argsSplit);<br /> for (int i = 0; i < argsArray.length; i++) {<br /> returnValue = returnValue.replace("{" + i + "}",<br /> argsArray[i]);<br /> }<br /> }<br /> } catch (Exception e) {<br /> }<br /><br /> return returnValue;<br /> }<br />}
  源碼獲?。?

【web素材】08—這50套高大上的后臺管理系統模板

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2022-06-22 22:26 ? 來(lái)自相關(guān)話(huà)題

  【web素材】08—這50套高大上的后臺管理系統模板
  
  整理| 楊小愛(ài)
  來(lái)源 | web前端開(kāi)發(fā)(web_qdkf)
  這50套后臺管理模板都是我之前在做后臺界面時(shí),收集整理起來(lái)的,一共有100多套后臺管理界面,我精心挑選了50套,我個(gè)人覺(jué)得還不錯的,也是我個(gè)人比較喜歡的,跟大家分享一下,不管你是設計師還是程序員,都會(huì )是非常不錯的設計開(kāi)發(fā)素材。
  現在,我們一起來(lái)感受一下。
  大屏幕展示的一些大數據或者時(shí)實(shí)監控數據的后臺管理界面。
  
  這些主要是顯示在一些大屏幕上,很多企業(yè)為了給一些重要人來(lái)訪(fǎng)時(shí)候用,或者監控一些時(shí)實(shí)數據。
  圖表基本都是采用了echarts,比較容易修改,當然也有沒(méi)有使用框架的,代碼非常干凈的界面模板。
  另外,還有一些是采用Bootstrap實(shí)現的的響應式管理后臺界面,界面都比較簡(jiǎn)單,優(yōu)雅,有源碼,也可以作為設計師的設計參考。
  
  
  
  
  因為精選了50套模板,以上圖片只是展示了其中一部分界面,以下是50套模板的文件夾截圖,可以一次性打包下載,這些源碼案例,只是為了參考學(xué)習使用,因為都是來(lái)源網(wǎng)絡(luò )收集整理,至于進(jìn)行商業(yè)使用,請慎重。
  最后,重點(diǎn)來(lái)了,那怎么一次性獲取,這50套高大上的后臺管理界面源碼呢?
  獲取方法:在公號聊天窗口,直接發(fā)送關(guān)鍵字【后臺管理模板】或者【web素材08】即可獲取這50套源碼的下載地址。
  這50套源碼,有的是比較完成,基本可以進(jìn)行直接使用了,但是我建議,如果你還不會(huì )寫(xiě)的話(huà),你可以看看別人是采用了那些技術(shù),怎么實(shí)現這些效果的,你就對著(zhù)這個(gè)源碼,自己一行一行的寫(xiě)一遍,效果也會(huì )非常棒。
  如果你還想獲取更多素材內容,請點(diǎn)擊下文鏈接進(jìn)行查閱下載。
  學(xué)習更多技能
  請點(diǎn)擊下方公眾號
  
   查看全部

  【web素材】08—這50套高大上的后臺管理系統模板
  
  整理| 楊小愛(ài)
  來(lái)源 | web前端開(kāi)發(fā)(web_qdkf)
  這50套后臺管理模板都是我之前在做后臺界面時(shí),收集整理起來(lái)的,一共有100多套后臺管理界面,我精心挑選了50套,我個(gè)人覺(jué)得還不錯的,也是我個(gè)人比較喜歡的,跟大家分享一下,不管你是設計師還是程序員,都會(huì )是非常不錯的設計開(kāi)發(fā)素材。
  現在,我們一起來(lái)感受一下。
  大屏幕展示的一些大數據或者時(shí)實(shí)監控數據的后臺管理界面。
  
  這些主要是顯示在一些大屏幕上,很多企業(yè)為了給一些重要人來(lái)訪(fǎng)時(shí)候用,或者監控一些時(shí)實(shí)數據。
  圖表基本都是采用了echarts,比較容易修改,當然也有沒(méi)有使用框架的,代碼非常干凈的界面模板。
  另外,還有一些是采用Bootstrap實(shí)現的的響應式管理后臺界面,界面都比較簡(jiǎn)單,優(yōu)雅,有源碼,也可以作為設計師的設計參考。
  
  
  
  
  因為精選了50套模板,以上圖片只是展示了其中一部分界面,以下是50套模板的文件夾截圖,可以一次性打包下載,這些源碼案例,只是為了參考學(xué)習使用,因為都是來(lái)源網(wǎng)絡(luò )收集整理,至于進(jìn)行商業(yè)使用,請慎重。
  最后,重點(diǎn)來(lái)了,那怎么一次性獲取,這50套高大上的后臺管理界面源碼呢?
  獲取方法:在公號聊天窗口,直接發(fā)送關(guān)鍵字【后臺管理模板】或者【web素材08】即可獲取這50套源碼的下載地址。
  這50套源碼,有的是比較完成,基本可以進(jìn)行直接使用了,但是我建議,如果你還不會(huì )寫(xiě)的話(huà),你可以看看別人是采用了那些技術(shù),怎么實(shí)現這些效果的,你就對著(zhù)這個(gè)源碼,自己一行一行的寫(xiě)一遍,效果也會(huì )非常棒。
  如果你還想獲取更多素材內容,請點(diǎn)擊下文鏈接進(jìn)行查閱下載。
  學(xué)習更多技能
  請點(diǎn)擊下方公眾號
  
  

實(shí)例講解產(chǎn)品后臺該如何設計

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-06-21 11:54 ? 來(lái)自相關(guān)話(huà)題

  實(shí)例講解產(chǎn)品后臺該如何設計
  什么是后臺?
  顧名思義,就是與前臺相反的唄,前臺我們都知道是用戶(hù)查看信息,提交信息的地方,那么后臺相應的就是創(chuàng )建元素信息,存儲信息,處理信息的地方,他也叫管理系統。
  打個(gè)比方,前臺就好像我們去餐廳里,坐下來(lái)看菜單,然后告訴服務(wù)員我們今天要吃什么,服務(wù)員就蹦蹦跳跳的到了后廚,告訴廚師要做哪些菜,廚師記下桌號和菜品,就開(kāi)始制作了。這里的后廚實(shí)際上就是我們所說(shuō)的后臺系統,而那個(gè)廚師就是后臺管理員。
  那后臺都能做什么?給誰(shuí)用?
  就像上面所說(shuō)的后臺通常的作用就是創(chuàng )建信息,存儲信息與處理信息,他管理著(zhù)整個(gè)產(chǎn)品的正常運轉。在論壇里后臺管理者可以刪帖,發(fā)帖,封號,創(chuàng )建賬號,在門(mén)戶(hù)網(wǎng)站可以添加新聞,增加欄目,增加評論,在電商系統里可以上下架產(chǎn)品,處理物流信息,做促銷(xiāo)等等,功能強大吧。
  不過(guò)強大的背后就會(huì )遇到問(wèn)題,那就是越是功能強大,越不能一個(gè)人來(lái)完成所有部分,所以就有了「分權限管理」管理者可以細分成很多塊,各司其職,提高效率。比如我正在編輯文章的微信后臺,就包括管理者與運營(yíng)者,運營(yíng)者只能登錄與群發(fā)信息,更高級的操作需要管理員授權或是不開(kāi)放,電商網(wǎng)站更是多角色的典型。
  
  在大致了解了后臺是什么之后,讓我們拿個(gè)案例從需求開(kāi)始。
  看看設計后臺時(shí)是怎么思考的?
  首先最頭疼的問(wèn)題就是——從哪里入手?記住一句話(huà),跟隨你的業(yè)務(wù)流程。找到流程中需要與系統交互的地方,那就是你想要找的東西。
  OK,讓我們用一個(gè)簡(jiǎn)單的門(mén)戶(hù)網(wǎng)站舉例。
  就是這么多了,如果是你你會(huì )怎么做?
  畫(huà)原型嗎?NO。先停一下,去把這個(gè)「喜訊」告訴所有「干系人」吧,讓大家的信息對稱(chēng)一下。面對這個(gè)需求,我們需要調動(dòng)多少人?產(chǎn)品狗自己,UI一個(gè),前端一個(gè),后端1-2個(gè),市場(chǎng)文案狗一個(gè),人力資源輔助配合招聘模塊1人,最后是網(wǎng)站后期運營(yíng)者。想想功能,想想要完成的事情,大概就這么多了。
  根據需求可以看出,大概功能并不復雜;做個(gè)功能列表,簡(jiǎn)單用語(yǔ)言包裝一下你要做的東西,然后去挨個(gè)聊或者召集大家開(kāi)會(huì ),讓大家提供一個(gè)完成時(shí)間,這個(gè)完成時(shí)間不能超過(guò)Deadline,所以溝通過(guò)程中可能需要你去說(shuō)服對方,提高效率,甚至可能加班,讓大家有心理準備。搞定了人,回來(lái)看看產(chǎn)品。
  
  從老板那邊得到的需求大致是這樣,對于一個(gè)門(mén)戶(hù)網(wǎng)站來(lái)說(shuō)邏輯總是比較簡(jiǎn)單的。
  我們先來(lái)做個(gè)簡(jiǎn)單的梳理
  首頁(yè),會(huì )有一個(gè)輪播圖方便后期更新,如果更新不頻繁也可以做成靜態(tài),開(kāi)發(fā)成本低。首頁(yè)還會(huì )是一些公司競爭力介紹等等。
  新聞,新聞會(huì )有運營(yíng)人員不定期更新,就是需要創(chuàng )建信息,他就是需要在后臺有這個(gè)功能。
  招商加盟,看看招商網(wǎng)站多半是一些公司介紹,在底部會(huì )放一個(gè)聯(lián)系方式提交的地方,詢(xún)問(wèn)老板后,他認為也需要這個(gè)模塊,OK,需要傳遞信息,他也需要在后臺有個(gè)功能。
  招聘,看看招聘網(wǎng)站,功能還是挺多的?那么我們需要那么多嗎?用戶(hù)可以有個(gè)word簡(jiǎn)歷通過(guò)網(wǎng)站上傳給我們,人力資源人員可以通過(guò)后臺下載或預覽?再來(lái)一個(gè)解決方案,在前臺有很多表單可以讓用戶(hù)填寫(xiě),直接提交給后臺。這些都是用戶(hù)要與后臺產(chǎn)生互動(dòng)信息。
  但是這些方案好像聽(tīng)起來(lái)不錯,但是時(shí)間允許你這樣做嗎?成本你承受得起嗎?那么不如用最原始的方式,雖然不那么酷但是后簡(jiǎn)單,前端只提供職位職責預覽,并提供一個(gè)人力的郵箱,大家可以向里面投遞簡(jiǎn)歷,后臺只做職位的簡(jiǎn)單發(fā)布。
  業(yè)務(wù)介紹,屬于靜態(tài)頁(yè)面,設計上去就OK了,這個(gè)不涉及到后臺。
  經(jīng)過(guò)分析和溝通,我們發(fā)現與后臺有交集的地方分別是,首頁(yè)輪播圖,新聞,招商和招聘。這時(shí)候你可以去看看其他產(chǎn)品,在這些模塊都會(huì )顯示哪些字段信息,找到你決定有用的,把他填寫(xiě)到這些功能描述中,再去進(jìn)行前臺的產(chǎn)品設計;不過(guò)有時(shí)你會(huì )發(fā)現做著(zhù)做著(zhù)發(fā)現缺了某個(gè)字段,為了避免這種事情的發(fā)生,就需要你在信息收集的過(guò)程中,多去看幾個(gè)產(chǎn)品,把他們的展示的內容都先羅列下來(lái),再做刪減。
  前臺不是今天說(shuō)的重點(diǎn),我們直接進(jìn)入后臺設計。
  我常以為后臺就是一個(gè)個(gè)的「倉庫」
  這個(gè)庫里堆放著(zhù)你想要管理的內容,后臺的搭建就是創(chuàng )建一個(gè)又一個(gè)的庫,并且將他們合理的連接起來(lái)?;乜次覀円龅臇|西,可以簡(jiǎn)單的分為四個(gè)庫,并對他們分別管理。
  新聞管理
  輪播圖管理(廣告位管理)
  加盟信息
  招聘信息管理
  知道有哪些庫了,我們需要將他們合理的組合起來(lái),形成”導航“。業(yè)務(wù)流程越長(cháng),功能越多這個(gè)組合的工作越不好,這就是為什么需要信息架構師這種職位,不過(guò)面對簡(jiǎn)單的后臺,產(chǎn)品們還是可以直接應付。
  整個(gè)后臺的界面通常會(huì )有以下模塊組成:后臺導航——管理庫(管理內容列表\管理的內容),從最大的框架到最小元素。
  后臺導航
  在我接觸的后臺導航中常見(jiàn)的有幾種。
  1. 橫向導航
  2. 縱向樹(shù)結構導航
  3. 橫向導航縱向樹(shù)結構
  橫向導航會(huì )用在后臺功能較少,層級很少的情況下,他的優(yōu)勢就是學(xué)習成本低,劣勢就是可擴展性比較差。
  
  早期的支付寶導航
  縱向樹(shù)結構導航,這個(gè)我們看的其實(shí)是比較常見(jiàn)的,很多電商網(wǎng)站的個(gè)人中心或是訂單頁(yè)面就是用的這種結構,邏輯清晰,能夠很快的找到想要找的東西。
  
  第三種比較復雜,適用于平臺功能較多,功能模塊相差很多的網(wǎng)站,會(huì )在最頂部的橫向導航放置頂級功能導航,在某個(gè)功能下用樹(shù)結構導航清晰的表現二級功能。
  
  因為這一次我們做的功能并不復雜實(shí)際上可以用橫向導航,不過(guò)因為我是根據現有后臺來(lái)制作,所以為了不增加開(kāi)發(fā)成本,所以依然延續橫向導航縱向樹(shù)結構。
  管理庫
  決定了哪種導航形式,來(lái)看看最重要的「管理庫」,面對「庫」大家記住,絕大部分情況都會(huì )有個(gè)「列表頁(yè)」,然后就是對信息的「增刪改查」,遇到商品或是輪播圖還會(huì )有上下架,顯示與隱藏的功能,基本上「庫」都會(huì )這樣的管理的。
  那么這樣想,是不是新聞的管理設計起來(lái)就容易多了。添加新聞,刪除新聞,編輯新聞,搜索新聞,再加上一個(gè)新聞列表,列表中在顯示一些需要的字段。
  OK,其實(shí)整個(gè)管理列表頁(yè)已經(jīng)躍然紙上了,之后就是正文編輯了,用戶(hù)可以從列表頁(yè)或導航中的「添加新聞」進(jìn)入,把可以實(shí)現功能的字段做到頁(yè)面上,再加上文本編輯器,一個(gè)發(fā)布按鈕,一個(gè)簡(jiǎn)單的新聞管理就搞定了。
  
  原型略簡(jiǎn)陋。。莫吐槽~
  那加盟信息怎么做呢?其實(shí)也很簡(jiǎn)單了,既然用戶(hù)需要在前臺提交信息,那么我們的后臺實(shí)際上就是一個(gè)接受信息的地方。我們讓用戶(hù)在前臺提交「姓名電話(huà)郵箱」等聯(lián)系方式,在后臺加盟管理中,利用列表頁(yè)將這些信息進(jìn)行展示,有新的加盟信息推送過(guò)來(lái)可以在導航上加一個(gè)數字角標,這個(gè)功能甚至都用不到詳情頁(yè)就能搞定。
  留個(gè)思考問(wèn)題,廣告位管理你是不是也會(huì )做了呢?思考10秒鐘,用上面的辦法思考——列表(增刪改查)+詳情(添加內容)。是不是思路變得清晰一些了?
  像門(mén)戶(hù)網(wǎng)站這種還算比較簡(jiǎn)單的了,不過(guò)為了方便管理,你可以給不同的角色賦予不同的權限,比如人力資源的同學(xué)只可以使用招聘發(fā)布,網(wǎng)站運營(yíng)人員只能使用新聞發(fā)布等等,專(zhuān)人專(zhuān)項,分工明確。
  角色劃分與權限是怎么來(lái)決定呢?
  一句話(huà),跟隨你的產(chǎn)品業(yè)務(wù)。比如拿電商而言一個(gè)商品從用戶(hù)確認下單,支付之后,在后臺會(huì )走過(guò)多少流程,我想每個(gè)公司的業(yè)務(wù)流程都會(huì )不同,但是在這個(gè)流程中一定會(huì )涉及到很多「角色」來(lái)處理訂單,而這「角色」就是你來(lái)劃分后臺權限的依據,而功能亦是從業(yè)務(wù)需求中轉化而成的。
  讓我們短暫回顧一下
  回顧一下后臺的設計,我們會(huì )發(fā)現他實(shí)際上是一種面向信息的設計,對于信息進(jìn)行審核,記錄,閱讀,操控等等。在做后臺設計時(shí)你需要對業(yè)務(wù)流程有一定了解,知道哪個(gè)環(huán)節會(huì )與系統產(chǎn)生交互,那么這個(gè)交互的點(diǎn)就是后臺設計的「庫」,我們需要對這些庫進(jìn)行管理,有時(shí)候我們還需要將這些庫與另外一些庫進(jìn)行連接,庫與庫之間互相調取數據。
  比如電商網(wǎng)站做的促銷(xiāo)管理,都會(huì )去調用「商品庫」里面的數據。想要掌握后臺產(chǎn)品的設計的核心就是處理好每個(gè)庫的劃分與整個(gè)產(chǎn)品的運作邏輯。
  先做前臺還是后臺
  這是我曾經(jīng)很糾結的問(wèn)題,不知道你是不是也是一樣,當你慢慢了解之后,這個(gè)問(wèn)題其實(shí)就不復存在了,找你熟悉的東西開(kāi)始做,這樣會(huì )讓你有我已經(jīng)完成了多少多少了的感覺(jué),而不是面對一個(gè)不熟悉的東西,痛苦的死磕,磕到對自己失去信心。
  前臺與后臺共同構成了你的產(chǎn)品,缺少一方,產(chǎn)品便無(wú)法運轉,先把業(yè)務(wù)邏輯思考清楚,你會(huì )發(fā)現「哦,這里是給用戶(hù)看的」「啊,這里是后臺要處理的」當業(yè)務(wù)邏輯走向完整之后,我想你的前后臺就都已經(jīng)設計完成了。還有一個(gè)問(wèn)題可能會(huì )比較困擾人。
  后臺設計要不要注重體驗和UI?
  我的答案是,視情況而定。這個(gè)情況有可能是時(shí)間,有可能是產(chǎn)品階段,有可能是公司目標與規模。
  有些后臺只要能實(shí)現功能就可以,有些后臺需要開(kāi)放給第三方來(lái)用,對于產(chǎn)品的“好用”程度不同,不過(guò)如果條件允許還是反復推敲下,其中的邏輯與體驗比較好。
  前一陣幫助公司對商城的賣(mài)家后臺做了體驗上的改版,因為之前都會(huì )不斷的增加功能,沒(méi)有對產(chǎn)品很好的梳理和設計,導致很多地方體驗不好或是信息架構混亂。這些細小的地方只要多多體驗,多思考就能夠找到更好的辦法。
  比如后臺有個(gè)手機認證的功能,之前只這樣的操作。
  
  未認證的用戶(hù)進(jìn)來(lái)的狀態(tài),會(huì )顯示用戶(hù)未認證,點(diǎn)擊立即認證會(huì )有個(gè)模態(tài)窗口,讓你填寫(xiě)手機號,驗證碼。
  
  OK,好像很正常,也能夠綁定,那么問(wèn)題出現在哪里呢?
  
  不夠直接,需要兩步操作。于是做了如下修改,點(diǎn)擊導航中的認證中心,直接去判斷是否綁定,如果沒(méi)有綁定,直接顯示之前彈窗中的內容,兩步變一步,簡(jiǎn)單了許多吧。
  尾巴
  不知道你現在,是不是已經(jīng)知道后臺是什么,給誰(shuí)用,如何設計了。最近在研究拼車(chē)產(chǎn)品,不知道你有沒(méi)有用過(guò)嘀嘀順風(fēng)車(chē),如果沒(méi)用過(guò)你可以馬上體驗一下,然后思考一下,他的哪些東西會(huì )在后臺出現呢?
  PS:轉發(fā)此篇文章到朋友圈或者是產(chǎn)品經(jīng)理群,并截圖發(fā)給微信chanpin628,可以找我領(lǐng)取一份阿里需求管理模板。 查看全部

  實(shí)例講解產(chǎn)品后臺該如何設計
  什么是后臺?
  顧名思義,就是與前臺相反的唄,前臺我們都知道是用戶(hù)查看信息,提交信息的地方,那么后臺相應的就是創(chuàng )建元素信息,存儲信息,處理信息的地方,他也叫管理系統。
  打個(gè)比方,前臺就好像我們去餐廳里,坐下來(lái)看菜單,然后告訴服務(wù)員我們今天要吃什么,服務(wù)員就蹦蹦跳跳的到了后廚,告訴廚師要做哪些菜,廚師記下桌號和菜品,就開(kāi)始制作了。這里的后廚實(shí)際上就是我們所說(shuō)的后臺系統,而那個(gè)廚師就是后臺管理員。
  那后臺都能做什么?給誰(shuí)用?
  就像上面所說(shuō)的后臺通常的作用就是創(chuàng )建信息,存儲信息與處理信息,他管理著(zhù)整個(gè)產(chǎn)品的正常運轉。在論壇里后臺管理者可以刪帖,發(fā)帖,封號,創(chuàng )建賬號,在門(mén)戶(hù)網(wǎng)站可以添加新聞,增加欄目,增加評論,在電商系統里可以上下架產(chǎn)品,處理物流信息,做促銷(xiāo)等等,功能強大吧。
  不過(guò)強大的背后就會(huì )遇到問(wèn)題,那就是越是功能強大,越不能一個(gè)人來(lái)完成所有部分,所以就有了「分權限管理」管理者可以細分成很多塊,各司其職,提高效率。比如我正在編輯文章的微信后臺,就包括管理者與運營(yíng)者,運營(yíng)者只能登錄與群發(fā)信息,更高級的操作需要管理員授權或是不開(kāi)放,電商網(wǎng)站更是多角色的典型。
  
  在大致了解了后臺是什么之后,讓我們拿個(gè)案例從需求開(kāi)始。
  看看設計后臺時(shí)是怎么思考的?
  首先最頭疼的問(wèn)題就是——從哪里入手?記住一句話(huà),跟隨你的業(yè)務(wù)流程。找到流程中需要與系統交互的地方,那就是你想要找的東西。
  OK,讓我們用一個(gè)簡(jiǎn)單的門(mén)戶(hù)網(wǎng)站舉例。
  就是這么多了,如果是你你會(huì )怎么做?
  畫(huà)原型嗎?NO。先停一下,去把這個(gè)「喜訊」告訴所有「干系人」吧,讓大家的信息對稱(chēng)一下。面對這個(gè)需求,我們需要調動(dòng)多少人?產(chǎn)品狗自己,UI一個(gè),前端一個(gè),后端1-2個(gè),市場(chǎng)文案狗一個(gè),人力資源輔助配合招聘模塊1人,最后是網(wǎng)站后期運營(yíng)者。想想功能,想想要完成的事情,大概就這么多了。
  根據需求可以看出,大概功能并不復雜;做個(gè)功能列表,簡(jiǎn)單用語(yǔ)言包裝一下你要做的東西,然后去挨個(gè)聊或者召集大家開(kāi)會(huì ),讓大家提供一個(gè)完成時(shí)間,這個(gè)完成時(shí)間不能超過(guò)Deadline,所以溝通過(guò)程中可能需要你去說(shuō)服對方,提高效率,甚至可能加班,讓大家有心理準備。搞定了人,回來(lái)看看產(chǎn)品。
  
  從老板那邊得到的需求大致是這樣,對于一個(gè)門(mén)戶(hù)網(wǎng)站來(lái)說(shuō)邏輯總是比較簡(jiǎn)單的。
  我們先來(lái)做個(gè)簡(jiǎn)單的梳理
  首頁(yè),會(huì )有一個(gè)輪播圖方便后期更新,如果更新不頻繁也可以做成靜態(tài),開(kāi)發(fā)成本低。首頁(yè)還會(huì )是一些公司競爭力介紹等等。
  新聞,新聞會(huì )有運營(yíng)人員不定期更新,就是需要創(chuàng )建信息,他就是需要在后臺有這個(gè)功能。
  招商加盟,看看招商網(wǎng)站多半是一些公司介紹,在底部會(huì )放一個(gè)聯(lián)系方式提交的地方,詢(xún)問(wèn)老板后,他認為也需要這個(gè)模塊,OK,需要傳遞信息,他也需要在后臺有個(gè)功能。
  招聘,看看招聘網(wǎng)站,功能還是挺多的?那么我們需要那么多嗎?用戶(hù)可以有個(gè)word簡(jiǎn)歷通過(guò)網(wǎng)站上傳給我們,人力資源人員可以通過(guò)后臺下載或預覽?再來(lái)一個(gè)解決方案,在前臺有很多表單可以讓用戶(hù)填寫(xiě),直接提交給后臺。這些都是用戶(hù)要與后臺產(chǎn)生互動(dòng)信息。
  但是這些方案好像聽(tīng)起來(lái)不錯,但是時(shí)間允許你這樣做嗎?成本你承受得起嗎?那么不如用最原始的方式,雖然不那么酷但是后簡(jiǎn)單,前端只提供職位職責預覽,并提供一個(gè)人力的郵箱,大家可以向里面投遞簡(jiǎn)歷,后臺只做職位的簡(jiǎn)單發(fā)布。
  業(yè)務(wù)介紹,屬于靜態(tài)頁(yè)面,設計上去就OK了,這個(gè)不涉及到后臺。
  經(jīng)過(guò)分析和溝通,我們發(fā)現與后臺有交集的地方分別是,首頁(yè)輪播圖,新聞,招商和招聘。這時(shí)候你可以去看看其他產(chǎn)品,在這些模塊都會(huì )顯示哪些字段信息,找到你決定有用的,把他填寫(xiě)到這些功能描述中,再去進(jìn)行前臺的產(chǎn)品設計;不過(guò)有時(shí)你會(huì )發(fā)現做著(zhù)做著(zhù)發(fā)現缺了某個(gè)字段,為了避免這種事情的發(fā)生,就需要你在信息收集的過(guò)程中,多去看幾個(gè)產(chǎn)品,把他們的展示的內容都先羅列下來(lái),再做刪減。
  前臺不是今天說(shuō)的重點(diǎn),我們直接進(jìn)入后臺設計。
  我常以為后臺就是一個(gè)個(gè)的「倉庫」
  這個(gè)庫里堆放著(zhù)你想要管理的內容,后臺的搭建就是創(chuàng )建一個(gè)又一個(gè)的庫,并且將他們合理的連接起來(lái)?;乜次覀円龅臇|西,可以簡(jiǎn)單的分為四個(gè)庫,并對他們分別管理。
  新聞管理
  輪播圖管理(廣告位管理)
  加盟信息
  招聘信息管理
  知道有哪些庫了,我們需要將他們合理的組合起來(lái),形成”導航“。業(yè)務(wù)流程越長(cháng),功能越多這個(gè)組合的工作越不好,這就是為什么需要信息架構師這種職位,不過(guò)面對簡(jiǎn)單的后臺,產(chǎn)品們還是可以直接應付。
  整個(gè)后臺的界面通常會(huì )有以下模塊組成:后臺導航——管理庫(管理內容列表\管理的內容),從最大的框架到最小元素。
  后臺導航
  在我接觸的后臺導航中常見(jiàn)的有幾種。
  1. 橫向導航
  2. 縱向樹(shù)結構導航
  3. 橫向導航縱向樹(shù)結構
  橫向導航會(huì )用在后臺功能較少,層級很少的情況下,他的優(yōu)勢就是學(xué)習成本低,劣勢就是可擴展性比較差。
  
  早期的支付寶導航
  縱向樹(shù)結構導航,這個(gè)我們看的其實(shí)是比較常見(jiàn)的,很多電商網(wǎng)站的個(gè)人中心或是訂單頁(yè)面就是用的這種結構,邏輯清晰,能夠很快的找到想要找的東西。
  
  第三種比較復雜,適用于平臺功能較多,功能模塊相差很多的網(wǎng)站,會(huì )在最頂部的橫向導航放置頂級功能導航,在某個(gè)功能下用樹(shù)結構導航清晰的表現二級功能。
  
  因為這一次我們做的功能并不復雜實(shí)際上可以用橫向導航,不過(guò)因為我是根據現有后臺來(lái)制作,所以為了不增加開(kāi)發(fā)成本,所以依然延續橫向導航縱向樹(shù)結構。
  管理庫
  決定了哪種導航形式,來(lái)看看最重要的「管理庫」,面對「庫」大家記住,絕大部分情況都會(huì )有個(gè)「列表頁(yè)」,然后就是對信息的「增刪改查」,遇到商品或是輪播圖還會(huì )有上下架,顯示與隱藏的功能,基本上「庫」都會(huì )這樣的管理的。
  那么這樣想,是不是新聞的管理設計起來(lái)就容易多了。添加新聞,刪除新聞,編輯新聞,搜索新聞,再加上一個(gè)新聞列表,列表中在顯示一些需要的字段。
  OK,其實(shí)整個(gè)管理列表頁(yè)已經(jīng)躍然紙上了,之后就是正文編輯了,用戶(hù)可以從列表頁(yè)或導航中的「添加新聞」進(jìn)入,把可以實(shí)現功能的字段做到頁(yè)面上,再加上文本編輯器,一個(gè)發(fā)布按鈕,一個(gè)簡(jiǎn)單的新聞管理就搞定了。
  
  原型略簡(jiǎn)陋。。莫吐槽~
  那加盟信息怎么做呢?其實(shí)也很簡(jiǎn)單了,既然用戶(hù)需要在前臺提交信息,那么我們的后臺實(shí)際上就是一個(gè)接受信息的地方。我們讓用戶(hù)在前臺提交「姓名電話(huà)郵箱」等聯(lián)系方式,在后臺加盟管理中,利用列表頁(yè)將這些信息進(jìn)行展示,有新的加盟信息推送過(guò)來(lái)可以在導航上加一個(gè)數字角標,這個(gè)功能甚至都用不到詳情頁(yè)就能搞定。
  留個(gè)思考問(wèn)題,廣告位管理你是不是也會(huì )做了呢?思考10秒鐘,用上面的辦法思考——列表(增刪改查)+詳情(添加內容)。是不是思路變得清晰一些了?
  像門(mén)戶(hù)網(wǎng)站這種還算比較簡(jiǎn)單的了,不過(guò)為了方便管理,你可以給不同的角色賦予不同的權限,比如人力資源的同學(xué)只可以使用招聘發(fā)布,網(wǎng)站運營(yíng)人員只能使用新聞發(fā)布等等,專(zhuān)人專(zhuān)項,分工明確。
  角色劃分與權限是怎么來(lái)決定呢?
  一句話(huà),跟隨你的產(chǎn)品業(yè)務(wù)。比如拿電商而言一個(gè)商品從用戶(hù)確認下單,支付之后,在后臺會(huì )走過(guò)多少流程,我想每個(gè)公司的業(yè)務(wù)流程都會(huì )不同,但是在這個(gè)流程中一定會(huì )涉及到很多「角色」來(lái)處理訂單,而這「角色」就是你來(lái)劃分后臺權限的依據,而功能亦是從業(yè)務(wù)需求中轉化而成的。
  讓我們短暫回顧一下
  回顧一下后臺的設計,我們會(huì )發(fā)現他實(shí)際上是一種面向信息的設計,對于信息進(jìn)行審核,記錄,閱讀,操控等等。在做后臺設計時(shí)你需要對業(yè)務(wù)流程有一定了解,知道哪個(gè)環(huán)節會(huì )與系統產(chǎn)生交互,那么這個(gè)交互的點(diǎn)就是后臺設計的「庫」,我們需要對這些庫進(jìn)行管理,有時(shí)候我們還需要將這些庫與另外一些庫進(jìn)行連接,庫與庫之間互相調取數據。
  比如電商網(wǎng)站做的促銷(xiāo)管理,都會(huì )去調用「商品庫」里面的數據。想要掌握后臺產(chǎn)品的設計的核心就是處理好每個(gè)庫的劃分與整個(gè)產(chǎn)品的運作邏輯。
  先做前臺還是后臺
  這是我曾經(jīng)很糾結的問(wèn)題,不知道你是不是也是一樣,當你慢慢了解之后,這個(gè)問(wèn)題其實(shí)就不復存在了,找你熟悉的東西開(kāi)始做,這樣會(huì )讓你有我已經(jīng)完成了多少多少了的感覺(jué),而不是面對一個(gè)不熟悉的東西,痛苦的死磕,磕到對自己失去信心。
  前臺與后臺共同構成了你的產(chǎn)品,缺少一方,產(chǎn)品便無(wú)法運轉,先把業(yè)務(wù)邏輯思考清楚,你會(huì )發(fā)現「哦,這里是給用戶(hù)看的」「啊,這里是后臺要處理的」當業(yè)務(wù)邏輯走向完整之后,我想你的前后臺就都已經(jīng)設計完成了。還有一個(gè)問(wèn)題可能會(huì )比較困擾人。
  后臺設計要不要注重體驗和UI?
  我的答案是,視情況而定。這個(gè)情況有可能是時(shí)間,有可能是產(chǎn)品階段,有可能是公司目標與規模。
  有些后臺只要能實(shí)現功能就可以,有些后臺需要開(kāi)放給第三方來(lái)用,對于產(chǎn)品的“好用”程度不同,不過(guò)如果條件允許還是反復推敲下,其中的邏輯與體驗比較好。
  前一陣幫助公司對商城的賣(mài)家后臺做了體驗上的改版,因為之前都會(huì )不斷的增加功能,沒(méi)有對產(chǎn)品很好的梳理和設計,導致很多地方體驗不好或是信息架構混亂。這些細小的地方只要多多體驗,多思考就能夠找到更好的辦法。
  比如后臺有個(gè)手機認證的功能,之前只這樣的操作。
  
  未認證的用戶(hù)進(jìn)來(lái)的狀態(tài),會(huì )顯示用戶(hù)未認證,點(diǎn)擊立即認證會(huì )有個(gè)模態(tài)窗口,讓你填寫(xiě)手機號,驗證碼。
  
  OK,好像很正常,也能夠綁定,那么問(wèn)題出現在哪里呢?
  
  不夠直接,需要兩步操作。于是做了如下修改,點(diǎn)擊導航中的認證中心,直接去判斷是否綁定,如果沒(méi)有綁定,直接顯示之前彈窗中的內容,兩步變一步,簡(jiǎn)單了許多吧。
  尾巴
  不知道你現在,是不是已經(jīng)知道后臺是什么,給誰(shuí)用,如何設計了。最近在研究拼車(chē)產(chǎn)品,不知道你有沒(méi)有用過(guò)嘀嘀順風(fēng)車(chē),如果沒(méi)用過(guò)你可以馬上體驗一下,然后思考一下,他的哪些東西會(huì )在后臺出現呢?
  PS:轉發(fā)此篇文章到朋友圈或者是產(chǎn)品經(jīng)理群,并截圖發(fā)給微信chanpin628,可以找我領(lǐng)取一份阿里需求管理模板。

如何設計出色的網(wǎng)站后臺原型

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2022-06-21 11:43 ? 來(lái)自相關(guān)話(huà)題

  如何設計出色的網(wǎng)站后臺原型
  如何設計后臺管理系統原型,我理解的是,針對互聯(lián)網(wǎng)產(chǎn)品范疇的后臺管理系統。即維護用戶(hù)、管理社區、跟蹤分析用戶(hù)行為并進(jìn)行數據統計分析等。我當初搭建后臺產(chǎn)品的時(shí)候也遇到過(guò)很多疑問(wèn),正好借著(zhù)這個(gè)回答來(lái)個(gè)梳理和總結。
  這里不討論涉及供應鏈系統的后臺產(chǎn)品,如電商、團購等,美團O2O供應鏈系統架構設計解析 里面涉及復雜的交易流程優(yōu)化。
  為什么說(shuō)設計后臺產(chǎn)品很難?看看這個(gè)問(wèn)題的回答。
  難參照競品。用戶(hù)只要大量地使用過(guò)別的產(chǎn)品,便會(huì )建立起相應的心智模型。然而后臺對于很多人而言卻非常陌生,毫無(wú)心智模型可言,也難以做競品調研?!崍粤x
  也就是說(shuō)面向大眾用戶(hù)的前臺產(chǎn)品,大家培養起了使用習慣,對功能有一定程度的理解,見(jiàn)過(guò)的模式足夠多,能夠建立起一定的產(chǎn)品模型,也容易找到參照物去模仿。而且,做后臺產(chǎn)品需要非常懂業(yè)務(wù),考驗產(chǎn)品經(jīng)理的核心競爭力——業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力。推薦看:為什么說(shuō)好的產(chǎn)品經(jīng)理一將難求? – 蒸汽機的回答
  開(kāi)始后臺產(chǎn)品設計之前,先找找相類(lèi)似的產(chǎn)品,雖然我們無(wú)法去觀(guān)照其他產(chǎn)品的后臺都是長(cháng)什么樣的,但是現在有不少提供標準化數據分析的SaaS服務(wù)公司,如友盟、諸葛IO。但是為什么我們很難直接采用這些公司的產(chǎn)品來(lái)管理和維護運營(yíng)?軟件運營(yíng)(SaaS)模式的核心是標準化架構+定制化需求,比如體系已經(jīng)成熟的ERP、CRM、OA等管理系統涉及審批流程、財務(wù)審計等更容易標準化生產(chǎn)。而互聯(lián)網(wǎng)產(chǎn)品的業(yè)務(wù)各式各樣,變化不斷,還會(huì )隨時(shí)出現一種全新的業(yè)務(wù)模式,所以后臺產(chǎn)品做到標準化有一定難度。
  我們先看看,類(lèi)似的數據分析平臺。
  百度統計——最大的中文網(wǎng)站分析平臺
  諸葛IO——精細化數據分析工具
  友盟_專(zhuān)業(yè)的移動(dòng)開(kāi)發(fā)者服務(wù)平臺
  TalkingData-移動(dòng).數據.價(jià)值
  蓮子數據首頁(yè)-lotuseed-專(zhuān)業(yè)的移動(dòng)數據分析服務(wù)平臺
  騰訊云分析
  面對公司的社區型產(chǎn)品和運營(yíng)人員提出的需求,發(fā)現以上平臺都難以滿(mǎn)足后臺管理運營(yíng)。但是拆解分析里面的業(yè)務(wù)邏輯能幫助你理解后臺產(chǎn)品的模塊結構。
  
  
  
  
  后臺產(chǎn)品的功能里最容易標準化的就是用戶(hù)分析,新增用戶(hù)、留存率、活躍度等,所以我在設計后臺產(chǎn)品的運營(yíng)數據上很大程度上參考了這些數據分析的結構和模式。而市面上的數據分析工具,最大的問(wèn)題在于,我所知道的工具里還沒(méi)有任何一款可以整合統計不同渠道的數據,也就是說(shuō)PC、H5、iOS、Android分別進(jìn)行統計,假如統計今天多少用戶(hù)進(jìn)行了“點(diǎn)贊”的操作,這個(gè)用戶(hù)行為跟蹤是無(wú)法進(jìn)行全渠道分析,那么分析就被割裂開(kāi)來(lái),難以形成系統。并且大部分是針對移動(dòng)應用,網(wǎng)站分析這一塊只有百度做得相對詳細點(diǎn)。后臺產(chǎn)品是根據業(yè)務(wù)情況定制化需求的,游戲應用、O2O、電商、垂直社區、社交產(chǎn)品都會(huì )有形成巨大差異的后臺產(chǎn)品模型。
  針對我負責的垂直社區來(lái)進(jìn)行下一步分析,結合前臺產(chǎn)品的整體功能,我確定了后臺產(chǎn)品的模型架構分為三大模塊:運營(yíng)數據分析、社區管理、交易中心。運營(yíng)數據分析是用來(lái)監測用戶(hù)和內容的變化趨勢;社區管理是運營(yíng)人員對用戶(hù)和內容進(jìn)行日常的維護和管理;交易中心是用來(lái)記錄交易明細和收支變化趨勢的(社區有打賞和紅包功能)。
  
  運營(yíng)數據分析包括用戶(hù)分析、內容分析和事件分析,其中有用戶(hù)類(lèi)別和渠道兩個(gè)維度。就是說(shuō)每個(gè)分析里面可以針對不同的維度,比如除去內部運營(yíng)人員后今天產(chǎn)生多少點(diǎn)贊數,比如在iOS上今天產(chǎn)生多少點(diǎn)贊數。以下是我考慮功能結構的思路(下面圖片涉及核心業(yè)務(wù)數據將會(huì )模糊處理):
  用戶(hù)分析→用戶(hù)追蹤→新增趨勢+活躍度+留存率+用戶(hù)特征
  內容分析→用戶(hù)生產(chǎn)內容追蹤→新增趨勢+類(lèi)別情況
  事件與轉化→用戶(hù)行為追蹤→事件趨勢+事件交互+事件轉化
  
  社區管理主要包括用戶(hù)管理、內容維護、事件設置。社區管理在一定程度上影響運營(yíng)數據的變化。比如,給用戶(hù)添加標簽生成用戶(hù)畫(huà)像。
  用戶(hù)管理→用戶(hù)特征+用戶(hù)分類(lèi)→用戶(hù)分析
  內容維護→用戶(hù)生產(chǎn)內容管理→分類(lèi)管理+內容監控
  事件設置→用戶(hù)行為管理
  
  交易中心包括總資產(chǎn)概況、交易明細、交易分析,結構比較簡(jiǎn)單,用來(lái)管理社區的財務(wù)和監控財務(wù)數據,與電商平臺復雜的財務(wù)系統相去甚遠。
  
  以上僅僅是提供一種后臺產(chǎn)品模型架構的思路,后臺產(chǎn)品主要由前臺產(chǎn)品模型和業(yè)務(wù)模式?jīng)Q定,不同種類(lèi)的互聯(lián)網(wǎng)產(chǎn)品的后臺可能千差萬(wàn)別,勿直接套用。
  說(shuō)了那么多,是想說(shuō)明后臺產(chǎn)品的設計非常有挑戰性,雖然由于多種原因不像前臺產(chǎn)品那樣是香餑餑,但絕對是個(gè)很好的鍛煉機會(huì )。產(chǎn)品人除了把控流程邏輯和功能細節外,產(chǎn)品模型架構能力來(lái)自于業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力,因為你的思考維度需要跳出單線(xiàn)程的邏輯或單一功能的交互,要進(jìn)化成梳理多線(xiàn)程之間的復雜邏輯或多個(gè)功能之間的交互。
  
  好了,最后貼個(gè)干貨出來(lái),記錄這一次挑戰。
  產(chǎn)品結構
  
  產(chǎn)品原型
  最終產(chǎn)出
   查看全部

  如何設計出色的網(wǎng)站后臺原型
  如何設計后臺管理系統原型,我理解的是,針對互聯(lián)網(wǎng)產(chǎn)品范疇的后臺管理系統。即維護用戶(hù)、管理社區、跟蹤分析用戶(hù)行為并進(jìn)行數據統計分析等。我當初搭建后臺產(chǎn)品的時(shí)候也遇到過(guò)很多疑問(wèn),正好借著(zhù)這個(gè)回答來(lái)個(gè)梳理和總結。
  這里不討論涉及供應鏈系統的后臺產(chǎn)品,如電商、團購等,美團O2O供應鏈系統架構設計解析 里面涉及復雜的交易流程優(yōu)化。
  為什么說(shuō)設計后臺產(chǎn)品很難?看看這個(gè)問(wèn)題的回答。
  難參照競品。用戶(hù)只要大量地使用過(guò)別的產(chǎn)品,便會(huì )建立起相應的心智模型。然而后臺對于很多人而言卻非常陌生,毫無(wú)心智模型可言,也難以做競品調研?!崍粤x
  也就是說(shuō)面向大眾用戶(hù)的前臺產(chǎn)品,大家培養起了使用習慣,對功能有一定程度的理解,見(jiàn)過(guò)的模式足夠多,能夠建立起一定的產(chǎn)品模型,也容易找到參照物去模仿。而且,做后臺產(chǎn)品需要非常懂業(yè)務(wù),考驗產(chǎn)品經(jīng)理的核心競爭力——業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力。推薦看:為什么說(shuō)好的產(chǎn)品經(jīng)理一將難求? – 蒸汽機的回答
  開(kāi)始后臺產(chǎn)品設計之前,先找找相類(lèi)似的產(chǎn)品,雖然我們無(wú)法去觀(guān)照其他產(chǎn)品的后臺都是長(cháng)什么樣的,但是現在有不少提供標準化數據分析的SaaS服務(wù)公司,如友盟、諸葛IO。但是為什么我們很難直接采用這些公司的產(chǎn)品來(lái)管理和維護運營(yíng)?軟件運營(yíng)(SaaS)模式的核心是標準化架構+定制化需求,比如體系已經(jīng)成熟的ERP、CRM、OA等管理系統涉及審批流程、財務(wù)審計等更容易標準化生產(chǎn)。而互聯(lián)網(wǎng)產(chǎn)品的業(yè)務(wù)各式各樣,變化不斷,還會(huì )隨時(shí)出現一種全新的業(yè)務(wù)模式,所以后臺產(chǎn)品做到標準化有一定難度。
  我們先看看,類(lèi)似的數據分析平臺。
  百度統計——最大的中文網(wǎng)站分析平臺
  諸葛IO——精細化數據分析工具
  友盟_專(zhuān)業(yè)的移動(dòng)開(kāi)發(fā)者服務(wù)平臺
  TalkingData-移動(dòng).數據.價(jià)值
  蓮子數據首頁(yè)-lotuseed-專(zhuān)業(yè)的移動(dòng)數據分析服務(wù)平臺
  騰訊云分析
  面對公司的社區型產(chǎn)品和運營(yíng)人員提出的需求,發(fā)現以上平臺都難以滿(mǎn)足后臺管理運營(yíng)。但是拆解分析里面的業(yè)務(wù)邏輯能幫助你理解后臺產(chǎn)品的模塊結構。
  
  
  
  
  后臺產(chǎn)品的功能里最容易標準化的就是用戶(hù)分析,新增用戶(hù)、留存率、活躍度等,所以我在設計后臺產(chǎn)品的運營(yíng)數據上很大程度上參考了這些數據分析的結構和模式。而市面上的數據分析工具,最大的問(wèn)題在于,我所知道的工具里還沒(méi)有任何一款可以整合統計不同渠道的數據,也就是說(shuō)PC、H5、iOS、Android分別進(jìn)行統計,假如統計今天多少用戶(hù)進(jìn)行了“點(diǎn)贊”的操作,這個(gè)用戶(hù)行為跟蹤是無(wú)法進(jìn)行全渠道分析,那么分析就被割裂開(kāi)來(lái),難以形成系統。并且大部分是針對移動(dòng)應用,網(wǎng)站分析這一塊只有百度做得相對詳細點(diǎn)。后臺產(chǎn)品是根據業(yè)務(wù)情況定制化需求的,游戲應用、O2O、電商、垂直社區、社交產(chǎn)品都會(huì )有形成巨大差異的后臺產(chǎn)品模型。
  針對我負責的垂直社區來(lái)進(jìn)行下一步分析,結合前臺產(chǎn)品的整體功能,我確定了后臺產(chǎn)品的模型架構分為三大模塊:運營(yíng)數據分析、社區管理、交易中心。運營(yíng)數據分析是用來(lái)監測用戶(hù)和內容的變化趨勢;社區管理是運營(yíng)人員對用戶(hù)和內容進(jìn)行日常的維護和管理;交易中心是用來(lái)記錄交易明細和收支變化趨勢的(社區有打賞和紅包功能)。
  
  運營(yíng)數據分析包括用戶(hù)分析、內容分析和事件分析,其中有用戶(hù)類(lèi)別和渠道兩個(gè)維度。就是說(shuō)每個(gè)分析里面可以針對不同的維度,比如除去內部運營(yíng)人員后今天產(chǎn)生多少點(diǎn)贊數,比如在iOS上今天產(chǎn)生多少點(diǎn)贊數。以下是我考慮功能結構的思路(下面圖片涉及核心業(yè)務(wù)數據將會(huì )模糊處理):
  用戶(hù)分析→用戶(hù)追蹤→新增趨勢+活躍度+留存率+用戶(hù)特征
  內容分析→用戶(hù)生產(chǎn)內容追蹤→新增趨勢+類(lèi)別情況
  事件與轉化→用戶(hù)行為追蹤→事件趨勢+事件交互+事件轉化
  
  社區管理主要包括用戶(hù)管理、內容維護、事件設置。社區管理在一定程度上影響運營(yíng)數據的變化。比如,給用戶(hù)添加標簽生成用戶(hù)畫(huà)像。
  用戶(hù)管理→用戶(hù)特征+用戶(hù)分類(lèi)→用戶(hù)分析
  內容維護→用戶(hù)生產(chǎn)內容管理→分類(lèi)管理+內容監控
  事件設置→用戶(hù)行為管理
  
  交易中心包括總資產(chǎn)概況、交易明細、交易分析,結構比較簡(jiǎn)單,用來(lái)管理社區的財務(wù)和監控財務(wù)數據,與電商平臺復雜的財務(wù)系統相去甚遠。
  
  以上僅僅是提供一種后臺產(chǎn)品模型架構的思路,后臺產(chǎn)品主要由前臺產(chǎn)品模型和業(yè)務(wù)模式?jīng)Q定,不同種類(lèi)的互聯(lián)網(wǎng)產(chǎn)品的后臺可能千差萬(wàn)別,勿直接套用。
  說(shuō)了那么多,是想說(shuō)明后臺產(chǎn)品的設計非常有挑戰性,雖然由于多種原因不像前臺產(chǎn)品那樣是香餑餑,但絕對是個(gè)很好的鍛煉機會(huì )。產(chǎn)品人除了把控流程邏輯和功能細節外,產(chǎn)品模型架構能力來(lái)自于業(yè)務(wù)知識儲備、結構化思維和系統性抽象能力,因為你的思考維度需要跳出單線(xiàn)程的邏輯或單一功能的交互,要進(jìn)化成梳理多線(xiàn)程之間的復雜邏輯或多個(gè)功能之間的交互。
  
  好了,最后貼個(gè)干貨出來(lái),記錄這一次挑戰。
  產(chǎn)品結構
  
  產(chǎn)品原型
  最終產(chǎn)出
  

用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2022-06-21 01:00 ? 來(lái)自相關(guān)話(huà)題

  用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)
  一、短視頻講解
  【問(wèn)股模塊說(shuō)明】
  目前產(chǎn)品經(jīng)理從業(yè)者,都在以移動(dòng)端為主、后臺為次。產(chǎn)品經(jīng)理隨著(zhù)行業(yè)的特殊性,也從無(wú)到有。產(chǎn)品經(jīng)理逐漸成為一個(gè)以行業(yè)主導、前后端分類(lèi)劃分的一個(gè)典“研發(fā)人員”。
  請注意,這里我的用詞是—研發(fā)。對,產(chǎn)品經(jīng)理已經(jīng)不折不扣成為研發(fā)的一個(gè)成語(yǔ)。軟件部、研發(fā)部、架構部等等....無(wú)數的PM在這里孕育而生。
  
  【產(chǎn)品經(jīng)理行業(yè)分類(lèi)】
  目前我從事的是移動(dòng)端產(chǎn)品設計,因此今天分享的是關(guān)于在移動(dòng)端設計的同時(shí),如何進(jìn)行后臺設計?
  二、后臺產(chǎn)品設計——搞清移動(dòng)端需求
  當然在這里,-1-1歲的產(chǎn)品朋友可能會(huì )問(wèn)。產(chǎn)品既然有分端工作,那KEVIN怎么會(huì )說(shuō)后臺設計?你不是從事移動(dòng)端的嗎?
  答案便是,根據公司的戰略布局不同、產(chǎn)品人員的不同,公司的產(chǎn)品經(jīng)理可能是一人全攔。對于目前我從事的工作來(lái)說(shuō),公司產(chǎn)品經(jīng)理不止一個(gè),因此產(chǎn)品的是以模塊進(jìn)行區分,因此剛剛伙伴們可能會(huì )遇到的第一個(gè)困惑,就可能迎刃而解。一個(gè)功能模塊如訂單模塊,那么在前端站前的情況。
  
  【前端與后臺的不同,訂單的出發(fā)點(diǎn)不同】
  以一個(gè)案例來(lái)說(shuō)明,對于前后端這里我拿目前正在負責的一個(gè)模塊:?jiǎn)?wèn)股。
  這個(gè)模塊是證券類(lèi)金融產(chǎn)品的一個(gè)典型模塊,在金融產(chǎn)品中,問(wèn)股的意義其實(shí)就是以公司資源的背景下提供專(zhuān)業(yè)問(wèn)答,換句話(huà)說(shuō)也就是PGC。
  問(wèn)股的常見(jiàn)結構:
  
  【常見(jiàn)的問(wèn)股結構】
  相信以上的結構,問(wèn)股的模塊功能定位,各位非金融行業(yè)的伙伴們也應該能知曉相應的功能含義。
  以這個(gè)模塊,我就以目前公司產(chǎn)品的競品——愛(ài)投顧,以這款產(chǎn)品來(lái)分享如何通過(guò)移動(dòng)端來(lái)考慮后臺設計。
  
  【愛(ài)投顧功能BANNER】
  拋開(kāi)產(chǎn)品體驗不說(shuō),這里我們直接直奔主題。首先我們要考慮的是問(wèn)股這個(gè)模塊他的入口是在哪里?
  關(guān)注否有有運營(yíng)需求
  入口與后臺的關(guān)聯(lián)是沒(méi)有的,但是在運營(yíng)之外的情況下。
  這里我要說(shuō)明的是,問(wèn)股的入口不管放在哪里。他的功能模塊都是A,你放在首頁(yè)也好,還是二級頁(yè)面也好,單獨的模塊功能不會(huì )受影響。
  但在有運營(yíng)的情況下,就需要考慮后臺的設計;相關(guān)的運營(yíng)可能有以下:
  1.優(yōu)惠券——首次A模塊使用是否與優(yōu)惠券的聯(lián)動(dòng)
  2.積分體系——首次A模塊使用是否與積分體系聯(lián)動(dòng)
  .....
  以上列舉出來(lái)的是相關(guān)與A模塊的運營(yíng)方式,后臺會(huì )涉及的便有以下問(wèn)題:
  1.A模塊中對于優(yōu)惠券的管理?
  2.積分體系在A(yíng)模塊中的積分體系設計?
  ....
  移動(dòng)端設計FIRST
  拿到了需求,比如LEARDER說(shuō)這次我需要產(chǎn)品迭代,把問(wèn)股做好一些?;蛘哌\營(yíng)方提供問(wèn)股的模塊需要增加回答中圖文內容....等等,將需求整合在一起,我們首先要開(kāi)始的是移動(dòng)端設計FIRST。
  
  【愛(ài)投顧問(wèn)股頁(yè)面】
  問(wèn)股的頁(yè)面組成,是由其問(wèn)股的結構所決定的,結合運營(yíng)的需求。我們需要將問(wèn)股規劃為:
  
  【內容規劃】
  關(guān)于需求管理
  有時(shí)候需求不一定明確,有的團隊2周一迭代,有的是1個(gè)月一迭代。根據產(chǎn)品的生命周期,我們將迭代的速度也不同。為此,在沒(méi)有需求卻要求迭代該模塊或有不明確的需求迭代該模塊的時(shí)候,對于競品的調研與數據分析則是重點(diǎn),在這里我直接就跳過(guò)。將以上的內容規劃,作為我們這次做的一次迭代需求
  
  【常見(jiàn)的產(chǎn)品迭代命名】
  1.問(wèn)股的內容展示
  問(wèn)股模塊的結構是以UGC與PGC內容為主,UGC為用戶(hù)提的問(wèn)題,PGC為回答者的回答。產(chǎn)品對于用戶(hù)來(lái)說(shuō),問(wèn)題與問(wèn)答的答案為主要關(guān)注的內容,其次對于老師(這里我簡(jiǎn)稱(chēng)老師)的尋找和咨詢(xún),這里作為用戶(hù)核心需求一。
  2.提問(wèn)與回答
  既然提到咨詢(xún),我們可以首先能跟進(jìn)用戶(hù)的不同分類(lèi),將咨詢(xún)分為:普通咨詢(xún)、高級咨詢(xún)、個(gè)性咨詢(xún)...,這里是用戶(hù)的核心需求二。
  3.運營(yíng)推薦
  運營(yíng)推薦,由產(chǎn)品功能本身決定。簡(jiǎn)單來(lái)說(shuō),運營(yíng)將該功能的玩法進(jìn)行推廣,那么從第一部分,我們可以看到問(wèn)股的內容展示既然是用戶(hù)的核心需求一,因此運營(yíng)推薦就應該從用戶(hù)在問(wèn)股的操作路徑進(jìn)行考慮,以留存、促活、拉新為出發(fā)點(diǎn)。
  在問(wèn)股模塊中,用戶(hù)操作路徑:瀏覽、提問(wèn)、點(diǎn)贊。
  毫無(wú)疑問(wèn),提問(wèn)與瀏覽成了我們與用戶(hù)最可能的運營(yíng)結合點(diǎn)。最后考慮瀏覽是否具有垂直粘性,相比之下,我選擇了提問(wèn)作為運營(yíng)的推薦點(diǎn)。
  在提問(wèn)中,用戶(hù)接觸的是PGC,因此在產(chǎn)品設計,如何放大PGC,成了促活的關(guān)鍵。在問(wèn)股中,我們可以得到的是老手的回答次數、以及老師相關(guān)服務(wù)的數據。但在問(wèn)股中,我采用的是將問(wèn)答作為排序,將老師進(jìn)行排名,讓用戶(hù)可以知道7日內活躍的老師,促進(jìn)用戶(hù)去提問(wèn)。
  
  【排名可以刺激PGC】
  老師的收益與盈利點(diǎn),可以通過(guò)排名的機制去刺激PGC。將平臺中的PGC以7日內為時(shí)間段進(jìn)行排序。PGC的提高,毫無(wú)疑問(wèn)會(huì )促進(jìn)UGC的提升。
  那么在移動(dòng)端的展示中,我將以上3部分考慮的結果歸納為:
  
  【移動(dòng)端功能具體化】
  我們具體后,相應的原型就可以通過(guò)上面進(jìn)行展示。從移動(dòng)端顯示的內容,我們可以梳理為:老師推薦、活躍老師排行、問(wèn)股列表、瀏覽的BANNER
  三、后臺產(chǎn)品設計
  現在我們就進(jìn)入后臺產(chǎn)品設計環(huán)節中,對于有經(jīng)驗的PM來(lái)說(shuō),其實(shí)這個(gè)順序不是一定的,可以按照自己的經(jīng)驗程度。但對于0-1歲的產(chǎn)品經(jīng)理來(lái)說(shuō),很難說(shuō)一開(kāi)始就知道移動(dòng)端的功能點(diǎn),著(zhù)手后臺的產(chǎn)品設計。因為后臺的產(chǎn)品設計中,沒(méi)有華麗的交互、沒(méi)有華麗布界面布局,重要的是產(chǎn)品邏輯。
  說(shuō)道這里,首先給大家分享一個(gè)后臺的模板,這個(gè)模板也是我用的比較多的。后臺大多數是以橫向和縱向的分布方式進(jìn)行排列。為什么會(huì )這樣?我想說(shuō)第一是長(cháng)期以來(lái)人們的使用習慣,第二就是人的焦點(diǎn)注視始終是在左上開(kāi)始。
  
  【后臺設計模板】
  不管是數據產(chǎn)品經(jīng)理,還是各行各業(yè)的產(chǎn)品經(jīng)理,后臺設計都可以套用這種橫縱的模板。
  對于問(wèn)股來(lái)說(shuō),我們剛才梳理的第一個(gè)就是關(guān)于問(wèn)股列表。
  問(wèn)股列表,需要考慮的是后臺人員是的角色,角色決定了操作權限。這里我以全局后臺人員(最高權限人員)的角色來(lái)設計。
  問(wèn)股列表,根據我們移動(dòng)端的需求,我們需要能夠隨時(shí)刪除、查看問(wèn)股的內容、時(shí)間、發(fā)布人員、回答人員、問(wèn)股數量的記錄、問(wèn)股的類(lèi)型(付費與普通)。
  這就決定了我在設計后臺中,所需要用的字段。列表的字段正是與前端統統呼應,當然有時(shí)候會(huì )碰到字段太多,這個(gè)時(shí)候PM需要考慮將后臺的重要字段顯示在列表上,方便相應角色去處理,其他不重要但必須有的字段可以作為單獨的查看詳情方式進(jìn)行打開(kāi) 查看全部

  用一個(gè)案例來(lái)講解移動(dòng)端后臺如何設計?(含短視頻教學(xué)分享)
  一、短視頻講解
  【問(wèn)股模塊說(shuō)明】
  目前產(chǎn)品經(jīng)理從業(yè)者,都在以移動(dòng)端為主、后臺為次。產(chǎn)品經(jīng)理隨著(zhù)行業(yè)的特殊性,也從無(wú)到有。產(chǎn)品經(jīng)理逐漸成為一個(gè)以行業(yè)主導、前后端分類(lèi)劃分的一個(gè)典“研發(fā)人員”。
  請注意,這里我的用詞是—研發(fā)。對,產(chǎn)品經(jīng)理已經(jīng)不折不扣成為研發(fā)的一個(gè)成語(yǔ)。軟件部、研發(fā)部、架構部等等....無(wú)數的PM在這里孕育而生。
  
  【產(chǎn)品經(jīng)理行業(yè)分類(lèi)】
  目前我從事的是移動(dòng)端產(chǎn)品設計,因此今天分享的是關(guān)于在移動(dòng)端設計的同時(shí),如何進(jìn)行后臺設計?
  二、后臺產(chǎn)品設計——搞清移動(dòng)端需求
  當然在這里,-1-1歲的產(chǎn)品朋友可能會(huì )問(wèn)。產(chǎn)品既然有分端工作,那KEVIN怎么會(huì )說(shuō)后臺設計?你不是從事移動(dòng)端的嗎?
  答案便是,根據公司的戰略布局不同、產(chǎn)品人員的不同,公司的產(chǎn)品經(jīng)理可能是一人全攔。對于目前我從事的工作來(lái)說(shuō),公司產(chǎn)品經(jīng)理不止一個(gè),因此產(chǎn)品的是以模塊進(jìn)行區分,因此剛剛伙伴們可能會(huì )遇到的第一個(gè)困惑,就可能迎刃而解。一個(gè)功能模塊如訂單模塊,那么在前端站前的情況。
  
  【前端與后臺的不同,訂單的出發(fā)點(diǎn)不同】
  以一個(gè)案例來(lái)說(shuō)明,對于前后端這里我拿目前正在負責的一個(gè)模塊:?jiǎn)?wèn)股。
  這個(gè)模塊是證券類(lèi)金融產(chǎn)品的一個(gè)典型模塊,在金融產(chǎn)品中,問(wèn)股的意義其實(shí)就是以公司資源的背景下提供專(zhuān)業(yè)問(wèn)答,換句話(huà)說(shuō)也就是PGC。
  問(wèn)股的常見(jiàn)結構:
  
  【常見(jiàn)的問(wèn)股結構】
  相信以上的結構,問(wèn)股的模塊功能定位,各位非金融行業(yè)的伙伴們也應該能知曉相應的功能含義。
  以這個(gè)模塊,我就以目前公司產(chǎn)品的競品——愛(ài)投顧,以這款產(chǎn)品來(lái)分享如何通過(guò)移動(dòng)端來(lái)考慮后臺設計。
  
  【愛(ài)投顧功能BANNER】
  拋開(kāi)產(chǎn)品體驗不說(shuō),這里我們直接直奔主題。首先我們要考慮的是問(wèn)股這個(gè)模塊他的入口是在哪里?
  關(guān)注否有有運營(yíng)需求
  入口與后臺的關(guān)聯(lián)是沒(méi)有的,但是在運營(yíng)之外的情況下。
  這里我要說(shuō)明的是,問(wèn)股的入口不管放在哪里。他的功能模塊都是A,你放在首頁(yè)也好,還是二級頁(yè)面也好,單獨的模塊功能不會(huì )受影響。
  但在有運營(yíng)的情況下,就需要考慮后臺的設計;相關(guān)的運營(yíng)可能有以下:
  1.優(yōu)惠券——首次A模塊使用是否與優(yōu)惠券的聯(lián)動(dòng)
  2.積分體系——首次A模塊使用是否與積分體系聯(lián)動(dòng)
  .....
  以上列舉出來(lái)的是相關(guān)與A模塊的運營(yíng)方式,后臺會(huì )涉及的便有以下問(wèn)題:
  1.A模塊中對于優(yōu)惠券的管理?
  2.積分體系在A(yíng)模塊中的積分體系設計?
  ....
  移動(dòng)端設計FIRST
  拿到了需求,比如LEARDER說(shuō)這次我需要產(chǎn)品迭代,把問(wèn)股做好一些?;蛘哌\營(yíng)方提供問(wèn)股的模塊需要增加回答中圖文內容....等等,將需求整合在一起,我們首先要開(kāi)始的是移動(dòng)端設計FIRST。
  
  【愛(ài)投顧問(wèn)股頁(yè)面】
  問(wèn)股的頁(yè)面組成,是由其問(wèn)股的結構所決定的,結合運營(yíng)的需求。我們需要將問(wèn)股規劃為:
  
  【內容規劃】
  關(guān)于需求管理
  有時(shí)候需求不一定明確,有的團隊2周一迭代,有的是1個(gè)月一迭代。根據產(chǎn)品的生命周期,我們將迭代的速度也不同。為此,在沒(méi)有需求卻要求迭代該模塊或有不明確的需求迭代該模塊的時(shí)候,對于競品的調研與數據分析則是重點(diǎn),在這里我直接就跳過(guò)。將以上的內容規劃,作為我們這次做的一次迭代需求
  
  【常見(jiàn)的產(chǎn)品迭代命名】
  1.問(wèn)股的內容展示
  問(wèn)股模塊的結構是以UGC與PGC內容為主,UGC為用戶(hù)提的問(wèn)題,PGC為回答者的回答。產(chǎn)品對于用戶(hù)來(lái)說(shuō),問(wèn)題與問(wèn)答的答案為主要關(guān)注的內容,其次對于老師(這里我簡(jiǎn)稱(chēng)老師)的尋找和咨詢(xún),這里作為用戶(hù)核心需求一。
  2.提問(wèn)與回答
  既然提到咨詢(xún),我們可以首先能跟進(jìn)用戶(hù)的不同分類(lèi),將咨詢(xún)分為:普通咨詢(xún)、高級咨詢(xún)、個(gè)性咨詢(xún)...,這里是用戶(hù)的核心需求二。
  3.運營(yíng)推薦
  運營(yíng)推薦,由產(chǎn)品功能本身決定。簡(jiǎn)單來(lái)說(shuō),運營(yíng)將該功能的玩法進(jìn)行推廣,那么從第一部分,我們可以看到問(wèn)股的內容展示既然是用戶(hù)的核心需求一,因此運營(yíng)推薦就應該從用戶(hù)在問(wèn)股的操作路徑進(jìn)行考慮,以留存、促活、拉新為出發(fā)點(diǎn)。
  在問(wèn)股模塊中,用戶(hù)操作路徑:瀏覽、提問(wèn)、點(diǎn)贊。
  毫無(wú)疑問(wèn),提問(wèn)與瀏覽成了我們與用戶(hù)最可能的運營(yíng)結合點(diǎn)。最后考慮瀏覽是否具有垂直粘性,相比之下,我選擇了提問(wèn)作為運營(yíng)的推薦點(diǎn)。
  在提問(wèn)中,用戶(hù)接觸的是PGC,因此在產(chǎn)品設計,如何放大PGC,成了促活的關(guān)鍵。在問(wèn)股中,我們可以得到的是老手的回答次數、以及老師相關(guān)服務(wù)的數據。但在問(wèn)股中,我采用的是將問(wèn)答作為排序,將老師進(jìn)行排名,讓用戶(hù)可以知道7日內活躍的老師,促進(jìn)用戶(hù)去提問(wèn)。
  
  【排名可以刺激PGC】
  老師的收益與盈利點(diǎn),可以通過(guò)排名的機制去刺激PGC。將平臺中的PGC以7日內為時(shí)間段進(jìn)行排序。PGC的提高,毫無(wú)疑問(wèn)會(huì )促進(jìn)UGC的提升。
  那么在移動(dòng)端的展示中,我將以上3部分考慮的結果歸納為:
  
  【移動(dòng)端功能具體化】
  我們具體后,相應的原型就可以通過(guò)上面進(jìn)行展示。從移動(dòng)端顯示的內容,我們可以梳理為:老師推薦、活躍老師排行、問(wèn)股列表、瀏覽的BANNER
  三、后臺產(chǎn)品設計
  現在我們就進(jìn)入后臺產(chǎn)品設計環(huán)節中,對于有經(jīng)驗的PM來(lái)說(shuō),其實(shí)這個(gè)順序不是一定的,可以按照自己的經(jīng)驗程度。但對于0-1歲的產(chǎn)品經(jīng)理來(lái)說(shuō),很難說(shuō)一開(kāi)始就知道移動(dòng)端的功能點(diǎn),著(zhù)手后臺的產(chǎn)品設計。因為后臺的產(chǎn)品設計中,沒(méi)有華麗的交互、沒(méi)有華麗布界面布局,重要的是產(chǎn)品邏輯。
  說(shuō)道這里,首先給大家分享一個(gè)后臺的模板,這個(gè)模板也是我用的比較多的。后臺大多數是以橫向和縱向的分布方式進(jìn)行排列。為什么會(huì )這樣?我想說(shuō)第一是長(cháng)期以來(lái)人們的使用習慣,第二就是人的焦點(diǎn)注視始終是在左上開(kāi)始。
  
  【后臺設計模板】
  不管是數據產(chǎn)品經(jīng)理,還是各行各業(yè)的產(chǎn)品經(jīng)理,后臺設計都可以套用這種橫縱的模板。
  對于問(wèn)股來(lái)說(shuō),我們剛才梳理的第一個(gè)就是關(guān)于問(wèn)股列表。
  問(wèn)股列表,需要考慮的是后臺人員是的角色,角色決定了操作權限。這里我以全局后臺人員(最高權限人員)的角色來(lái)設計。
  問(wèn)股列表,根據我們移動(dòng)端的需求,我們需要能夠隨時(shí)刪除、查看問(wèn)股的內容、時(shí)間、發(fā)布人員、回答人員、問(wèn)股數量的記錄、問(wèn)股的類(lèi)型(付費與普通)。
  這就決定了我在設計后臺中,所需要用的字段。列表的字段正是與前端統統呼應,當然有時(shí)候會(huì )碰到字段太多,這個(gè)時(shí)候PM需要考慮將后臺的重要字段顯示在列表上,方便相應角色去處理,其他不重要但必須有的字段可以作為單獨的查看詳情方式進(jìn)行打開(kāi)

后臺系統:產(chǎn)品設計“七步法”

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 112 次瀏覽 ? 2022-06-19 09:01 ? 來(lái)自相關(guān)話(huà)題

  后臺系統:產(chǎn)品設計“七步法”
  后臺產(chǎn)品設計是一塊讓產(chǎn)品經(jīng)理難啃的硬骨頭,因為它業(yè)務(wù)復雜、數據龐大、邏輯縝密。
  1.了解后臺
  在做后臺產(chǎn)品設計之前,我們先從硬幣的三個(gè)面了解一下后臺系統。從硬幣正面看后臺:可以減輕運營(yíng)的壓力,注重數據之間的流轉,側重功能模塊的實(shí)現。從硬幣反面看后臺:設計風(fēng)格過(guò)于單一,業(yè)務(wù)邏輯復雜,缺少對應的系統說(shuō)明。從硬幣側面看后臺:數據處理準確有效,操作流程簡(jiǎn)單,系統簡(jiǎn)單好用。
  
  后臺系統就是給用戶(hù)分配一個(gè)有某些權限(菜單級)的角色,對特定數據(數據級)進(jìn)行增刪改查導(功能級)的管理系統。
  了解后臺必須熟悉前端業(yè)務(wù),前端偏向用戶(hù)(功能操作)查看信息、提交信息,而后臺側重管理員(數據處理)創(chuàng )建信息、處理信息,而服務(wù)器(信息傳遞)主要是請求信息、響應信息。
  
  常見(jiàn)后臺系統包括:內容管理系統CMS,企業(yè)管理系統ERP、客戶(hù)關(guān)系管理系統CRM、商城管理系統MMS,辦公自動(dòng)化系統OA等。
  一個(gè)好的后臺系統會(huì )有以下幾個(gè)特點(diǎn):1.系統目標明確:輔助用戶(hù)自主完成任務(wù),減輕運營(yíng)壓力。2.用戶(hù)需求明確:需求一般來(lái)至是企業(yè)內部的領(lǐng)導、團隊或業(yè)務(wù)部門(mén)。3.注重運轉效率:以功能實(shí)現為目的,注重提高系統各個(gè)環(huán)節的運轉效率。4.注重系統業(yè)務(wù):以業(yè)務(wù)導向為目的,注重整個(gè)系統業(yè)務(wù)流程和相關(guān)模塊的邏輯清晰。
  2.梳理業(yè)務(wù)
  后臺產(chǎn)品設計的關(guān)鍵是梳理業(yè)務(wù)邏輯。業(yè)務(wù)邏輯是業(yè)務(wù)層的邏輯,是整個(gè)系統層的邏輯。在設計上要考慮如何讓業(yè)務(wù)流更加完整,讓工作流形成一個(gè)閉環(huán)。
  對產(chǎn)品經(jīng)理而言,梳理業(yè)務(wù)邏輯更多是改變自己的設計策略。常見(jiàn)的梳理業(yè)務(wù)方式有需求分析、場(chǎng)景分析、架構設計、功能規劃、UML建模、用戶(hù)地圖、交互自查等。
  
  后臺產(chǎn)品一般采用需求驅動(dòng)設計的方式。需求是業(yè)務(wù)驅動(dòng)或技術(shù)驅動(dòng)的核心。需求驅動(dòng)設計就是根據相關(guān)業(yè)務(wù)部門(mén)提出的需求,進(jìn)行后臺產(chǎn)品設計。
  
  后臺產(chǎn)品一般是給公司內部員工使用的,不同的業(yè)務(wù)部門(mén)會(huì )有不同的業(yè)務(wù)需求,不同的業(yè)務(wù)需求會(huì )有不同的業(yè)務(wù)場(chǎng)景。對于業(yè)務(wù)邏輯復雜的后臺系統,越是需求多樣化場(chǎng)景,越要做需求場(chǎng)景分析,我們可以根據需求池寫(xiě)需求用例。
  當我們收集到了相關(guān)業(yè)務(wù)部門(mén)的需求后,首先對需求優(yōu)先級排序,其次對需求進(jìn)行拆解與分析,然后形成不同的功能規劃,最后把這些需求體現在后臺原型中。
  此外,產(chǎn)品結構設計也是梳理業(yè)務(wù)邏輯很重要的一部分。產(chǎn)品結構設計側重基于功能構建產(chǎn)品的整體架構,主要是梳理產(chǎn)品框架和基本功能。一般會(huì )設計功能結構圖、信息結構圖、結構圖。
  
  3.確定布局
  在后臺產(chǎn)品設計之前,我們需要確定它的框架結構,確定框架結構可以保證頁(yè)面布局、排版形式的一致性。后臺設計的標準布局為柵欄設計,頁(yè)面尺寸為1440*900。
  
  后臺系統的結構主要包括三個(gè)部分:導航區域、功能區域、內容區域。導航區域分為單層級和多層級導航,包括Logo、菜單欄。功能區域包括賬戶(hù)中心、消息通知、修改密碼、安全退出。內容區域的包括篩選條件、列表、分頁(yè)、詳情頁(yè)等。
  4.字段設計
  字段設計是后臺設計中最基礎的部分,但卻是數據結構中最重要的部分。
  字段設計分為三個(gè)步驟:匯總字段,處理字段,設計字段。字段設計要考慮的維度有:所屬對象、類(lèi)型、是否必填、來(lái)源、長(cháng)度。常見(jiàn)的字段類(lèi)型有:業(yè)務(wù)型字段、系統型字段、管理型字段、規則型字段。
  
  以P2P網(wǎng)貸系統的標的為例:標的詳情會(huì )展示標名、期限、利率、借款金額、還款方式等;標的登記會(huì )記錄登記時(shí)間、審核人、審核時(shí)間等;標的流標會(huì )記錄審核內容、日志信息、操作信息等;標的放款會(huì )記錄滿(mǎn)標時(shí)間、放款時(shí)間、放款狀態(tài)等。
  5.流程設計
  流程設計是梳理業(yè)務(wù)邏輯的最好方法之一。好的流程設計,不僅讓產(chǎn)品功能形成閉環(huán),也遵循用戶(hù)的心理模型,此外,用戶(hù)會(huì )感受到后臺系統操作的簡(jiǎn)單高效。
  流程設計是決定產(chǎn)品是否可用、易用的重要因素,同時(shí)也是區分一個(gè)產(chǎn)品經(jīng)理邏輯分析能力高低的重要體現。
  在產(chǎn)品從想法過(guò)渡到模型的階段,流程設計以動(dòng)作來(lái)推動(dòng)業(yè)務(wù)前進(jìn)。流程設計描述的是完整的業(yè)務(wù)流程,可以梳理功能模塊、業(yè)務(wù)邏輯與使用路徑。常見(jiàn)的流程有:業(yè)務(wù)流程、功能流程、操作流程、頁(yè)面流程、數據流程等。
  以標的登記審核流程為例:我們以泳道圖的形式,設計ERP系統、P2P系統和存管系統的業(yè)務(wù)流程,風(fēng)控專(zhuān)員在ERP系統提交標的進(jìn)件后,風(fēng)控主管會(huì )在P2P系統后臺進(jìn)行初審和復核,之后再推送到存管系統進(jìn)行終審,在這個(gè)過(guò)程會(huì )形成動(dòng)態(tài)的標的登記審核流程。
  
  6.規則設計
  規則設計的目的是確保規則的業(yè)務(wù)表現和業(yè)務(wù)目標相匹配,根本作用是流程控制與數據驗證。
  業(yè)務(wù)規則描述了業(yè)務(wù)過(guò)程中重要的對象、關(guān)系和活動(dòng)。業(yè)務(wù)規則包括功能范圍、操作流程、業(yè)務(wù)規范、約束條件和功能說(shuō)明等。
  
  對于業(yè)務(wù)規則來(lái)說(shuō),為了方便對規則的新增、變更與廢棄進(jìn)行跟蹤管理,需做版本控制。以貸超產(chǎn)品MVP設計為例,我們會(huì )將業(yè)務(wù)分為核心業(yè)務(wù)部分、業(yè)務(wù)支持部分和非業(yè)務(wù)部分,然后把業(yè)務(wù)規則進(jìn)行清晰、明確、可量化的場(chǎng)景描述,并做好階段反饋。
  
  規則設計最有效的方式是建立規則引擎。規則引擎可以在不同的時(shí)間節點(diǎn)觸發(fā)業(yè)務(wù)規則,且能幫助我們在系統中有效的執行和管理規則。
  7.原型設計
  當我們清楚需求、流程和規則后,會(huì )通過(guò)Axure把想法轉換成可以需求落地的原型。
  原型設計的目標是把規劃的功能、流程展現出來(lái),將需求轉化為可以給需求方、開(kāi)發(fā)人員和測試人員演示的Demo。方便需求對稱(chēng)與問(wèn)題溝通,確保用戶(hù)需求、使用場(chǎng)景的合理性,從而推動(dòng)產(chǎn)品迭代。
  常見(jiàn)的原型設計方式有手繪原型、灰模原型、交互原型。產(chǎn)品經(jīng)理一般是畫(huà)低保真的手繪原型或灰模原型。
  手繪原型有助于帶動(dòng)思維。在項目立項階段的頭腦風(fēng)暴和概念測試,手繪原型在初期驗證想法時(shí)非常高效,也方便討論,同時(shí)也適合敏捷開(kāi)發(fā)時(shí)快速出原型。因此手繪原型是最簡(jiǎn)單、快速的表現產(chǎn)品輪廓的方式之一。
  
  灰模原型可將產(chǎn)品需求以線(xiàn)框結構的方式展示出來(lái),讓需求和想法更加直觀(guān)得展現。畫(huà)灰模原型時(shí),所有的元素,除了組件自帶的顏色,只用灰黑白。此外,我們要在軟件需求中說(shuō)明所有頁(yè)面展示、功能狀態(tài)和業(yè)務(wù)規則。
  
  無(wú)論從0到1做后臺,還是系統重構,后臺產(chǎn)品設計是產(chǎn)品進(jìn)階必備的基本能力。既能逐步鍛煉產(chǎn)品經(jīng)理的設計邏輯思維,也能快速了解公司的業(yè)務(wù)流程。 查看全部

  后臺系統:產(chǎn)品設計“七步法”
  后臺產(chǎn)品設計是一塊讓產(chǎn)品經(jīng)理難啃的硬骨頭,因為它業(yè)務(wù)復雜、數據龐大、邏輯縝密。
  1.了解后臺
  在做后臺產(chǎn)品設計之前,我們先從硬幣的三個(gè)面了解一下后臺系統。從硬幣正面看后臺:可以減輕運營(yíng)的壓力,注重數據之間的流轉,側重功能模塊的實(shí)現。從硬幣反面看后臺:設計風(fēng)格過(guò)于單一,業(yè)務(wù)邏輯復雜,缺少對應的系統說(shuō)明。從硬幣側面看后臺:數據處理準確有效,操作流程簡(jiǎn)單,系統簡(jiǎn)單好用。
  
  后臺系統就是給用戶(hù)分配一個(gè)有某些權限(菜單級)的角色,對特定數據(數據級)進(jìn)行增刪改查導(功能級)的管理系統。
  了解后臺必須熟悉前端業(yè)務(wù),前端偏向用戶(hù)(功能操作)查看信息、提交信息,而后臺側重管理員(數據處理)創(chuàng )建信息、處理信息,而服務(wù)器(信息傳遞)主要是請求信息、響應信息。
  
  常見(jiàn)后臺系統包括:內容管理系統CMS,企業(yè)管理系統ERP、客戶(hù)關(guān)系管理系統CRM、商城管理系統MMS,辦公自動(dòng)化系統OA等。
  一個(gè)好的后臺系統會(huì )有以下幾個(gè)特點(diǎn):1.系統目標明確:輔助用戶(hù)自主完成任務(wù),減輕運營(yíng)壓力。2.用戶(hù)需求明確:需求一般來(lái)至是企業(yè)內部的領(lǐng)導、團隊或業(yè)務(wù)部門(mén)。3.注重運轉效率:以功能實(shí)現為目的,注重提高系統各個(gè)環(huán)節的運轉效率。4.注重系統業(yè)務(wù):以業(yè)務(wù)導向為目的,注重整個(gè)系統業(yè)務(wù)流程和相關(guān)模塊的邏輯清晰。
  2.梳理業(yè)務(wù)
  后臺產(chǎn)品設計的關(guān)鍵是梳理業(yè)務(wù)邏輯。業(yè)務(wù)邏輯是業(yè)務(wù)層的邏輯,是整個(gè)系統層的邏輯。在設計上要考慮如何讓業(yè)務(wù)流更加完整,讓工作流形成一個(gè)閉環(huán)。
  對產(chǎn)品經(jīng)理而言,梳理業(yè)務(wù)邏輯更多是改變自己的設計策略。常見(jiàn)的梳理業(yè)務(wù)方式有需求分析、場(chǎng)景分析、架構設計、功能規劃、UML建模、用戶(hù)地圖、交互自查等。
  
  后臺產(chǎn)品一般采用需求驅動(dòng)設計的方式。需求是業(yè)務(wù)驅動(dòng)或技術(shù)驅動(dòng)的核心。需求驅動(dòng)設計就是根據相關(guān)業(yè)務(wù)部門(mén)提出的需求,進(jìn)行后臺產(chǎn)品設計。
  
  后臺產(chǎn)品一般是給公司內部員工使用的,不同的業(yè)務(wù)部門(mén)會(huì )有不同的業(yè)務(wù)需求,不同的業(yè)務(wù)需求會(huì )有不同的業(yè)務(wù)場(chǎng)景。對于業(yè)務(wù)邏輯復雜的后臺系統,越是需求多樣化場(chǎng)景,越要做需求場(chǎng)景分析,我們可以根據需求池寫(xiě)需求用例。
  當我們收集到了相關(guān)業(yè)務(wù)部門(mén)的需求后,首先對需求優(yōu)先級排序,其次對需求進(jìn)行拆解與分析,然后形成不同的功能規劃,最后把這些需求體現在后臺原型中。
  此外,產(chǎn)品結構設計也是梳理業(yè)務(wù)邏輯很重要的一部分。產(chǎn)品結構設計側重基于功能構建產(chǎn)品的整體架構,主要是梳理產(chǎn)品框架和基本功能。一般會(huì )設計功能結構圖、信息結構圖、結構圖。
  
  3.確定布局
  在后臺產(chǎn)品設計之前,我們需要確定它的框架結構,確定框架結構可以保證頁(yè)面布局、排版形式的一致性。后臺設計的標準布局為柵欄設計,頁(yè)面尺寸為1440*900。
  
  后臺系統的結構主要包括三個(gè)部分:導航區域、功能區域、內容區域。導航區域分為單層級和多層級導航,包括Logo、菜單欄。功能區域包括賬戶(hù)中心、消息通知、修改密碼、安全退出。內容區域的包括篩選條件、列表、分頁(yè)、詳情頁(yè)等。
  4.字段設計
  字段設計是后臺設計中最基礎的部分,但卻是數據結構中最重要的部分。
  字段設計分為三個(gè)步驟:匯總字段,處理字段,設計字段。字段設計要考慮的維度有:所屬對象、類(lèi)型、是否必填、來(lái)源、長(cháng)度。常見(jiàn)的字段類(lèi)型有:業(yè)務(wù)型字段、系統型字段、管理型字段、規則型字段。
  
  以P2P網(wǎng)貸系統的標的為例:標的詳情會(huì )展示標名、期限、利率、借款金額、還款方式等;標的登記會(huì )記錄登記時(shí)間、審核人、審核時(shí)間等;標的流標會(huì )記錄審核內容、日志信息、操作信息等;標的放款會(huì )記錄滿(mǎn)標時(shí)間、放款時(shí)間、放款狀態(tài)等。
  5.流程設計
  流程設計是梳理業(yè)務(wù)邏輯的最好方法之一。好的流程設計,不僅讓產(chǎn)品功能形成閉環(huán),也遵循用戶(hù)的心理模型,此外,用戶(hù)會(huì )感受到后臺系統操作的簡(jiǎn)單高效。
  流程設計是決定產(chǎn)品是否可用、易用的重要因素,同時(shí)也是區分一個(gè)產(chǎn)品經(jīng)理邏輯分析能力高低的重要體現。
  在產(chǎn)品從想法過(guò)渡到模型的階段,流程設計以動(dòng)作來(lái)推動(dòng)業(yè)務(wù)前進(jìn)。流程設計描述的是完整的業(yè)務(wù)流程,可以梳理功能模塊、業(yè)務(wù)邏輯與使用路徑。常見(jiàn)的流程有:業(yè)務(wù)流程、功能流程、操作流程、頁(yè)面流程、數據流程等。
  以標的登記審核流程為例:我們以泳道圖的形式,設計ERP系統、P2P系統和存管系統的業(yè)務(wù)流程,風(fēng)控專(zhuān)員在ERP系統提交標的進(jìn)件后,風(fēng)控主管會(huì )在P2P系統后臺進(jìn)行初審和復核,之后再推送到存管系統進(jìn)行終審,在這個(gè)過(guò)程會(huì )形成動(dòng)態(tài)的標的登記審核流程。
  
  6.規則設計
  規則設計的目的是確保規則的業(yè)務(wù)表現和業(yè)務(wù)目標相匹配,根本作用是流程控制與數據驗證。
  業(yè)務(wù)規則描述了業(yè)務(wù)過(guò)程中重要的對象、關(guān)系和活動(dòng)。業(yè)務(wù)規則包括功能范圍、操作流程、業(yè)務(wù)規范、約束條件和功能說(shuō)明等。
  
  對于業(yè)務(wù)規則來(lái)說(shuō),為了方便對規則的新增、變更與廢棄進(jìn)行跟蹤管理,需做版本控制。以貸超產(chǎn)品MVP設計為例,我們會(huì )將業(yè)務(wù)分為核心業(yè)務(wù)部分、業(yè)務(wù)支持部分和非業(yè)務(wù)部分,然后把業(yè)務(wù)規則進(jìn)行清晰、明確、可量化的場(chǎng)景描述,并做好階段反饋。
  
  規則設計最有效的方式是建立規則引擎。規則引擎可以在不同的時(shí)間節點(diǎn)觸發(fā)業(yè)務(wù)規則,且能幫助我們在系統中有效的執行和管理規則。
  7.原型設計
  當我們清楚需求、流程和規則后,會(huì )通過(guò)Axure把想法轉換成可以需求落地的原型。
  原型設計的目標是把規劃的功能、流程展現出來(lái),將需求轉化為可以給需求方、開(kāi)發(fā)人員和測試人員演示的Demo。方便需求對稱(chēng)與問(wèn)題溝通,確保用戶(hù)需求、使用場(chǎng)景的合理性,從而推動(dòng)產(chǎn)品迭代。
  常見(jiàn)的原型設計方式有手繪原型、灰模原型、交互原型。產(chǎn)品經(jīng)理一般是畫(huà)低保真的手繪原型或灰模原型。
  手繪原型有助于帶動(dòng)思維。在項目立項階段的頭腦風(fēng)暴和概念測試,手繪原型在初期驗證想法時(shí)非常高效,也方便討論,同時(shí)也適合敏捷開(kāi)發(fā)時(shí)快速出原型。因此手繪原型是最簡(jiǎn)單、快速的表現產(chǎn)品輪廓的方式之一。
  
  灰模原型可將產(chǎn)品需求以線(xiàn)框結構的方式展示出來(lái),讓需求和想法更加直觀(guān)得展現。畫(huà)灰模原型時(shí),所有的元素,除了組件自帶的顏色,只用灰黑白。此外,我們要在軟件需求中說(shuō)明所有頁(yè)面展示、功能狀態(tài)和業(yè)務(wù)規則。
  
  無(wú)論從0到1做后臺,還是系統重構,后臺產(chǎn)品設計是產(chǎn)品進(jìn)階必備的基本能力。既能逐步鍛煉產(chǎn)品經(jīng)理的設計邏輯思維,也能快速了解公司的業(yè)務(wù)流程。

10張圖,系統掃盲管理后臺產(chǎn)品設計思路

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2022-06-19 08:52 ? 來(lái)自相關(guān)話(huà)題

  10張圖,系統掃盲管理后臺產(chǎn)品設計思路
  
  ??產(chǎn)品思維模型 ·用產(chǎn)品思維,理解世界
  閱讀本文大概需要6分鐘。
  大家好,見(jiàn)字如面,我是穆寧。
  今天,給大家系統講解下,管理后臺的設計思路。同時(shí),也是為沒(méi)有做過(guò)管理后臺產(chǎn)品的同學(xué),做一下系統掃盲。
  做產(chǎn)品有個(gè)基本設定:
  定位確定需求,需求確定功能。
  所以管理后臺從某種意義上必然是滿(mǎn)足了某類(lèi)需求的,我們就從需求說(shuō)起,聊一聊管理后臺。
  從需求類(lèi)型和使用人員來(lái)看管理后臺大致分為以下幾類(lèi):
  業(yè)務(wù)類(lèi):
  主要聚焦實(shí)際業(yè)務(wù),管理后臺主要進(jìn)行業(yè)務(wù)資源的提交、處理、優(yōu)化等一系列操作,使用者以運營(yíng)人員為主。
  比如電商類(lèi)、各種任務(wù)類(lèi)產(chǎn)品,這其中廣告類(lèi)的DSP和SSP相對特殊一些,使用者屬于平臺的合作方,主要解決商業(yè)訴求,簡(jiǎn)單講DSP是廣告主花錢(qián)買(mǎi)流量打廣告,SSP是流量主有流量想變現接廣告。
  協(xié)作類(lèi):
  主要是多人在線(xiàn)合作,共同完成既定任務(wù),使用者多為團隊成員,內容也圍繞具體項目開(kāi)展,主要是任務(wù)的發(fā)布,查看,協(xié)作執行,到最終完成。
  這里面需要注意的地方有兩個(gè):
  第一是各個(gè)帳號的配置,因為涉及到人員協(xié)作,所以各個(gè)角色及對應權限比較重要,不同帳號對不同模塊的增刪改查不同,比如有些人看不到某些模塊,有些人只能查看,有些人可以修改,有些可以增刪改查,擁有項目的全部權限;
  第二個(gè)是任務(wù)的設定相關(guān),比如優(yōu)先級,執行日期,關(guān)聯(lián)文件,細分子任務(wù),執行人,參與人等。
  銷(xiāo)售管理類(lèi):
  主要是針對銷(xiāo)售任務(wù)的拆解分配,以及下線(xiàn)成員的錄入統計上報,使用人員多數以銷(xiāo)售人員及其上級。
  相比前面的協(xié)作類(lèi),銷(xiāo)售類(lèi)除了分帳號,不同模塊授權以外,還要多一層設定:
  各個(gè)帳號的不同層級及隸屬關(guān)系,方便各級管理人員給下線(xiàn)的任務(wù)分配及后續的上報統計功能。
  以上是從需求類(lèi)型及使用人員的角度看管理后臺。
  如果從開(kāi)發(fā)實(shí)現角度來(lái)講就是另一番景象了,從實(shí)現來(lái)看管理后臺本質(zhì)上和產(chǎn)品前端基本類(lèi)似:
  視覺(jué)層通過(guò)一些頁(yè)面和使用者交互,提出需求;
  邏輯層接口程序負責實(shí)現處理;
  當脫離具體業(yè)務(wù),進(jìn)入數據層后,我們會(huì )發(fā)現其實(shí)所有的操作就是:
  對數據的增刪改查,歸類(lèi)到行為就是兩個(gè):
  不同視角看同一個(gè)事物會(huì )有不同的效果,這正是世界的美妙迷人之處。
  下面我們再聊聊從產(chǎn)品設計角度看管理后臺。
  把用戶(hù)需求轉化為產(chǎn)品需求后,管理后臺的設計主要分為以下幾個(gè)模塊:
  賬戶(hù)管理:主要涉及帳號,密碼,信息,資質(zhì),認證。
  協(xié)作類(lèi)還包括分帳號及針對不同模塊的權限管理,以及銷(xiāo)售管理類(lèi)的各級隸屬關(guān)系的設置均在此模塊完成。
  用戶(hù)管理:是負責平臺用戶(hù)的模塊,主要包括用戶(hù)列表和詳情,通過(guò)該模塊可以對平臺用戶(hù)統一查看管理,主要包括用戶(hù)在該產(chǎn)品中的各維度信息,帳號,昵稱(chēng),頭像,等級及各個(gè)行為記錄。
  資源管理:是指對產(chǎn)品的資源進(jìn)行發(fā)布提交。比如電商類(lèi)產(chǎn)品的商品增刪改查管理,任務(wù)類(lèi)產(chǎn)品的各項任務(wù)發(fā)布,再比如DSP和SSP中的物料素材,媒體,廣告位的增刪改查管理,一般都在這模塊體現。
  任務(wù)管理:主要是針對資源管理里提交發(fā)布的資源,用戶(hù)會(huì )在產(chǎn)品前端進(jìn)行操作,管理后臺對用戶(hù)行為進(jìn)行處理審核。比如DSP和SSP中,類(lèi)似的操作具化為投放管理,需要創(chuàng )建推廣計劃(訂單),推廣單元(具體廣告投放),確認對應的展現物料,投放策略(時(shí)間,計價(jià)方式,單價(jià),日限額,媒體展現類(lèi)型:開(kāi)屏,橫幅,插屏還是原生廣告)以及定向條件(投放時(shí)段,地域及用戶(hù)群體),協(xié)作類(lèi)的任務(wù)完成,銷(xiāo)售類(lèi)的執行情況錄入均在該模塊進(jìn)行動(dòng)態(tài)處理。
  效果管理:主要包括任務(wù)的執行效果和產(chǎn)品的預期效益。電商類(lèi)產(chǎn)品主要監測各個(gè)狀態(tài)的訂單數量,成交金額及利潤(待付款,待發(fā)貨,待收貨,待評價(jià),已完成),任務(wù)類(lèi)產(chǎn)品情況類(lèi)似,主要評估任務(wù)的完成效果(數量和金額),廣告類(lèi)的DSP和SSP則主要看曝光量,點(diǎn)擊量,CTR,平均單次消費,總消費,統計維度從流量主角度有廣告位,頻道,媒體,廣告主角度有物料,推廣單元,推廣計劃。還有一些從整體產(chǎn)品規模尺度上進(jìn)行效果衡量:PV,UV,IP,新增,活躍,留存,累計用戶(hù)等,然后第二步是數據分析,即基于執行結果的效果數據,進(jìn)行后續動(dòng)作的調整優(yōu)化。
  總體來(lái)講效果管理的兩個(gè)主要目的:結果展示和分析調整。
  財務(wù)管理:相對簡(jiǎn)單些,但也相對重要些。主要兩大塊:
  一是財務(wù)賬戶(hù)的信息管理(對公對私,各種支付方式)。
  二是各項記錄,有賺錢(qián)方的:收益,提現,審核,余額管理,花錢(qián)方的:充值,消費,凍結,余額管理。
  以上從產(chǎn)品設計角度簡(jiǎn)要概述管理后臺各模塊,當然行業(yè)不同,涉及具體功能自然不同。
  比如有些需要單獨設計策略管理模塊,再比如同為資源管理,但具體資源類(lèi)型及操作卻相差很大,但總體思路是一致的:
  需求決定功能。
  聊到此處,管理后臺的用處和模樣估計各位有了個(gè)大概的印象,至于真要深入理解,還要在實(shí)際工作中去用心體會(huì )了。紙上得來(lái)終覺(jué)淺,絕知此事要躬行。
  下面奉上10個(gè)管理后臺頁(yè)面模板,供大家參考。
  1 .基于layui的后臺管理系統
  
  2.LayUI組件模板
  3.模塊化后臺管理模板
  4.LarryCMS后臺管理
  
  5.bootstrap英文后臺管理模板
  6.購物網(wǎng)站后臺
  
  7.基于bootstrap的統一開(kāi)發(fā)平臺
  8.物流大數據平臺
  
  9.智慧物流
  10.layers后臺界面
   查看全部

  10張圖,系統掃盲管理后臺產(chǎn)品設計思路
  
  ??產(chǎn)品思維模型 ·用產(chǎn)品思維,理解世界
  閱讀本文大概需要6分鐘。
  大家好,見(jiàn)字如面,我是穆寧。
  今天,給大家系統講解下,管理后臺的設計思路。同時(shí),也是為沒(méi)有做過(guò)管理后臺產(chǎn)品的同學(xué),做一下系統掃盲。
  做產(chǎn)品有個(gè)基本設定:
  定位確定需求,需求確定功能。
  所以管理后臺從某種意義上必然是滿(mǎn)足了某類(lèi)需求的,我們就從需求說(shuō)起,聊一聊管理后臺。
  從需求類(lèi)型和使用人員來(lái)看管理后臺大致分為以下幾類(lèi):
  業(yè)務(wù)類(lèi):
  主要聚焦實(shí)際業(yè)務(wù),管理后臺主要進(jìn)行業(yè)務(wù)資源的提交、處理、優(yōu)化等一系列操作,使用者以運營(yíng)人員為主。
  比如電商類(lèi)、各種任務(wù)類(lèi)產(chǎn)品,這其中廣告類(lèi)的DSP和SSP相對特殊一些,使用者屬于平臺的合作方,主要解決商業(yè)訴求,簡(jiǎn)單講DSP是廣告主花錢(qián)買(mǎi)流量打廣告,SSP是流量主有流量想變現接廣告。
  協(xié)作類(lèi):
  主要是多人在線(xiàn)合作,共同完成既定任務(wù),使用者多為團隊成員,內容也圍繞具體項目開(kāi)展,主要是任務(wù)的發(fā)布,查看,協(xié)作執行,到最終完成。
  這里面需要注意的地方有兩個(gè):
  第一是各個(gè)帳號的配置,因為涉及到人員協(xié)作,所以各個(gè)角色及對應權限比較重要,不同帳號對不同模塊的增刪改查不同,比如有些人看不到某些模塊,有些人只能查看,有些人可以修改,有些可以增刪改查,擁有項目的全部權限;
  第二個(gè)是任務(wù)的設定相關(guān),比如優(yōu)先級,執行日期,關(guān)聯(lián)文件,細分子任務(wù),執行人,參與人等。
  銷(xiāo)售管理類(lèi):
  主要是針對銷(xiāo)售任務(wù)的拆解分配,以及下線(xiàn)成員的錄入統計上報,使用人員多數以銷(xiāo)售人員及其上級。
  相比前面的協(xié)作類(lèi),銷(xiāo)售類(lèi)除了分帳號,不同模塊授權以外,還要多一層設定:
  各個(gè)帳號的不同層級及隸屬關(guān)系,方便各級管理人員給下線(xiàn)的任務(wù)分配及后續的上報統計功能。
  以上是從需求類(lèi)型及使用人員的角度看管理后臺。
  如果從開(kāi)發(fā)實(shí)現角度來(lái)講就是另一番景象了,從實(shí)現來(lái)看管理后臺本質(zhì)上和產(chǎn)品前端基本類(lèi)似:
  視覺(jué)層通過(guò)一些頁(yè)面和使用者交互,提出需求;
  邏輯層接口程序負責實(shí)現處理;
  當脫離具體業(yè)務(wù),進(jìn)入數據層后,我們會(huì )發(fā)現其實(shí)所有的操作就是:
  對數據的增刪改查,歸類(lèi)到行為就是兩個(gè):
  不同視角看同一個(gè)事物會(huì )有不同的效果,這正是世界的美妙迷人之處。
  下面我們再聊聊從產(chǎn)品設計角度看管理后臺。
  把用戶(hù)需求轉化為產(chǎn)品需求后,管理后臺的設計主要分為以下幾個(gè)模塊:
  賬戶(hù)管理:主要涉及帳號,密碼,信息,資質(zhì),認證。
  協(xié)作類(lèi)還包括分帳號及針對不同模塊的權限管理,以及銷(xiāo)售管理類(lèi)的各級隸屬關(guān)系的設置均在此模塊完成。
  用戶(hù)管理:是負責平臺用戶(hù)的模塊,主要包括用戶(hù)列表和詳情,通過(guò)該模塊可以對平臺用戶(hù)統一查看管理,主要包括用戶(hù)在該產(chǎn)品中的各維度信息,帳號,昵稱(chēng),頭像,等級及各個(gè)行為記錄。
  資源管理:是指對產(chǎn)品的資源進(jìn)行發(fā)布提交。比如電商類(lèi)產(chǎn)品的商品增刪改查管理,任務(wù)類(lèi)產(chǎn)品的各項任務(wù)發(fā)布,再比如DSP和SSP中的物料素材,媒體,廣告位的增刪改查管理,一般都在這模塊體現。
  任務(wù)管理:主要是針對資源管理里提交發(fā)布的資源,用戶(hù)會(huì )在產(chǎn)品前端進(jìn)行操作,管理后臺對用戶(hù)行為進(jìn)行處理審核。比如DSP和SSP中,類(lèi)似的操作具化為投放管理,需要創(chuàng )建推廣計劃(訂單),推廣單元(具體廣告投放),確認對應的展現物料,投放策略(時(shí)間,計價(jià)方式,單價(jià),日限額,媒體展現類(lèi)型:開(kāi)屏,橫幅,插屏還是原生廣告)以及定向條件(投放時(shí)段,地域及用戶(hù)群體),協(xié)作類(lèi)的任務(wù)完成,銷(xiāo)售類(lèi)的執行情況錄入均在該模塊進(jìn)行動(dòng)態(tài)處理。
  效果管理:主要包括任務(wù)的執行效果和產(chǎn)品的預期效益。電商類(lèi)產(chǎn)品主要監測各個(gè)狀態(tài)的訂單數量,成交金額及利潤(待付款,待發(fā)貨,待收貨,待評價(jià),已完成),任務(wù)類(lèi)產(chǎn)品情況類(lèi)似,主要評估任務(wù)的完成效果(數量和金額),廣告類(lèi)的DSP和SSP則主要看曝光量,點(diǎn)擊量,CTR,平均單次消費,總消費,統計維度從流量主角度有廣告位,頻道,媒體,廣告主角度有物料,推廣單元,推廣計劃。還有一些從整體產(chǎn)品規模尺度上進(jìn)行效果衡量:PV,UV,IP,新增,活躍,留存,累計用戶(hù)等,然后第二步是數據分析,即基于執行結果的效果數據,進(jìn)行后續動(dòng)作的調整優(yōu)化。
  總體來(lái)講效果管理的兩個(gè)主要目的:結果展示和分析調整。
  財務(wù)管理:相對簡(jiǎn)單些,但也相對重要些。主要兩大塊:
  一是財務(wù)賬戶(hù)的信息管理(對公對私,各種支付方式)。
  二是各項記錄,有賺錢(qián)方的:收益,提現,審核,余額管理,花錢(qián)方的:充值,消費,凍結,余額管理。
  以上從產(chǎn)品設計角度簡(jiǎn)要概述管理后臺各模塊,當然行業(yè)不同,涉及具體功能自然不同。
  比如有些需要單獨設計策略管理模塊,再比如同為資源管理,但具體資源類(lèi)型及操作卻相差很大,但總體思路是一致的:
  需求決定功能。
  聊到此處,管理后臺的用處和模樣估計各位有了個(gè)大概的印象,至于真要深入理解,還要在實(shí)際工作中去用心體會(huì )了。紙上得來(lái)終覺(jué)淺,絕知此事要躬行。
  下面奉上10個(gè)管理后臺頁(yè)面模板,供大家參考。
  1 .基于layui的后臺管理系統
  
  2.LayUI組件模板
  3.模塊化后臺管理模板
  4.LarryCMS后臺管理
  
  5.bootstrap英文后臺管理模板
  6.購物網(wǎng)站后臺
  
  7.基于bootstrap的統一開(kāi)發(fā)平臺
  8.物流大數據平臺
  
  9.智慧物流
  10.layers后臺界面
  

10條關(guān)于后臺管理界面的數據可視化設計建議

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 90 次瀏覽 ? 2022-06-18 12:02 ? 來(lái)自相關(guān)話(huà)題

  10條關(guān)于后臺管理界面的數據可視化設計建議
  點(diǎn)擊上方[網(wǎng)頁(yè)設計自學(xué)平臺]→右上角[...]→[設為星標★]
  
  前言:現如今,后臺界面的設計需求很常見(jiàn)。商業(yè)活動(dòng)中,人們希望通過(guò)一個(gè)數據可視化界面來(lái)展示所有的信息、趨勢和風(fēng)險,并實(shí)時(shí)更新,助力于財務(wù)分析預測。
  
  當用戶(hù)在瀏覽數據界面時(shí),最好一眼就能對關(guān)鍵信息有一個(gè)大概的了解,也就是說(shuō),后臺界面應該是一種引人注目、簡(jiǎn)單直接的導航方式。(后臺界面)Dashboard這個(gè)術(shù)語(yǔ)來(lái)自汽車(chē)儀表盤(pán)的比喻,也叫cockpit-area,通常是指飛機或航天器的駕駛艙,也就是控制飛行器的儀表盤(pán)。
  我做了很多年To B(針對企業(yè))的項目,設計了不計其數的后臺管理界面。每一次的設計任務(wù),對我來(lái)說(shuō)都是新的挑戰,為了設計出優(yōu)秀的后臺界面,我常感到壓力山大。為了幫助大家設計出更好的后臺界面,我根據自己的經(jīng)驗,提出了以下幾點(diǎn)建議,不管是對初學(xué)者還是經(jīng)驗豐富的設計師,應該都會(huì )有所收獲。
  1、定義目標
  后臺界面首先是要有明確的目標以滿(mǎn)足用戶(hù)需求,就像產(chǎn)品中其他界面一樣。如果把目標搞錯了,那么接下來(lái)的努力就毫無(wú)意義!不同的使用場(chǎng)景,界面的設計方法也會(huì )不一樣。為了簡(jiǎn)化分析,這里主要介紹2種最常見(jiàn)的形式:
  1)運營(yíng)型后臺界面
  運營(yíng)型后臺界面通常出現在時(shí)效性很強的任務(wù)場(chǎng)景中,旨在高效地為用戶(hù)提供關(guān)鍵信息。運營(yíng)型后臺界面主要為用戶(hù)快速清晰地呈現異常數據、當前資源情況和所處狀態(tài)。運營(yíng)型后臺界面的數據控制中心可以幫助用戶(hù)高效敏捷地盡管運營(yíng)管理。
  
  營(yíng)型后臺界面主要特點(diǎn)
  2)分析型后臺界面
  與運營(yíng)型后臺界面相比,分析型后臺界面通過(guò)提供更為全面的信息,主要用于分析和決策,對時(shí)效性要求不高。分析型后臺界面主要是為幫助用戶(hù)更好地了解數據,分析趨勢和助力決策。
  
  分析型后臺界面主要特點(diǎn)
  用戶(hù)需求決定了要設計哪一種后臺界面。產(chǎn)品可能具有很多功能,不同的管理者也有不同的訴求,設計需要因地制宜。設計師經(jīng)常容易混淆這兩種類(lèi)型,為期望得到快速響應和采取行動(dòng)的用戶(hù)卻提供一大堆的分析數據。反之亦然。
  2.正確地展示數據
  后臺界面中的數據展示是一項復雜的設計,尤其在后臺界面上展示多種類(lèi)型數據時(shí),不管是靜態(tài)還是實(shí)時(shí)變化的信息,都具有很強的挑戰性。如果選錯了圖表類(lèi)型或者直接默認為通用的數據可視化模版,可能會(huì )使用戶(hù)感到困惑或誤讀數據。根據用戶(hù)需要查看的內容,我提供了一些可視化建議:
  
  這類(lèi)圖表用于展示數據關(guān)系
  散點(diǎn)圖主要用于相關(guān)性和分布性的分析;氣泡圖將第三維度引入圖表;網(wǎng)絡(luò )圖也很方便,數據間的節點(diǎn)越大越重要。
  
  這類(lèi)圖表用于比較數據
  在比較一組或多組數據時(shí),使用可視化的圖表要比看網(wǎng)格中的數字簡(jiǎn)單多了。柱形圖和折線(xiàn)圖是最常用的類(lèi)型。我的建議是:
  – 時(shí)間維度應始終用X軸展示,時(shí)間從左向右
  – 當使用水平或垂直條形圖時(shí),嘗試按最大值比例設計條形而不是隨意設計
  – 使用折線(xiàn)圖時(shí),不要顯示超過(guò)5個(gè)值;使用條形圖時(shí),不要顯示超過(guò)7個(gè)值
  
  這類(lèi)圖表用于展示組成部分
  在數據可視化方面,餅圖和環(huán)形圖不容易使用。這類(lèi)圖表最常用到,但同時(shí)也最容易被誤用。因為餅圖和環(huán)形圖的組件太多,相似值很多,所以閱讀體驗很差。人們在瀏覽餅圖和環(huán)形圖的角度和區域時(shí),并不能輕易看出差值。
  
  類(lèi)圖表用于展示分布情況
  分布圖可以幫助你了解數據中的異常值,正態(tài)分布和信息范圍。
  
  避免使用的圖表類(lèi)型
  要避免使用某些圖表類(lèi)型。過(guò)去,圖表數據展示對于后臺界面設計很重要,但現在擬物化設計已經(jīng)過(guò)時(shí)了。3D圖表和過(guò)度設計的圖表可讀性很差,分散了人們對數據的注意力,并且很難開(kāi)發(fā),所以沒(méi)必要這樣設計。
  
  選擇不同圖表類(lèi)型
  選擇圖表時(shí),可以考慮幾個(gè)問(wèn)題:
  – 在一個(gè)圖表中,要顯示幾個(gè)變量?
  – 要顯示不同時(shí)間的值,還是不同項目或者不同組的值?
  – 每個(gè)變量要顯示幾個(gè)數據點(diǎn)?
  3.命名規范、日期格式和數值劃分要統一清晰
  后臺界面主要為了快速獲得信息,所以每個(gè)細節都很重要。使用清晰框架的最大好處是數據一致性。如果數據在每個(gè)工具中以相同的方式命名,則可以更輕松地使用這些工具。一個(gè)框架,就可以解決所有問(wèn)題。
  4.定義布局、順序和優(yōu)先級
  網(wǎng)格可以幫助您輕松實(shí)現對齊和統一,在設計中創(chuàng )建基本結構和骨架。它們由“隱形”線(xiàn)組成,在線(xiàn)上可以放置設計元素。網(wǎng)格可以將所有元素整合在一個(gè)系統的體系中,并且使界面更有條理。這對后臺界面設計至關(guān)重要,因為網(wǎng)格可以將大量的信息布局地更為緊湊。
  
  網(wǎng)格與模塊
  在布局信息時(shí),要注意:
  通常,人們最先關(guān)注到屏幕左上角的區域,所以可以把關(guān)鍵信息從左到右布局。當然有些地區人們的閱讀習慣可能是相反的。人們讀完一行后,會(huì )繼續下一行的閱讀。所以當一段信息基于另一段信息時(shí),要注意它們的前后順序,方便用戶(hù)更好地前后查閱信息、快速瀏覽。
  
  閱讀習慣和優(yōu)先級布局
  5.使用結構統一的組件
  定義網(wǎng)格后,就可以用多種組件來(lái)承載信息、圖表和控件了??ㄆ且环N非常簡(jiǎn)單好用的排版方式??ㄆ畲蟮膬?yōu)勢在于可以無(wú)限地修改、操作和擴展。對于響應式設計,卡片是不錯的選擇,因為卡片是一種易于擴展或縮小的內容容器。
  片可以包含信息、圖表和控件
  卡片的一個(gè)重要特點(diǎn)是所有卡片的控件和數據的排版統一。將名稱(chēng)放在左上角,將視圖控件或操作放到卡片右上角,剩下的就是內容。當所有卡片結構統一時(shí),用戶(hù)就更容易使用界面,輕松找到想要的內容。
  
  排版統一
  涉及響應式設計或者用戶(hù)定制時(shí),使用以上推薦的排版就有不錯的靈活性。當卡片放大或縮小時(shí),所有主要的控件仍然在特定的位置。這對開(kāi)發(fā)和設計的整體可擴展性來(lái)說(shuō),十分有幫助。
  6.擴大留白
  白色區域,也就是負空間,指的是在設計布局中元素之間的區域。用戶(hù)可能并不了解負空間,但是設計師需要特別注意。如果負空間不平衡,這個(gè)界面的易讀性就很差。因此負空間和其他排版元素一樣重要。
  
  12px和24px間距的視覺(jué)差異
  7.不要隱藏信息或過(guò)分依賴(lài)交互
  后臺界面主要為了快速的了解大概信息,但如果涉及滾動(dòng)或過(guò)多的交互事件,就會(huì )拖慢用戶(hù)的使用效率。
  
  高樓大廈的既視感
  設計師最常犯的錯誤,就是設計可滾動(dòng)的、長(cháng)后臺界面。他們想用簡(jiǎn)潔的方式展示更多的信息,就會(huì )從上到下排版,以防太多的信息堆積到一起,讓用戶(hù)難以理解。但這會(huì )導致只有屏幕上的信息是可見(jiàn)的,不滾動(dòng)頁(yè)面就看不到下面的信息,所以用戶(hù)很難注意到下面的信息。既然這樣,干嘛還要放這些很難注意到的信息呢?
  解決辦法是對信息進(jìn)行優(yōu)先級排序,在進(jìn)行充分的研究和訪(fǎng)談后,應該能夠識別關(guān)鍵內容,只用屏幕可見(jiàn)區域來(lái)顯示關(guān)鍵內容。不要長(cháng)篇大論地講故事,要展示提煉的關(guān)鍵信息。額外的交互可以作為容納更多內容的一種方式,而不是讓用戶(hù)被過(guò)多的數據壓垮。
  
  要依賴(lài)過(guò)多交互顯示信息
  交互有助于界面上次要信息展示。但完全依賴(lài)交互,以此作為使用后臺界面的主要方式,就是大錯特錯的。在以上的示例中,用戶(hù)不得不在多個(gè)選項卡中痛苦地切換,來(lái)獲取完整的圖表。那些在隱藏選項卡上的信息可讀性就很差,就像屏幕下方被隱藏的信息一樣。
  
  后臺界面上信息過(guò)多
  后臺界面上,設計的信息過(guò)多,就會(huì )適得其反。一定要知道,人類(lèi)對于多個(gè)事物的記性很差。不要對用戶(hù)期望過(guò)高,不要讓用戶(hù)對太多數據應接不暇。最多用5-7個(gè)組件來(lái)創(chuàng )建頁(yè)面。否則,用戶(hù)很難專(zhuān)注獲取清晰的信息概覽。
  8.個(gè)性化而不是自定義
  用戶(hù)希望看到與他們個(gè)人需求相關(guān)的內容。個(gè)性化和自定義可以使用戶(hù)看到對他們自身重要內容。個(gè)性化由系統自身設定。系統ID用于識別用戶(hù),并為用戶(hù)提供與其角色匹配的內容、體驗或功能。自定義則是由用戶(hù)自身完成。為了滿(mǎn)足特定需求,用戶(hù)可以在系統里配置布局、內容或系統功能來(lái)定制或改變體驗。
  
  自定義后臺界面
  在界面足夠個(gè)性化的基礎上,可以給用戶(hù)更多的選擇自定義后臺界面。但通常,設計多種自定義的方式是一個(gè)借口,逃避枯燥的用戶(hù)調研過(guò)程,不去真正挖掘每一個(gè)用戶(hù)角色真正的需求。最后,就把一切都甩給用戶(hù),讓他自己去創(chuàng )建頁(yè)面。
  9.融合數據表或列表時(shí),確??山换デ覕祿R
  展示多項目的大量信息時(shí),數據表是不錯的解決方案。例如客戶(hù)列表里姓名、狀態(tài)、聯(lián)系人和最近活動(dòng)等等,這些用數據表展示是最好的辦法。數據表有很多優(yōu)點(diǎn),空間利用好、擴展性好、開(kāi)發(fā)簡(jiǎn)便。用戶(hù)也很習慣和網(wǎng)格打交道,因為大多數用戶(hù)使用excel很多年了,容易查找和修改數據。查閱以下文章,了解數據表的更多內容。
  @taras.bakusevych/data-tables-design-3c705b106a64
  10.最后才是考慮視覺(jué)效果
  由于數據可視化界面是視覺(jué)沖擊力最強的后臺界面,因此通常對設計師來(lái)說(shuō)視覺(jué)效果成了設計的首要任務(wù)。相反,我建議最后再設計數據可視化界面總覽全局。數據可視化是其他所有內容的摘要視圖,顯示應用各個(gè)部分的關(guān)鍵信息,最后設計它更切實(shí)可行。
  否則,在處理其他頁(yè)面時(shí)會(huì )不斷返回并更新數據可視化界面。此外,一旦設計完大部分界面了,再做數據可視化就可以使用大量的組件了。
  原文: 查看全部

  10條關(guān)于后臺管理界面的數據可視化設計建議
  點(diǎn)擊上方[網(wǎng)頁(yè)設計自學(xué)平臺]→右上角[...]→[設為星標★]
  
  前言:現如今,后臺界面的設計需求很常見(jiàn)。商業(yè)活動(dòng)中,人們希望通過(guò)一個(gè)數據可視化界面來(lái)展示所有的信息、趨勢和風(fēng)險,并實(shí)時(shí)更新,助力于財務(wù)分析預測。
  
  當用戶(hù)在瀏覽數據界面時(shí),最好一眼就能對關(guān)鍵信息有一個(gè)大概的了解,也就是說(shuō),后臺界面應該是一種引人注目、簡(jiǎn)單直接的導航方式。(后臺界面)Dashboard這個(gè)術(shù)語(yǔ)來(lái)自汽車(chē)儀表盤(pán)的比喻,也叫cockpit-area,通常是指飛機或航天器的駕駛艙,也就是控制飛行器的儀表盤(pán)。
  我做了很多年To B(針對企業(yè))的項目,設計了不計其數的后臺管理界面。每一次的設計任務(wù),對我來(lái)說(shuō)都是新的挑戰,為了設計出優(yōu)秀的后臺界面,我常感到壓力山大。為了幫助大家設計出更好的后臺界面,我根據自己的經(jīng)驗,提出了以下幾點(diǎn)建議,不管是對初學(xué)者還是經(jīng)驗豐富的設計師,應該都會(huì )有所收獲。
  1、定義目標
  后臺界面首先是要有明確的目標以滿(mǎn)足用戶(hù)需求,就像產(chǎn)品中其他界面一樣。如果把目標搞錯了,那么接下來(lái)的努力就毫無(wú)意義!不同的使用場(chǎng)景,界面的設計方法也會(huì )不一樣。為了簡(jiǎn)化分析,這里主要介紹2種最常見(jiàn)的形式:
  1)運營(yíng)型后臺界面
  運營(yíng)型后臺界面通常出現在時(shí)效性很強的任務(wù)場(chǎng)景中,旨在高效地為用戶(hù)提供關(guān)鍵信息。運營(yíng)型后臺界面主要為用戶(hù)快速清晰地呈現異常數據、當前資源情況和所處狀態(tài)。運營(yíng)型后臺界面的數據控制中心可以幫助用戶(hù)高效敏捷地盡管運營(yíng)管理。
  
  營(yíng)型后臺界面主要特點(diǎn)
  2)分析型后臺界面
  與運營(yíng)型后臺界面相比,分析型后臺界面通過(guò)提供更為全面的信息,主要用于分析和決策,對時(shí)效性要求不高。分析型后臺界面主要是為幫助用戶(hù)更好地了解數據,分析趨勢和助力決策。
  
  分析型后臺界面主要特點(diǎn)
  用戶(hù)需求決定了要設計哪一種后臺界面。產(chǎn)品可能具有很多功能,不同的管理者也有不同的訴求,設計需要因地制宜。設計師經(jīng)常容易混淆這兩種類(lèi)型,為期望得到快速響應和采取行動(dòng)的用戶(hù)卻提供一大堆的分析數據。反之亦然。
  2.正確地展示數據
  后臺界面中的數據展示是一項復雜的設計,尤其在后臺界面上展示多種類(lèi)型數據時(shí),不管是靜態(tài)還是實(shí)時(shí)變化的信息,都具有很強的挑戰性。如果選錯了圖表類(lèi)型或者直接默認為通用的數據可視化模版,可能會(huì )使用戶(hù)感到困惑或誤讀數據。根據用戶(hù)需要查看的內容,我提供了一些可視化建議:
  
  這類(lèi)圖表用于展示數據關(guān)系
  散點(diǎn)圖主要用于相關(guān)性和分布性的分析;氣泡圖將第三維度引入圖表;網(wǎng)絡(luò )圖也很方便,數據間的節點(diǎn)越大越重要。
  
  這類(lèi)圖表用于比較數據
  在比較一組或多組數據時(shí),使用可視化的圖表要比看網(wǎng)格中的數字簡(jiǎn)單多了。柱形圖和折線(xiàn)圖是最常用的類(lèi)型。我的建議是:
  – 時(shí)間維度應始終用X軸展示,時(shí)間從左向右
  – 當使用水平或垂直條形圖時(shí),嘗試按最大值比例設計條形而不是隨意設計
  – 使用折線(xiàn)圖時(shí),不要顯示超過(guò)5個(gè)值;使用條形圖時(shí),不要顯示超過(guò)7個(gè)值
  
  這類(lèi)圖表用于展示組成部分
  在數據可視化方面,餅圖和環(huán)形圖不容易使用。這類(lèi)圖表最常用到,但同時(shí)也最容易被誤用。因為餅圖和環(huán)形圖的組件太多,相似值很多,所以閱讀體驗很差。人們在瀏覽餅圖和環(huán)形圖的角度和區域時(shí),并不能輕易看出差值。
  
  類(lèi)圖表用于展示分布情況
  分布圖可以幫助你了解數據中的異常值,正態(tài)分布和信息范圍。
  
  避免使用的圖表類(lèi)型
  要避免使用某些圖表類(lèi)型。過(guò)去,圖表數據展示對于后臺界面設計很重要,但現在擬物化設計已經(jīng)過(guò)時(shí)了。3D圖表和過(guò)度設計的圖表可讀性很差,分散了人們對數據的注意力,并且很難開(kāi)發(fā),所以沒(méi)必要這樣設計。
  
  選擇不同圖表類(lèi)型
  選擇圖表時(shí),可以考慮幾個(gè)問(wèn)題:
  – 在一個(gè)圖表中,要顯示幾個(gè)變量?
  – 要顯示不同時(shí)間的值,還是不同項目或者不同組的值?
  – 每個(gè)變量要顯示幾個(gè)數據點(diǎn)?
  3.命名規范、日期格式和數值劃分要統一清晰
  后臺界面主要為了快速獲得信息,所以每個(gè)細節都很重要。使用清晰框架的最大好處是數據一致性。如果數據在每個(gè)工具中以相同的方式命名,則可以更輕松地使用這些工具。一個(gè)框架,就可以解決所有問(wèn)題。
  4.定義布局、順序和優(yōu)先級
  網(wǎng)格可以幫助您輕松實(shí)現對齊和統一,在設計中創(chuàng )建基本結構和骨架。它們由“隱形”線(xiàn)組成,在線(xiàn)上可以放置設計元素。網(wǎng)格可以將所有元素整合在一個(gè)系統的體系中,并且使界面更有條理。這對后臺界面設計至關(guān)重要,因為網(wǎng)格可以將大量的信息布局地更為緊湊。
  
  網(wǎng)格與模塊
  在布局信息時(shí),要注意:
  通常,人們最先關(guān)注到屏幕左上角的區域,所以可以把關(guān)鍵信息從左到右布局。當然有些地區人們的閱讀習慣可能是相反的。人們讀完一行后,會(huì )繼續下一行的閱讀。所以當一段信息基于另一段信息時(shí),要注意它們的前后順序,方便用戶(hù)更好地前后查閱信息、快速瀏覽。
  
  閱讀習慣和優(yōu)先級布局
  5.使用結構統一的組件
  定義網(wǎng)格后,就可以用多種組件來(lái)承載信息、圖表和控件了??ㄆ且环N非常簡(jiǎn)單好用的排版方式??ㄆ畲蟮膬?yōu)勢在于可以無(wú)限地修改、操作和擴展。對于響應式設計,卡片是不錯的選擇,因為卡片是一種易于擴展或縮小的內容容器。
  片可以包含信息、圖表和控件
  卡片的一個(gè)重要特點(diǎn)是所有卡片的控件和數據的排版統一。將名稱(chēng)放在左上角,將視圖控件或操作放到卡片右上角,剩下的就是內容。當所有卡片結構統一時(shí),用戶(hù)就更容易使用界面,輕松找到想要的內容。
  
  排版統一
  涉及響應式設計或者用戶(hù)定制時(shí),使用以上推薦的排版就有不錯的靈活性。當卡片放大或縮小時(shí),所有主要的控件仍然在特定的位置。這對開(kāi)發(fā)和設計的整體可擴展性來(lái)說(shuō),十分有幫助。
  6.擴大留白
  白色區域,也就是負空間,指的是在設計布局中元素之間的區域。用戶(hù)可能并不了解負空間,但是設計師需要特別注意。如果負空間不平衡,這個(gè)界面的易讀性就很差。因此負空間和其他排版元素一樣重要。
  
  12px和24px間距的視覺(jué)差異
  7.不要隱藏信息或過(guò)分依賴(lài)交互
  后臺界面主要為了快速的了解大概信息,但如果涉及滾動(dòng)或過(guò)多的交互事件,就會(huì )拖慢用戶(hù)的使用效率。
  
  高樓大廈的既視感
  設計師最常犯的錯誤,就是設計可滾動(dòng)的、長(cháng)后臺界面。他們想用簡(jiǎn)潔的方式展示更多的信息,就會(huì )從上到下排版,以防太多的信息堆積到一起,讓用戶(hù)難以理解。但這會(huì )導致只有屏幕上的信息是可見(jiàn)的,不滾動(dòng)頁(yè)面就看不到下面的信息,所以用戶(hù)很難注意到下面的信息。既然這樣,干嘛還要放這些很難注意到的信息呢?
  解決辦法是對信息進(jìn)行優(yōu)先級排序,在進(jìn)行充分的研究和訪(fǎng)談后,應該能夠識別關(guān)鍵內容,只用屏幕可見(jiàn)區域來(lái)顯示關(guān)鍵內容。不要長(cháng)篇大論地講故事,要展示提煉的關(guān)鍵信息。額外的交互可以作為容納更多內容的一種方式,而不是讓用戶(hù)被過(guò)多的數據壓垮。
  
  要依賴(lài)過(guò)多交互顯示信息
  交互有助于界面上次要信息展示。但完全依賴(lài)交互,以此作為使用后臺界面的主要方式,就是大錯特錯的。在以上的示例中,用戶(hù)不得不在多個(gè)選項卡中痛苦地切換,來(lái)獲取完整的圖表。那些在隱藏選項卡上的信息可讀性就很差,就像屏幕下方被隱藏的信息一樣。
  
  后臺界面上信息過(guò)多
  后臺界面上,設計的信息過(guò)多,就會(huì )適得其反。一定要知道,人類(lèi)對于多個(gè)事物的記性很差。不要對用戶(hù)期望過(guò)高,不要讓用戶(hù)對太多數據應接不暇。最多用5-7個(gè)組件來(lái)創(chuàng )建頁(yè)面。否則,用戶(hù)很難專(zhuān)注獲取清晰的信息概覽。
  8.個(gè)性化而不是自定義
  用戶(hù)希望看到與他們個(gè)人需求相關(guān)的內容。個(gè)性化和自定義可以使用戶(hù)看到對他們自身重要內容。個(gè)性化由系統自身設定。系統ID用于識別用戶(hù),并為用戶(hù)提供與其角色匹配的內容、體驗或功能。自定義則是由用戶(hù)自身完成。為了滿(mǎn)足特定需求,用戶(hù)可以在系統里配置布局、內容或系統功能來(lái)定制或改變體驗。
  
  自定義后臺界面
  在界面足夠個(gè)性化的基礎上,可以給用戶(hù)更多的選擇自定義后臺界面。但通常,設計多種自定義的方式是一個(gè)借口,逃避枯燥的用戶(hù)調研過(guò)程,不去真正挖掘每一個(gè)用戶(hù)角色真正的需求。最后,就把一切都甩給用戶(hù),讓他自己去創(chuàng )建頁(yè)面。
  9.融合數據表或列表時(shí),確??山换デ覕祿R
  展示多項目的大量信息時(shí),數據表是不錯的解決方案。例如客戶(hù)列表里姓名、狀態(tài)、聯(lián)系人和最近活動(dòng)等等,這些用數據表展示是最好的辦法。數據表有很多優(yōu)點(diǎn),空間利用好、擴展性好、開(kāi)發(fā)簡(jiǎn)便。用戶(hù)也很習慣和網(wǎng)格打交道,因為大多數用戶(hù)使用excel很多年了,容易查找和修改數據。查閱以下文章,了解數據表的更多內容。
  @taras.bakusevych/data-tables-design-3c705b106a64
  10.最后才是考慮視覺(jué)效果
  由于數據可視化界面是視覺(jué)沖擊力最強的后臺界面,因此通常對設計師來(lái)說(shuō)視覺(jué)效果成了設計的首要任務(wù)。相反,我建議最后再設計數據可視化界面總覽全局。數據可視化是其他所有內容的摘要視圖,顯示應用各個(gè)部分的關(guān)鍵信息,最后設計它更切實(shí)可行。
  否則,在處理其他頁(yè)面時(shí)會(huì )不斷返回并更新數據可視化界面。此外,一旦設計完大部分界面了,再做數據可視化就可以使用大量的組件了。
  原文:

2天搭建出Instagram后臺,程序員真的值得高薪

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 129 次瀏覽 ? 2022-06-13 09:33 ? 來(lái)自相關(guān)話(huà)題

  2天搭建出Instagram后臺,程序員真的值得高薪
  Python是最常用的編程語(yǔ)言之一,這已不是什么秘密。在過(guò)去的五年中,Python一直是“最受歡迎的編碼語(yǔ)言”,而且還在持續發(fā)光發(fā)熱。
  但是,如果你想要做網(wǎng)站開(kāi)發(fā),單純會(huì )Python是絕對不夠的。此時(shí),就需要Django網(wǎng)絡(luò )開(kāi)發(fā)框架的輔助,它可以讓您專(zhuān)注于編寫(xiě)應用程序或網(wǎng)站,不必陷入繁瑣的工作困境。
  《Big Data - Spark 項目實(shí)戰》
  2019最新課程試聽(tīng):
  什么是大數據以及什么是大數據工程師
  課程適合的人群以及涵蓋的內容
  大數據與傳統代碼的區別
  報名截止時(shí)間:
  北京時(shí)間 7月07日周日04:00
  美西時(shí)間7月06日周六 13:00
  美東時(shí)間 7月06日周六 16:00
  試聽(tīng)回放鏈接:
  墻外鏈接: 或
  墻內鏈接:

  而且根據Indeed的統計,掌握Django可以勝任很多方面的職業(yè),包括全棧工程師和高級網(wǎng)站工程師,且年薪基本上都超過(guò)10萬(wàn)美元。
  國內拉勾網(wǎng)或獵聘網(wǎng)上Python/Django開(kāi)發(fā)工程師,有2-3年經(jīng)驗的收入都在30萬(wàn)/年以上,相比于其它行業(yè)畢業(yè)2-3年的學(xué)生收入而言也高出不少。
  
  Python語(yǔ)言+Django框架=web開(kāi)發(fā)的黃金組合
  隨著(zhù)Python熱潮來(lái)襲,越來(lái)越多人用Python開(kāi)發(fā)網(wǎng)站和網(wǎng)絡(luò )應用;Python作為編程語(yǔ)言沒(méi)問(wèn)題,但在搭建網(wǎng)站上就略顯遜色。
  這時(shí)候使用Django網(wǎng)絡(luò )開(kāi)發(fā)框架,就可以更高效、直接地將網(wǎng)絡(luò )爬蟲(chóng)的結果進(jìn)行編輯和管理。
  由于Django是基于Python寫(xiě)出來(lái)的,一個(gè)服務(wù)器上或一種開(kāi)發(fā)環(huán)境下兼容性完全不是問(wèn)題。
  開(kāi)發(fā)企業(yè)級網(wǎng)站離不開(kāi)Django
  先來(lái)看看哪些知名網(wǎng)站是用Python和Django框架聯(lián)合開(kāi)發(fā)的吧。
  Disqus
  Pinterest
  Instagram
  Washington Post
  從以上不難看出:新聞咨詢(xún)類(lèi)網(wǎng)站、社交網(wǎng)絡(luò )網(wǎng)站或電子商務(wù)網(wǎng)站都需要使用更高級的網(wǎng)絡(luò )開(kāi)發(fā)框架來(lái)簡(jiǎn)化開(kāi)發(fā)流程——不然用一行一行代碼從零寫(xiě)起實(shí)現一些最簡(jiǎn)單的網(wǎng)站功能實(shí)在是太降低工作效率了。
  Django自身功能強大,使用文檔完善
  Django與基于其它語(yǔ)言的網(wǎng)絡(luò )開(kāi)發(fā)框架如Laravel, ThinkPHP相比,自身功能足夠強大,非常適合用于搭建高性能的優(yōu)秀網(wǎng)站。
  主要著(zhù)重在以下幾個(gè)點(diǎn):
  01完整的錯誤信息提示
  如果在開(kāi)發(fā)過(guò)程中出現了錯誤或異常,Django可以很直接定位指出錯誤,大大提高工作效率,避免花大量時(shí)間找錯。
  02自帶后臺管理系統admin
  只需通過(guò)簡(jiǎn)單的幾行配置和代碼就可以實(shí)現一個(gè)完整的后臺數據管理控制平臺。用簡(jiǎn)單方便的手段直接管理你的網(wǎng)站。
  03豐富的模板系統
  采用Template模板語(yǔ)言,設計簡(jiǎn)約,方便,易上手。不僅模板本身功能強大,而且還能自定義模板標簽。
  04強大的數據庫功能
  Django自身有著(zhù)非常強大的數據庫操作接口,可以和各種數據庫直接對接,如果使用過(guò)程中有需要的話(huà)還可以直接對接SQL。
  05網(wǎng)址映射靈活
  Django使用的是正則表達式,讓網(wǎng)址的靈活性和優(yōu)雅性更上一個(gè)臺階。在使用搭建的時(shí)候就能自定義自己的網(wǎng)址域名了。
  06先進(jìn)的App設計理念
  App是可插拔的,是不可多得的思想。不需要了,可以直接刪除,對系統整體影響不大。
  07完善的文檔
  Django已經(jīng)誕生多年,已經(jīng)有了很多的使用案例,擁有十分完善的在線(xiàn)文檔,在使用上遇到問(wèn)題時(shí)可以直接搜索解決,非常方便新人上手。
  總而言之,學(xué)習網(wǎng)絡(luò )開(kāi)發(fā)框架,一個(gè)Django就夠了!
  學(xué)了Django,我的簡(jiǎn)歷會(huì )更好看嗎?
  企業(yè)在照片web開(kāi)發(fā)人員時(shí),除了看重候選人的Python語(yǔ)言能力,還會(huì )要求他懂得網(wǎng)絡(luò )開(kāi)發(fā)框架如Django。如果你作為Python網(wǎng)站開(kāi)發(fā)人員,連Django都不知道,那么你應聘相關(guān)崗位估計也沒(méi)多大戲了。
  
  去哪里可以找到一起學(xué)習的小伙伴?
  許多城市都有Django特定的團體,如Django區、Django Boston和舊金山Django。
  在這里,各路開(kāi)發(fā)人員都可以暢所欲言,一旦遇到了任何困難,也可以及時(shí)求助。
  
  兩天就能學(xué)成,一點(diǎn)也不夸張
  Django作為一個(gè)成熟的網(wǎng)站和網(wǎng)絡(luò )應用開(kāi)發(fā)框架,有著(zhù)大而全的模塊和功能。
  對于剛從事網(wǎng)站開(kāi)發(fā)或剛熟悉Python語(yǔ)言的新手而言,覺(jué)得學(xué)Django好難是一件非常普遍的事情。
  但是,相比于長(cháng)線(xiàn)學(xué)習,Django是一門(mén)較為特殊的課程。因為只要掌握對方式,2天就能搞定。
  也就是說(shuō),只需要一個(gè)周末的時(shí)間,你就可以用Django搭建一個(gè)網(wǎng)站框架,不出意外,下周你的簡(jiǎn)歷就會(huì )多一處閃光點(diǎn)。
  很多學(xué)習Django的人都是由Python小白轉過(guò)來(lái)的,一邊自學(xué)一邊練習。
  我見(jiàn)過(guò)很多人學(xué)到一半就放棄了, 越學(xué)越迷茫。一是因為在實(shí)踐過(guò)程中碰到很多bug沒(méi)人指導,二是因為不知道學(xué)到什么程度才能找到一份不錯的工作有所回報。
  那么,如何完成上文提到的周末學(xué)好Django?
  答案是:來(lái)上九章算法新開(kāi)設的《Django周末速成班》!
  兩天時(shí)間,一個(gè)周末,16課時(shí),幫你搞定Django最好的選擇!
  Q:
  2天的學(xué)習,我能達到什么水平?
  A:
  獨自用Django搭建 Instagram 后端系統。
  開(kāi)發(fā)比較專(zhuān)業(yè)的博客(含登錄注冊,用戶(hù)關(guān)注,點(diǎn)贊,內容推薦和權限管理)
  或者和一個(gè)基本的電子商務(wù)網(wǎng)站(使用Memcached和Redis,包含購物車(chē)和使用支付寶支付接口完成在線(xiàn)支付)
  如果你夠聰明,還能熟練地利用DRF開(kāi)發(fā)Web API, 并且非常了解django項目的部署和配置。
  適合人群
  想擁有亮眼的網(wǎng)頁(yè)搭建項目的同學(xué);
  想學(xué)做網(wǎng)站但又不知從何開(kāi)始的同學(xué);
  想成為網(wǎng)頁(yè)工程師的同學(xué);
  想要接觸全棧開(kāi)發(fā)的同學(xué)。
  課程主要內容
  為什么要學(xué)習Django?
  搭建你的第一個(gè)Django服務(wù)器;
  后端功能實(shí)現及前后端交互;
  服務(wù)器部署和REST。
  講師介紹
  
  課程亮點(diǎn)>>>>
  周末速成直播班模式
  本課采用周末速成模式,如果你有工作,或是周一到周五抽不出時(shí)間,或者是想要速成Django技能,就可以選擇這門(mén)課,周末兩天,16個(gè)課時(shí),讓你速成Django。
  >>>>
  理論和實(shí)戰相配合
  這門(mén)課的大部分時(shí)間都是在教你配置環(huán)境搭建網(wǎng)站解決問(wèn)題,實(shí)戰的項目不僅可以幫助你更快更好的理解Django的實(shí)際應用,更能讓你在簡(jiǎn)歷上寫(xiě)上一條亮眼的項目。
  >>>>
  課程收獲
  將幫助你掌握Django框架;
  在你的簡(jiǎn)歷中增加網(wǎng)站搭建的項目經(jīng)歷;
  能夠勝任網(wǎng)站工程師的工作;
  可以學(xué)習全棧開(kāi)發(fā)的入門(mén)知識。
  >>>>
  免費試聽(tīng)內容
  >>>>
  報名方式
  免費試聽(tīng)課
  北京時(shí)間 2019年7月14日 周日00:00~01:30
  美東時(shí)間 2019年7月13日周六12:00~13:30
  美西時(shí)間 2019年7月13日 周六09:00~10:30
  長(cháng)按二維碼即可免費報名試聽(tīng) 查看全部

  2天搭建出Instagram后臺,程序員真的值得高薪
  Python是最常用的編程語(yǔ)言之一,這已不是什么秘密。在過(guò)去的五年中,Python一直是“最受歡迎的編碼語(yǔ)言”,而且還在持續發(fā)光發(fā)熱。
  但是,如果你想要做網(wǎng)站開(kāi)發(fā),單純會(huì )Python是絕對不夠的。此時(shí),就需要Django網(wǎng)絡(luò )開(kāi)發(fā)框架的輔助,它可以讓您專(zhuān)注于編寫(xiě)應用程序或網(wǎng)站,不必陷入繁瑣的工作困境。
  《Big Data - Spark 項目實(shí)戰》
  2019最新課程試聽(tīng):
  什么是大數據以及什么是大數據工程師
  課程適合的人群以及涵蓋的內容
  大數據與傳統代碼的區別
  報名截止時(shí)間:
  北京時(shí)間 7月07日周日04:00
  美西時(shí)間7月06日周六 13:00
  美東時(shí)間 7月06日周六 16:00
  試聽(tīng)回放鏈接:
  墻外鏈接: 或
  墻內鏈接:

  而且根據Indeed的統計,掌握Django可以勝任很多方面的職業(yè),包括全棧工程師和高級網(wǎng)站工程師,且年薪基本上都超過(guò)10萬(wàn)美元。
  國內拉勾網(wǎng)或獵聘網(wǎng)上Python/Django開(kāi)發(fā)工程師,有2-3年經(jīng)驗的收入都在30萬(wàn)/年以上,相比于其它行業(yè)畢業(yè)2-3年的學(xué)生收入而言也高出不少。
  
  Python語(yǔ)言+Django框架=web開(kāi)發(fā)的黃金組合
  隨著(zhù)Python熱潮來(lái)襲,越來(lái)越多人用Python開(kāi)發(fā)網(wǎng)站和網(wǎng)絡(luò )應用;Python作為編程語(yǔ)言沒(méi)問(wèn)題,但在搭建網(wǎng)站上就略顯遜色。
  這時(shí)候使用Django網(wǎng)絡(luò )開(kāi)發(fā)框架,就可以更高效、直接地將網(wǎng)絡(luò )爬蟲(chóng)的結果進(jìn)行編輯和管理。
  由于Django是基于Python寫(xiě)出來(lái)的,一個(gè)服務(wù)器上或一種開(kāi)發(fā)環(huán)境下兼容性完全不是問(wèn)題。
  開(kāi)發(fā)企業(yè)級網(wǎng)站離不開(kāi)Django
  先來(lái)看看哪些知名網(wǎng)站是用Python和Django框架聯(lián)合開(kāi)發(fā)的吧。
  Disqus
  Pinterest
  Instagram
  Washington Post
  從以上不難看出:新聞咨詢(xún)類(lèi)網(wǎng)站、社交網(wǎng)絡(luò )網(wǎng)站或電子商務(wù)網(wǎng)站都需要使用更高級的網(wǎng)絡(luò )開(kāi)發(fā)框架來(lái)簡(jiǎn)化開(kāi)發(fā)流程——不然用一行一行代碼從零寫(xiě)起實(shí)現一些最簡(jiǎn)單的網(wǎng)站功能實(shí)在是太降低工作效率了。
  Django自身功能強大,使用文檔完善
  Django與基于其它語(yǔ)言的網(wǎng)絡(luò )開(kāi)發(fā)框架如Laravel, ThinkPHP相比,自身功能足夠強大,非常適合用于搭建高性能的優(yōu)秀網(wǎng)站。
  主要著(zhù)重在以下幾個(gè)點(diǎn):
  01完整的錯誤信息提示
  如果在開(kāi)發(fā)過(guò)程中出現了錯誤或異常,Django可以很直接定位指出錯誤,大大提高工作效率,避免花大量時(shí)間找錯。
  02自帶后臺管理系統admin
  只需通過(guò)簡(jiǎn)單的幾行配置和代碼就可以實(shí)現一個(gè)完整的后臺數據管理控制平臺。用簡(jiǎn)單方便的手段直接管理你的網(wǎng)站。
  03豐富的模板系統
  采用Template模板語(yǔ)言,設計簡(jiǎn)約,方便,易上手。不僅模板本身功能強大,而且還能自定義模板標簽。
  04強大的數據庫功能
  Django自身有著(zhù)非常強大的數據庫操作接口,可以和各種數據庫直接對接,如果使用過(guò)程中有需要的話(huà)還可以直接對接SQL。
  05網(wǎng)址映射靈活
  Django使用的是正則表達式,讓網(wǎng)址的靈活性和優(yōu)雅性更上一個(gè)臺階。在使用搭建的時(shí)候就能自定義自己的網(wǎng)址域名了。
  06先進(jìn)的App設計理念
  App是可插拔的,是不可多得的思想。不需要了,可以直接刪除,對系統整體影響不大。
  07完善的文檔
  Django已經(jīng)誕生多年,已經(jīng)有了很多的使用案例,擁有十分完善的在線(xiàn)文檔,在使用上遇到問(wèn)題時(shí)可以直接搜索解決,非常方便新人上手。
  總而言之,學(xué)習網(wǎng)絡(luò )開(kāi)發(fā)框架,一個(gè)Django就夠了!
  學(xué)了Django,我的簡(jiǎn)歷會(huì )更好看嗎?
  企業(yè)在照片web開(kāi)發(fā)人員時(shí),除了看重候選人的Python語(yǔ)言能力,還會(huì )要求他懂得網(wǎng)絡(luò )開(kāi)發(fā)框架如Django。如果你作為Python網(wǎng)站開(kāi)發(fā)人員,連Django都不知道,那么你應聘相關(guān)崗位估計也沒(méi)多大戲了。
  
  去哪里可以找到一起學(xué)習的小伙伴?
  許多城市都有Django特定的團體,如Django區、Django Boston和舊金山Django。
  在這里,各路開(kāi)發(fā)人員都可以暢所欲言,一旦遇到了任何困難,也可以及時(shí)求助。
  
  兩天就能學(xué)成,一點(diǎn)也不夸張
  Django作為一個(gè)成熟的網(wǎng)站和網(wǎng)絡(luò )應用開(kāi)發(fā)框架,有著(zhù)大而全的模塊和功能。
  對于剛從事網(wǎng)站開(kāi)發(fā)或剛熟悉Python語(yǔ)言的新手而言,覺(jué)得學(xué)Django好難是一件非常普遍的事情。
  但是,相比于長(cháng)線(xiàn)學(xué)習,Django是一門(mén)較為特殊的課程。因為只要掌握對方式,2天就能搞定。
  也就是說(shuō),只需要一個(gè)周末的時(shí)間,你就可以用Django搭建一個(gè)網(wǎng)站框架,不出意外,下周你的簡(jiǎn)歷就會(huì )多一處閃光點(diǎn)。
  很多學(xué)習Django的人都是由Python小白轉過(guò)來(lái)的,一邊自學(xué)一邊練習。
  我見(jiàn)過(guò)很多人學(xué)到一半就放棄了, 越學(xué)越迷茫。一是因為在實(shí)踐過(guò)程中碰到很多bug沒(méi)人指導,二是因為不知道學(xué)到什么程度才能找到一份不錯的工作有所回報。
  那么,如何完成上文提到的周末學(xué)好Django?
  答案是:來(lái)上九章算法新開(kāi)設的《Django周末速成班》!
  兩天時(shí)間,一個(gè)周末,16課時(shí),幫你搞定Django最好的選擇!
  Q:
  2天的學(xué)習,我能達到什么水平?
  A:
  獨自用Django搭建 Instagram 后端系統。
  開(kāi)發(fā)比較專(zhuān)業(yè)的博客(含登錄注冊,用戶(hù)關(guān)注,點(diǎn)贊,內容推薦和權限管理)
  或者和一個(gè)基本的電子商務(wù)網(wǎng)站(使用Memcached和Redis,包含購物車(chē)和使用支付寶支付接口完成在線(xiàn)支付)
  如果你夠聰明,還能熟練地利用DRF開(kāi)發(fā)Web API, 并且非常了解django項目的部署和配置。
  適合人群
  想擁有亮眼的網(wǎng)頁(yè)搭建項目的同學(xué);
  想學(xué)做網(wǎng)站但又不知從何開(kāi)始的同學(xué);
  想成為網(wǎng)頁(yè)工程師的同學(xué);
  想要接觸全棧開(kāi)發(fā)的同學(xué)。
  課程主要內容
  為什么要學(xué)習Django?
  搭建你的第一個(gè)Django服務(wù)器;
  后端功能實(shí)現及前后端交互;
  服務(wù)器部署和REST。
  講師介紹
  
  課程亮點(diǎn)>>>>
  周末速成直播班模式
  本課采用周末速成模式,如果你有工作,或是周一到周五抽不出時(shí)間,或者是想要速成Django技能,就可以選擇這門(mén)課,周末兩天,16個(gè)課時(shí),讓你速成Django。
  >>>>
  理論和實(shí)戰相配合
  這門(mén)課的大部分時(shí)間都是在教你配置環(huán)境搭建網(wǎng)站解決問(wèn)題,實(shí)戰的項目不僅可以幫助你更快更好的理解Django的實(shí)際應用,更能讓你在簡(jiǎn)歷上寫(xiě)上一條亮眼的項目。
  >>>>
  課程收獲
  將幫助你掌握Django框架;
  在你的簡(jiǎn)歷中增加網(wǎng)站搭建的項目經(jīng)歷;
  能夠勝任網(wǎng)站工程師的工作;
  可以學(xué)習全棧開(kāi)發(fā)的入門(mén)知識。
  >>>>
  免費試聽(tīng)內容
  >>>>
  報名方式
  免費試聽(tīng)課
  北京時(shí)間 2019年7月14日 周日00:00~01:30
  美東時(shí)間 2019年7月13日周六12:00~13:30
  美西時(shí)間 2019年7月13日 周六09:00~10:30
  長(cháng)按二維碼即可免費報名試聽(tīng)

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久