luobstack初步搭好摆尝,寫(xiě)點(diǎn)東西慶祝一下

前言

很早的時(shí)候就想做個(gè)個(gè)人網(wǎng)站項(xiàng)目,覺(jué)得是個(gè)不錯(cuò)的實(shí)踐因悲。當(dāng)時(shí)的設(shè)想是做一個(gè)all-purpose的集合结榄,博客、其他站點(diǎn)文章新聞收集囤捻、MSDNitellyou、常用資源鏡像邻寿,還有所做的一些小項(xiàng)目小游戲蝎土,都可以不斷扔到這個(gè)站點(diǎn)。當(dāng)然現(xiàn)在來(lái)看離這個(gè)目標(biāo)還是有點(diǎn)遠(yuǎn)绣否,可能還需要不短的時(shí)間來(lái)繼續(xù)完成它誊涯。

因?yàn)橐故镜臇|西不止博客文章,所以最初沒(méi)想著在首頁(yè)直接展示文章列表蒜撮,得重新做個(gè)首頁(yè)暴构。首頁(yè)得炫酷跪呈,找了一圈覺(jué)得bing搜索的首頁(yè)就挺炫酷,每天壁紙不一樣取逾,還能切換來(lái)切換去耗绿,那就抄吧。

那時(shí)候太依賴(lài)Bootstrap, 連響應(yīng)式導(dǎo)航欄都沒(méi)親手寫(xiě)過(guò)砾隅,第一個(gè)版本就用了Bootstrap误阻。后端Koa還在摸索,選了模板引擎Nunjucks晴埂,前后端一起寫(xiě)究反。

Bootstrap的輪播圖組件,只要有好看的圖儒洛,很容易就有了一個(gè)炫酷的主頁(yè)精耐。但是在之前項(xiàng)目試過(guò),直接用這個(gè)組件的時(shí)候有個(gè)明顯缺陷:圖片加載速度的問(wèn)題琅锻。不只是輪播圖幾張圖片一起加載會(huì)慢卦停,哪怕只有一張圖,在帶寬不足的時(shí)候浅浮,它的加載動(dòng)畫(huà)沫浆,從上到下一行行掃描,非常難看滚秩。

查到兩個(gè)解決方案:

  • 先加載了一個(gè)縮略圖专执,等原圖下載完成再替換掉
  • 使用Progressive JPEG

這樣就巧妙地把問(wèn)題轉(zhuǎn)給了后端,但是從后端出發(fā)郁油,又找出兩個(gè)理由否決了

  • 后端也是我寫(xiě)本股,后端并不想多干這么多麻煩事,后端只想著把Bing壁紙API從自己后端轉(zhuǎn)載一下就完事了(因?yàn)樵瑼PI不能跨域訪問(wèn))
  • 要在自己服務(wù)器存圖片桐腌。從自己服務(wù)器加載圖片的速度……還是算了吧

在多次查找MDN文檔和觀察Bing原網(wǎng)站之后得到一個(gè)利用JavaScript的Image對(duì)象作預(yù)加載的方案

const img = new Image();
img.src = url;
img.addEventListener('load', () => {
  this.el.style.opacity = 1;
})

即使沒(méi)有添加到DOM中拄显,JavaScript中加載的Image對(duì)象也能成為圖片緩存“刚荆基于這個(gè)原理躬审,讓圖片元素的opacity(不透明度)先置0嘶朱,在JavaScript中new一個(gè)相同url的Image對(duì)象月匣,當(dāng)這個(gè)Image對(duì)象加載完成的時(shí)候,DOM中的圖片由于是同一張毡鉴,所以也加載完成了石挂,再讓圖片顯示出來(lái)博助,就沒(méi)有了難看的逐行掃描過(guò)程。

那段時(shí)間剛好看了個(gè)react代碼的簡(jiǎn)單介紹痹愚,又剛理解了類(lèi)和對(duì)象富岳,就把bing壁紙組件寫(xiě)成了大概這個(gè)樣子

class Wallpaper {
  constructor(el) {
    fetch...
  }
  backward () {
    ...
  }

  forward () {
    ...
  }
  render () {
    ...
  }
}

輪播組件也懶得用了蛔糯,干脆扔了Bootstrap, 把navbar也寫(xiě)成了這么個(gè)類(lèi)

沒(méi)有了CSS,手寫(xiě)CSS又麻煩起來(lái)窖式,又滾去學(xué)習(xí)了Sass預(yù)處理器

當(dāng)前版本

由數(shù)據(jù)驅(qū)動(dòng)視圖蚁飒,這不就是各大前端MV*框架最開(kāi)始要解決的問(wèn)題?加上自己寫(xiě)的模型不斷地發(fā)現(xiàn)新bug脖镀,怒棄第一版飒箭,上了Vue全家桶做WebApp,后端寫(xiě)成RESTful API蜒灰,前后分離弦蹂。

用上Vue之后腰也不酸腿也不疼了,雖然開(kāi)始也遇到些頭疼的問(wèn)題强窖,但最后總能發(fā)現(xiàn)是文檔閱讀不認(rèn)真凸椿,在文檔里往往就有答案

事情的發(fā)展總是難以預(yù)料,認(rèn)為模型簡(jiǎn)單可以手寫(xiě)翅溺,最后還是用了框架脑漫,認(rèn)為數(shù)據(jù)很少不用管理,最后還是用了Vuex咙崎。

想要管理起fetch操作优幸,發(fā)現(xiàn)怎么都不簡(jiǎn)單,不如用起Vuex和數(shù)據(jù)一起管理褪猛。第一次見(jiàn)文檔不知道那說(shuō)的都是啥网杆,當(dāng)帶著需求過(guò)來(lái)找它的時(shí)候總有種不斷恍然大悟的感覺(jué)

出于網(wǎng)站設(shè)計(jì)上的問(wèn)題,我發(fā)現(xiàn)Bing壁紙組件和網(wǎng)站其他部分并不好搭配伊滋,又不忍拋棄碳却,就把它獨(dú)立成一個(gè)單獨(dú)項(xiàng)目,可以搭配Wallpaper Engine軟件作電腦桌面笑旺,也算是物盡其用……

現(xiàn)在整站總算是搭了個(gè)樣子出來(lái)昼浦,當(dāng)然還有很多肉眼可見(jiàn)的bug,正在不斷改進(jìn)中

網(wǎng)站預(yù)覽

網(wǎng)站預(yù)覽(https://luobstack.xyz/)

前端項(xiàng)目地址

后端項(xiàng)目地址

主要技術(shù)(框架筒主、庫(kù))

  • Vue, Vuex, vue-router
  • fetch API
  • marked, highlight.js
  • Koa, koa-router
  • Mongoose

【完】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末关噪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乌妙,更是在濱河造成了極大的恐慌使兔,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冠胯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锦针,警方通過(guò)查閱死者的電腦和手機(jī)荠察,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)置蜀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悉盆,你說(shuō)我怎么就攤上這事盯荤。” “怎么了焕盟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵秋秤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脚翘,道長(zhǎng)灼卢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任来农,我火速辦了婚禮鞋真,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沃于。我一直安慰自己涩咖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布繁莹。 她就那樣靜靜地躺著檩互,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咨演。 梳的紋絲不亂的頭發(fā)上闸昨,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音雪标,去河邊找鬼零院。 笑死,一個(gè)胖子當(dāng)著我的面吹牛村刨,可吹牛的內(nèi)容都是我干的告抄。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嵌牺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼打洼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起逆粹,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤募疮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后僻弹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阿浓,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年蹋绽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芭毙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筋蓖。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖退敦,靈堂內(nèi)的尸體忽然破棺而出粘咖,到底是詐尸還是另有隱情,我是刑警寧澤侈百,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布瓮下,位于F島的核電站,受9級(jí)特大地震影響钝域,放射性物質(zhì)發(fā)生泄漏讽坏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一网梢、第九天 我趴在偏房一處隱蔽的房頂上張望震缭。 院中可真熱鬧,春花似錦战虏、人聲如沸拣宰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巡社。三九已至,卻和暖如春手趣,著一層夾襖步出監(jiān)牢的瞬間晌该,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工绿渣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朝群,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓中符,卻偏偏與公主長(zhǎng)得像姜胖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淀散,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護(hù)的Vue相關(guān)開(kāi)源項(xiàng)目庫(kù)...
    果汁密碼閱讀 23,137評(píng)論 8 124
  • 來(lái)源:github.com Vue.js開(kāi)源項(xiàng)目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei閱讀 11,631評(píng)論 1 159
  • UI組件element ★11612 - 餓了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于...
    董董董董董董董董董大笨蛋閱讀 8,525評(píng)論 6 123
  • 周末右莱,照例把孩子送回老家。 吃完飯档插,我躺在炕上玩手機(jī)慢蜓,他們都還在吃。吃著吃著就吵了起來(lái)郭膛,他倆總是這樣晨抡,說(shuō)話(huà)大聲,相...
    玲玲筱雪閱讀 175評(píng)論 1 0
  • laravel框架給我們提供了一個(gè)調(diào)試工具,這個(gè)工具在瀏覽器的下邊沿顯示通過(guò)調(diào)試工具我們可以查看到頁(yè)面運(yùn)行時(shí)的各種...
    RiverCrab閱讀 313評(píng)論 1 0