您好,登錄后才能下訂單哦!
在瀏覽移動(dòng)版本的oschina的時(shí)候,發(fā)現(xiàn),怎么要找不到我最喜歡的翻譯頻道,正好我作為一個(gè)打雜的會(huì)一點(diǎn)node, 正愁著拿著node 不知道干什么東西好,就試著用node 做一個(gè)殼的移動(dòng)版本翻譯頻道,如果你只對(duì)代碼有興趣的話,可以直接去 下載下來(lái)運(yùn)行看看效果https://github.com/youxiachai/nodeScrapeOscTranslationChannel
其實(shí),所謂的套殼,就是我們俗稱的采集類網(wǎng)站,把別人網(wǎng)站的數(shù)據(jù),變成自己的網(wǎng)站,雖然,不是上得了臺(tái)面的東西,不過(guò),如果不是用現(xiàn)成的采集工具,而是自己動(dòng)手來(lái)干的話,你會(huì)對(duì)dom樹(shù)的操作,網(wǎng)頁(yè)的處理有更好的理解.基于某種考慮,特別寫(xiě)上.
nodejs
jsdom
hashmap
express
我們要從外部改造一個(gè)網(wǎng)站,首先需要熟悉我們要改造對(duì)象的網(wǎng)站結(jié)構(gòu),將oschina 翻譯頻道進(jìn)行草稿化,如下圖
經(jīng)過(guò)我簡(jiǎn)單分析以后然后轉(zhuǎn)換為移動(dòng)版本的話
在我的設(shè)計(jì)中只保留了分類,和列表,而在接下來(lái)的代碼實(shí)現(xiàn)中,我只實(shí)現(xiàn)了列表的部分...
翻譯頻道譯文列表的解析轉(zhuǎn)換代碼 請(qǐng)移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實(shí)現(xiàn)會(huì)有點(diǎn)不同.
幸好翻譯頻道的結(jié)構(gòu)挺簡(jiǎn)單的,由于剛上手js不久,這個(gè)第一版的dom解析代碼還可以進(jìn)行簡(jiǎn)化,雖然,現(xiàn)在這個(gè)版本挺難看的但是,可以跑起來(lái).
這段代碼的主要干了以下事情:
迭代每個(gè)div.article 結(jié)點(diǎn)獲取列表的信息,并且用<li />
標(biāo)簽進(jìn)行包裝
把鏈接轉(zhuǎn)換為相對(duì)鏈接.
最終的效果:左邊為原頁(yè)面,右邊為移動(dòng)版本
好了,這就完成了web -> mobile 頁(yè)面的轉(zhuǎn)換,接下來(lái)我們轉(zhuǎn)化一下內(nèi)容頁(yè).
草稿部分忽略,拍照什么的挺麻煩的.. 翻譯頻道譯文內(nèi)容的解析轉(zhuǎn)換代碼 請(qǐng)移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實(shí)現(xiàn)會(huì)有點(diǎn)不同.
這部分就比較簡(jiǎn)單了,dom的操作
獲取譯文內(nèi)容
移除了譯者信息..
最終的效果:左邊為原頁(yè)面,右邊為移動(dòng)版本
內(nèi)容方面我們就搞定了.下面的部分就是如何部署一個(gè)套殼的網(wǎng)站
前提: 對(duì)express 有一定了解
要web 化很簡(jiǎn)單,只需要把剛才的解析代碼放到路由里面即可,詳細(xì)實(shí)現(xiàn)看源碼..
app.get('/', callback);
app.get('/translate/:title', callback);
最終演示用地址掛在我自己的服務(wù)器上(用了google的短網(wǎng)址服務(wù)可能有轉(zhuǎn)換慢,或者無(wú)法訪問(wèn)的情況) :演示網(wǎng)址http://goo.gl/K3Dc8
最近,kindle入華貌似變成了事實(shí),特此貼上kindle瀏覽的效果..圖片壓縮了一下,可能效果差了不少,不過(guò)對(duì)于kindle3 而言中文字體的確很難看,有kpw可否貼下?
由于整個(gè)程序雖然代碼不多,不過(guò)需要的知識(shí)的廣度不少,例如,dom樹(shù),jsdom ,express, html5, 每個(gè)知識(shí)都只是用了那么一點(diǎn)...寫(xiě)起來(lái)真不好下手,有興趣的朋友,可以fork 我github的項(xiàng)目,地址,開(kāi)頭就給了.
當(dāng)然,這個(gè)程序是一個(gè)半成品(一個(gè)晚上的代碼,再花了一個(gè)晚上寫(xiě)這篇博文),很多東西都還沒(méi)加上...接下來(lái),我應(yīng)該會(huì)著手實(shí)現(xiàn)webapp離線化....
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。