一:
從項(xiàng)目的啟動(dòng)開(kāi)始 ./nodebb start
在項(xiàng)目中查看有沒(méi)有含有‘nodebb’的文件
找到項(xiàng)目中的/nodebb蹈垢,打開(kāi)后查找‘start’關(guān)鍵字
找到類似 ./nodebb start命令的東西畜伐,仔細(xì)查看之后發(fā)現(xiàn)走不下去了這條線就斷了
二:
打開(kāi)開(kāi)發(fā)者工具丈咐,查看頁(yè)面代碼瑞眼,選取標(biāo)簽class名在項(xiàng)目中進(jìn)行查找
應(yīng)該是可以找到很多,這個(gè)時(shí)候參考url棵逊,進(jìn)行篩選伤疙。
然后進(jìn)入到相應(yīng)的.tpl文件中,發(fā)現(xiàn)到這里又走不下去了辆影,因?yàn)槔锩嬷皇琼?yè)面的div
三:
從url入手徒像,聯(lián)想之前做過(guò)的項(xiàng)目,我們就可以去查找路由
查找路由文件秸歧,使用快捷鍵CTRL+SHIFT+a查找文件
找到/src/routes/index.js
點(diǎn)擊進(jìn)去搜索請(qǐng)求路徑厨姚,注意如果有數(shù)字的話衅澈,要考慮這個(gè)數(shù)字是否是自動(dòng)生成的键菱。
同時(shí)我們還發(fā)現(xiàn)在/src/routes/api.js,也去到這個(gè)文件里面搜一下
對(duì)于搜索的結(jié)果我們要大膽的猜測(cè):
在文件里面我們發(fā)現(xiàn)了
router.get('/topic/teaser/:topic_id', controllers.topics.teaser);
router.get('/topic/pagination/:topic_id', controllers.topics.pagination);
那么可以猜想這個(gè)類似的url可能與controller有關(guān)
查看本文件內(nèi)的controller從哪里來(lái)今布,但是沒(méi)有找到经备,
那就試著查找controller文件
找到了在/src/controllers下有一堆js文件,查找url里面的關(guān)鍵詞部默,找到了侵蒙,進(jìn)入搜索,猜想
很幸運(yùn)的是我們找到了那個(gè)文件傅蹂,在里面查找了url纷闺,找到了!
猜想url所在的函數(shù)的功能份蝴,發(fā)現(xiàn)是數(shù)據(jù)庫(kù)相關(guān)的犁功,那么打開(kāi)數(shù)據(jù)庫(kù)吧。
在數(shù)據(jù)庫(kù)中查看nodebb數(shù)據(jù)庫(kù)中的collections婚夫,
有兩張表浸卦,查看數(shù)據(jù)
然后就是驗(yàn)證猜想,將代碼案糙,數(shù)據(jù)庫(kù)和網(wǎng)頁(yè)結(jié)合起來(lái)看限嫌。
在代碼中看屬性名稱,在數(shù)據(jù)庫(kù)中找到相應(yīng)的記錄时捌,猜測(cè)功能怒医,然后在網(wǎng)頁(yè)上進(jìn)行操作,再查看數(shù)據(jù)庫(kù)的變化奢讨,從而驗(yàn)證猜想裆熙。
最終搞定兩張表。