使用vue.js構(gòu)建一個(gè)知乎日?qǐng)?bào)

Vue.js是我所喜愛(ài)的庆尘,知乎也是我喜愛(ài)的,突發(fā)奇想使用vue做了一個(gè)知乎日?qǐng)?bào)

項(xiàng)目地址:

Github地址
在線預(yù)覽demo

設(shè)計(jì):

1.設(shè)計(jì)上沒(méi)有按照知乎日?qǐng)?bào)客戶端的交互及UI設(shè)計(jì)來(lái)做司忱,本渣親自捏了一個(gè)涮毫,顏色以黑白灰為主蜓肆,本來(lái)想加入知乎的藍(lán)色,但是本渣設(shè)計(jì)功力實(shí)在太差舀奶,故舍棄掉了藍(lán)色暑竟,只采用黑白灰三色。

2.日?qǐng)?bào)條目采用無(wú)邊界設(shè)計(jì)伪节,只添加淡灰色的分割線來(lái)區(qū)分光羞。

3.整個(gè)網(wǎng)頁(yè)是一個(gè)單頁(yè)應(yīng)用(Single Page Web App),所有的數(shù)據(jù)使用vuex來(lái)進(jìn)行管理怀大,在store里統(tǒng)一管理纱兑。

預(yù)覽:

預(yù)覽圖片

涉及到的技術(shù):

  1. 該項(xiàng)目使用vue-cli構(gòu)建、打包化借,配合vue全家桶(vue潜慎、vuexvue-router)進(jìn)行編碼蓖康、開(kāi)發(fā)

  2. 基礎(chǔ)樣式使用basscss铐炫,basscss對(duì)層疊樣式表的設(shè)計(jì)方式簡(jiǎn)練、高效蒜焊、可復(fù)用性強(qiáng)

  3. 網(wǎng)絡(luò)請(qǐng)求使用axios

  4. 后臺(tái)使用Node.js

vuex架構(gòu)

  1. 將getters倒信、mutations、actions變量名設(shè)定一個(gè)命名空間泳梆,否則store寫(xiě)的大了鳖悠,命名肯定會(huì)亂,示例:
// actions types
export const FECTH_NEWS_LATEST = 'FECTH_NEWS_LATEST'                // 最新消息列表
// mutstions types
export const TOGGLE_NEWS_LATEST = 'TOGGLE_NEWS_LATEST'              // 最新消息列表
//  getters types
export const DONE_NEWS_LIST_ROOT = 'DONE_NEWS_LIST_ROOT'            // 最新消息列表梗

命名具有意義优妙,并且寫(xiě)好注釋乘综。

  1. store分模塊
    其實(shí)不用分模塊,但還是分一下吧套硼,為后續(xù)開(kāi)發(fā)著想卡辰。

  2. 使用getters將狀態(tài)(state)、數(shù)據(jù)(data)發(fā)往頁(yè)面模版(template)上邪意,發(fā)數(shù)據(jù)有兩三種方式九妈,根據(jù)自己習(xí)慣來(lái)吧,我是這樣做的:

[types.DONE_NEWS_LIST_ROOT]: state => {
        return state.NewsListRoot
    }
computed: {
        ...mapGetters(['DONE_NEWS_LATEST', 'DONE_LOADING_ONE', 'DONE_LOADING_TWO', 'DONE_NEWS_LIST_ROOT'])
    }
<div v-for="list in DONE_NEWS_LIST_ROOT">
        <!-- ===使用v-for來(lái)循環(huán)渲染數(shù)據(jù)=== -->
</div>
  1. mutations與actions:
    a雾鬼、mutations是用來(lái)處理同步的事情的萌朱,比如給state中的變量賦值;
    b呆贿、actions是用來(lái)處理異步的事情嚷兔,比如網(wǎng)絡(luò)請(qǐng)求;
    c做入、但是actions也是可以做同步的事情的冒晰,但最好按照vuex的建議來(lái)做:在mutations中處理同步操作

具體怎么處理的看我的github,記得點(diǎn)點(diǎn)贊啥的:
vuex地址
store地址

遇到的難題:

  1. 跨域竟块『耍跨域是前端一個(gè)老生常談的問(wèn)題,我使用node做了一下中轉(zhuǎn)浪秘,示例代碼如下:
router.get('/news/latest', function (req, res, next) {
    var options = {
        method: "GET",
        url: "http://news-at.zhihu.com/api/4/news/latest"
    };
    request(options, function (error, response, body) {
        if (error) throw new Error(error);
        res.json(JSON.parse(body))
    });
});

2.日?qǐng)?bào)詳情的渲染蒋情。日?qǐng)?bào)詳細(xì)內(nèi)容知乎是一個(gè)html格式的字符串,而數(shù)據(jù)的請(qǐng)求及渲染是異步的耸携,正常情況下來(lái)說(shuō)棵癣,瀏覽器是無(wú)法解析成功的,但是vue提供的一個(gè)v-html方法夺衍,可以搞定狈谊,示例代碼如下:

<div v-html="DONE_NEWS_DETAIL.body"></div>

其中DONE_NEWS_DETAIL是數(shù)據(jù)

后記:

大家多多交流,互相學(xué)習(xí)啊沟沙,寫(xiě)的不好的地方情指正哦河劝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市矛紫,隨后出現(xiàn)的幾起案子赎瞎,更是在濱河造成了極大的恐慌,老刑警劉巖颊咬,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件务甥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贪染,警方通過(guò)查閱死者的電腦和手機(jī)缓呛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杭隙,“玉大人哟绊,你說(shuō)我怎么就攤上這事√翟鳎” “怎么了票髓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铣耘。 經(jīng)常有香客問(wèn)我洽沟,道長(zhǎng),這世上最難降的妖魔是什么蜗细? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任裆操,我火速辦了婚禮怒详,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踪区。我一直安慰自己昆烁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布缎岗。 她就那樣靜靜地躺著静尼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪传泊。 梳的紋絲不亂的頭發(fā)上鼠渺,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音眷细,去河邊找鬼拦盹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溪椎,可吹牛的內(nèi)容都是我干的掌敬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼池磁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奔害!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起地熄,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤华临,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后端考,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雅潭,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年却特,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扶供。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裂明,死狀恐怖椿浓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闽晦,我是刑警寧澤扳碍,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站仙蛉,受9級(jí)特大地震影響笋敞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荠瘪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一夯巷、第九天 我趴在偏房一處隱蔽的房頂上張望赛惩。 院中可真熱鬧,春花似錦趁餐、人聲如沸坊秸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阶牍,卻和暖如春喷面,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背走孽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工惧辈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人磕瓷。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓盒齿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親困食。 傳聞我的和親對(duì)象是個(gè)殘疾皇子边翁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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

  • 安裝 npm npm install vuex --save 在一個(gè)模塊化的打包系統(tǒng)中,您必須顯式地通過(guò)Vue.u...
    蕭玄辭閱讀 2,938評(píng)論 0 7
  • Vuex是什么硕盹? Vuex 是一個(gè)專為 Vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式符匾。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件...
    蕭玄辭閱讀 3,120評(píng)論 0 6
  • vuex是什么鬼? 如果你用過(guò)redux就能很快的理解vuex是個(gè)什么鬼東西了瘩例。他是vuejs用來(lái)管理狀態(tài)的插件啊胶。...
    麥子_FE閱讀 6,868評(píng)論 3 37
  • 上次學(xué)習(xí)了vue-router的使用,讓我能夠在各個(gè)頁(yè)面間切換垛贤,將頁(yè)面搭建了起來(lái)焰坪。這次則要學(xué)習(xí)vue的狀態(tài)管理模式...
    VioletJack閱讀 29,076評(píng)論 3 46
  • vuex 場(chǎng)景重現(xiàn):一個(gè)用戶在注冊(cè)頁(yè)面注冊(cè)了手機(jī)號(hào)碼,跳轉(zhuǎn)到登錄頁(yè)面也想拿到這個(gè)手機(jī)號(hào)碼聘惦,你可以通過(guò)vue的組件化...
    sunny519111閱讀 8,017評(píng)論 4 111