国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何使用Excel來做網(wǎng)站后臺(tái)

nanchen2251 / 2614人閱讀

摘要:或者可以更加傻瓜一點(diǎn),把過程寫到一個(gè)回調(diào)函數(shù)中的請(qǐng)求或者原生的的方法,這樣產(chǎn)品訪問某一個(gè)就可以自動(dòng)生成頁面了。又或者終極一點(diǎn),把上線過程也寫到回調(diào)函數(shù)中,這樣便實(shí)現(xiàn)了從到線上頁面的全部自動(dòng)化,整個(gè)過程對(duì)產(chǎn)品人員完全不可見。

專題頁面通常是一些為了當(dāng)時(shí)的活動(dòng)而做的一些短期的頁面,有的專題,僅僅是一些說明信息,沒有過多的鏈接,此時(shí)直接切大圖就可以完成。而有一些專題是為了推廣自家或者其他方的產(chǎn)品,常常會(huì)有很多鏈接在頁面中,而通常情況下,產(chǎn)品提供給開發(fā)人員的是一個(gè)包含很多URL地址和圖片地址的Excel文件,要把這些鏈接填到頁面中,難道真要一個(gè)個(gè)復(fù)制粘貼嗎?如果真這么做,那么這件事就變成了一件體力活。程序猿通常是很“懶”的,這種機(jī)械的勞動(dòng)當(dāng)然不符合程序猿的風(fēng)格。

我們看一下,要完成這件事,其實(shí)就是使用Excel中的數(shù)據(jù)生成一個(gè)靜態(tài)頁面,我們引用《變形金剛》里墮落金剛的一句話:

  

The Cube was merely a vessel.Its power, its knowledge, can never be destroyed.It can only transform.
魔方只不過是個(gè)載體,它的能量和知識(shí)永遠(yuǎn)不會(huì)毀滅,只是變換了形態(tài)。

數(shù)據(jù)無處不在,區(qū)別僅在于存儲(chǔ)形式,我們可以從文本、數(shù)據(jù)庫、遠(yuǎn)程等等方式獲取數(shù)據(jù),只要有了數(shù)據(jù),便可以做任何可以做的事情了。

下面介紹一下實(shí)現(xiàn)過程,我們以nodejs語言為例說明(其他語言類似)。

第一步就是把Excel中的數(shù)據(jù)提取出來,我們使用node-xlsx

var xlsx = require("node-xlsx");
var xlsxData = xlsx.parse(path.join(__dirname, "file.xlsx"));

Excel形式為

得到的xlsxData的數(shù)據(jù)形式為

{
    "worksheets": [
        {
            "name": "Sheet1", // sheet
            "data": [ 
                [ // 每一個(gè)array為表格中的一行數(shù)據(jù)
                    { // 每一個(gè)obj為表格中的一個(gè)單元格
                        "value": "火熱桑巴(大)",
                        "formatCode": "General"
                    },
                    {
                        "value": null,
                        "formatCode": "General"
                    },
                    {
                        "value": null,
                        "formatCode": "General"
                    }
                ],
                [
                    {
                        "value": "文案",
                        "formatCode": "General"
                    },
                    {
                        "value": "圖片URL",
                        "formatCode": "General"
                    },
                    {
                        "value": "轉(zhuǎn)化后鏈接",
                        "formatCode": "General"
                    }
                ],
                [
                    {
                        "value": 1,
                        "formatCode": "General"
                    },
                    {
                        "value": "http://p5.123.sogoucdn.com/imgu/2014/06/20140619140300_884.jpg",
                        "formatCode": "General"
                    },
                    {
                        "value": "http://xxxxx",
                        "formatCode": "General"
                    }
                ]
                ...

第二步就是處理數(shù)據(jù),產(chǎn)品在填寫Excel表格時(shí)當(dāng)然不會(huì)考慮開發(fā)人員會(huì)怎么使用,而我們就需要把得到的數(shù)據(jù)處理成我們方便使用的形式。我們發(fā)現(xiàn),Excel的填寫還是非常有規(guī)律的(感謝產(chǎn)品妹子),頁面的每一個(gè)區(qū)域,首先是文字說明,然后是數(shù)據(jù)類型的說明(文案、圖片URL、URL地址),然后就是地址數(shù)據(jù)了。

我們首先剔除不需要的數(shù)據(jù)

// 此處僅僅是以我的項(xiàng)目為例,應(yīng)對(duì)應(yīng)具體情況修改
xlsxData = xlsxData.worksheets[0].data;
xlsxData = xlsxData.map(function(line, index) {
    return line.filter(function(td, index) {
        return typeof td.value !== "number";
    });
});

然后根據(jù)區(qū)域的文字說明,定義一個(gè)文字到key的map

var codeMap = {
    "火熱桑巴(大)": "huoresangba1",
    "火熱桑巴(小)": "huoresangba2",
    "火熱桑巴(文字鏈)": "huoresangbaText",
    "官方戰(zhàn)服(大)": "guanfangzhanfu1",
    ...
};

之后就是遍歷每一行的數(shù)據(jù)

    var result = {},
        index = 0,
        obj = null,
        arr = null,
        item = null,
        currTitle = "";
    while (item = xlsxData.shift()) {
        if (item[0]) {
            if (codeMap[item[0].value]) {
                var pinyin = codeMap[item[0].value];
                currTitle = item[0].value;
                result[pinyin] = arr = [];
            } else if (item[0].value !== "文案") {
                obj = {};
                obj.txt = item[0].value;
                obj.url = item[1].value;
                arr.push(obj);
            }
        }
    }

最終得到的是一個(gè)名為result的object。

最后就是使用得到的對(duì)象生成靜態(tài)頁面,這里將會(huì)用到模板引擎,我們使用的是swig(ejs,jade,nunjucks等等都可以)

模板的大致形式如下:

{% for item in huoresangba1 %}

    圖片

{% endfor %}

生成頁面

var tpl = swig.compileFile(path.join(__dirname, "page.tpl"));
try {
   fs.writeFileSync("worldcup2014.html", tpl(result));
} catch (e) {
   console.log(e);
}

生成的worldcup2014.html頁面就是最終的頁面了。

此文章的最終形式為http://mai.sogou.com/zhuanti/worldcup2014.html(已失效)

為了實(shí)現(xiàn)產(chǎn)品的自助編輯,我們可以在服務(wù)器上搭建一個(gè)samba服務(wù)器,把excel文件放到samba服務(wù)器上,然后告訴產(chǎn)品直接編輯Excel文件即可。

我們可以把生成頁面的這個(gè)過程寫成一個(gè)nodejs的腳本,產(chǎn)品編輯完之后執(zhí)行node make.js即可生成頁面。或者可以更加傻瓜一點(diǎn),把過程寫到一個(gè)http回調(diào)函數(shù)中(express的get請(qǐng)求或者原生的nodejs的http方法),這樣產(chǎn)品訪問某一個(gè)URL就可以自動(dòng)生成頁面了。又或者終極一點(diǎn),把上線過程也寫到http回調(diào)函數(shù)中,這樣便實(shí)現(xiàn)了從excel到線上頁面的全部自動(dòng)化,整個(gè)過程對(duì)產(chǎn)品人員完全不可見。

對(duì)于經(jīng)常需要修改的頁面,這個(gè)過程可以使得開發(fā)人員從枯燥的復(fù)制粘貼鏈接的過程中解放出來,完全交給產(chǎn)品自助完成,而產(chǎn)品使用起來也是十分方便,僅需要關(guān)注Excel的編輯即可,可以節(jié)省大量的交流成本。這種形式適合于短期的,需要經(jīng)常修改的,而又沒必要做一個(gè)完整后臺(tái)的頁面。

一般來說,一個(gè)健全的部門或者公司應(yīng)該都有一個(gè)專門的專題制作、發(fā)布系統(tǒng)。這種方法相對(duì)來說還是較為原始的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/49514.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...

    lifesimple 評(píng)論0 收藏0
  • 如何后臺(tái)管理系統(tǒng)寫出花

    摘要:知識(shí)在于分享,也是希望和大家交流下,如何把后臺(tái)管理系統(tǒng)寫得能更具工程化,模塊化,更有效率。后臺(tái)管理系統(tǒng)多為端,所以和的技術(shù)運(yùn)用不多,會(huì)根據(jù)產(chǎn)品需求進(jìn)行優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)。 前兩天看segmentfault的時(shí)候,突然間,想寫篇文章總結(jié)一下那些年自己寫過的后臺(tái)管理系統(tǒng)。作為我前端的入門項(xiàng)目,我對(duì)后臺(tái)管理系統(tǒng)的感情還是挺深的。本著以下幾點(diǎn)原因,寫了此文。 對(duì)后臺(tái)管理系統(tǒng)做一個(gè)綜合全面的總...

    sugarmo 評(píng)論0 收藏0
  • 如何后臺(tái)管理系統(tǒng)寫出花

    摘要:知識(shí)在于分享,也是希望和大家交流下,如何把后臺(tái)管理系統(tǒng)寫得能更具工程化,模塊化,更有效率。后臺(tái)管理系統(tǒng)多為端,所以和的技術(shù)運(yùn)用不多,會(huì)根據(jù)產(chǎn)品需求進(jìn)行優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)。 前兩天看segmentfault的時(shí)候,突然間,想寫篇文章總結(jié)一下那些年自己寫過的后臺(tái)管理系統(tǒng)。作為我前端的入門項(xiàng)目,我對(duì)后臺(tái)管理系統(tǒng)的感情還是挺深的。本著以下幾點(diǎn)原因,寫了此文。 對(duì)后臺(tái)管理系統(tǒng)做一個(gè)綜合全面的總...

    xi4oh4o 評(píng)論0 收藏0
  • 第一篇(從django后臺(tái)解析excel數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫)

    摘要:總結(jié)整個(gè)過程的難點(diǎn)在于獲取文件對(duì)象,從數(shù)據(jù)中取值然后在按取出,這樣我們就可以從后臺(tái)上傳文件,然后進(jìn)行批量導(dǎo)入數(shù)據(jù)庫,其他數(shù)據(jù)格式只需要改和中的數(shù)據(jù)字段就可以 第一篇(從django后臺(tái)解析excel數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫) 文章會(huì)在github中持續(xù)更新 作者: knthony github 聯(lián)系我 1.django 如何從后臺(tái)上傳excel中批量解析數(shù)據(jù) 要從django后臺(tái)導(dǎo)入...

    2i18ns 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<