成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

完成一個(gè)城市選擇組件(阿里前端題目,內(nèi)附知識點(diǎn)、思路)

LiangJ / 2638人閱讀

摘要:知識點(diǎn)部分簡單的說一下我這個(gè)城市選擇組件和其中的一下知識點(diǎn)后臺我用起了一個(gè)后臺服務(wù),使用的框架,完成滿足了我的需求。還有倆個(gè)基礎(chǔ)組件,分別是滾動組件和城市組件。子組件模板必須包含至少一個(gè)插口,否則父組件的內(nèi)容將會被丟棄。

  借用了兩個(gè)已經(jīng)久經(jīng)考驗(yàn)的輪子:fastClick和better-scroll,介意可以就此打住。本文絕對原創(chuàng),手打,思路清晰,知識不難,不適合大佬觀看,謝謝。

  首先說一下,我不是阿里的人,也沒去阿里面試過,這是某微信群里的一個(gè)小伙伴給的,不是面試題不是面試題不是面試題,我現(xiàn)在的能力達(dá)不到阿里的要求。不過人沒夢想還不如咸魚,有能力的話還是想去嘗試一下。本文如有不足,請勿嘲諷,指出不足即可,謝謝。碼字不易,且看且珍惜,轉(zhuǎn)載請注明出處。原創(chuàng)博客,若侵犯貴司的利益,請私信我刪除。若覺得不錯(cuò),求個(gè)贊和github的star。

  題目如下:

  大概就是這樣吧,分析一下就是做一個(gè)城市選擇組件,實(shí)現(xiàn)的功能或者要求呢就是可以定位當(dāng)前的城市、用localstorage存儲上次定位的城市和最近選擇過的城市、可以按照輸入的字母或者文字篩選出想找的城市、將數(shù)據(jù)帶到頁面也就是一個(gè)父子傳參的問題吧、頁面使用flex布局。
我在下班閑暇時(shí)間簡單的做了一下, 如下:

  我僅僅做了這個(gè)組件,向頁面?zhèn)鲄⒌墓δ苓€沒做,可以用父子組件傳參完成。

知識點(diǎn)部分:

  簡單的說一下我這個(gè)城市選擇組件和其中的一下知識點(diǎn):

1.后臺

  我用node.js起了一個(gè)后臺服務(wù),使用的express框架,完成滿足了我的需求。我的數(shù)據(jù)來源是爬取的某網(wǎng)站的城市地址(若侵權(quán)請聯(lián)系我刪除),數(shù)據(jù)是這樣的:

    {
      "id": 151,
      "name": "鞍山",
      "pinyin": "anshan",
      "acronym": "as",
      "rank": "C",
      "firstChar": "A"
    }

  我在node端調(diào)用了某浪的一個(gè)定位接口作為我的定位服務(wù),并將數(shù)據(jù)返回,當(dāng)這個(gè)接口有問題或者沒獲取到的時(shí)候會返回定位在北京。具體代碼為:

// 獲取城市數(shù)據(jù),city為我爬取的信息
app.get("/", function (req, res) {
    res.send(city);
    res.end()
});
// 調(diào)用新浪的接口返回定位
app.get("/nowcity", function (req, res) {
    let getIpInfo = function (cb) {
        var url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json";
        http.get(url, function (res) {
            var code = res.statusCode;
            if (code == 200) {
                res.on("data", function (data) {
                    try {
                        cb(JSON.parse(data));
                    } catch (err) {
                        console.log(err)
                    }
                });
            }
        }).on("error",function(e){
            cb({
                city: "北京",
                country: "中國",
                province: "北京",
            })
        })
    };
    getIpInfo(function (msg) {
        let nowcity = msg
        res.send(nowcity)
        res.end()
    })
});
2.vue腳手架

  本次組件基于vue框架,我使用vue-cli腳手架搭建的,這一塊知識很多博客已經(jīng)講解到,不多做描述。

3.stylus

  本次我使用了css預(yù)處理程序——stylus。在vue-cli中使用stylus首先要安裝依賴:npm install stylus --save-dev、npm install stylus-loader --save-dev。然后再文件中使用