[Node.js基礎(chǔ)]學(xué)習(xí)①②--處理URL之重構(gòu)

http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001471133885340dad9058705804899b1cc2d0a10e7dc80000

for..of for..in 區(qū)別

簡單說仿野,for in是遍歷鍵名阱扬,for of是遍歷鍵值哨毁。例如:

let arr = ["a","b"];
for (a in arr) {
    console.log(a);//1,2
}

for (a of arr) {
    console.log(a);//a,b
}

const var let 區(qū)別

const定義的變量不可以修改吃既,而且必須初始化.

var定義的變量可以修改港华,如果不初始化會輸出undefined露筒,不會報錯断部。

let是塊級作用域仿粹,函數(shù)內(nèi)部使用let定義后,對函數(shù)外部無影響崭添。

Paste_Image.png

index.js

var fn_index = async (ctx, next) => {
    ctx.response.body = `<h1>Index</h1>
        <form action="/signin" method="post">
            <p>Name: <input name="name" value="koa"></p>
            <p>Password: <input name="password" type="password"></p>
            <p><input type="submit" value="Submit"></p>
        </form>`;
};

var fn_signin = async (ctx, next) => {
    var name = ctx.request.body.name || '',
        password = ctx.request.body.password || '';
    console.log(`signin with name: ${name},password: ${password}`);
    if (name === 'koa' && password === '12345') {
        ctx.response.body = `<h1>Welcome, ${name}</h1>`;
    } else {
        ctx.response.body = `<h1>Login failed!</h1>
                <p><a href='/'>Try again</a><p>`;
    }
};

module.exports = {
    'GET /': fn_index,
    'POST /signin': fn_signin
};

hello.js

var fn_hello = async (ctx, next) => {
    var name = ctx.params.name;
    ctx.response.body = `<h1>Hello,${name}!</h1>`;
};

module.exports = {
    'GET /hello/:name': fn_hello
}

app.js

'use strict';

const fs = require('fs');
const Koa = require('koa');
const router = require('koa-router')();
const bodyParser=require('koa-bodyparser');
const app = new Koa();


var files = fs.readdirSync(__dirname + '/controllers');

console.log('__dirname/controllers:  '+__dirname+'/controllers');

var js_files = files.filter((f) => {
    return f.endsWith('.js');
});

for (var f of js_files) {
    console.log(`process controller: ${f}...`);

    let mapping = require(__dirname + '/controllers/' + f);
    for (var url in mapping) {
        console.log('url----------'+url);
        if (url.startsWith('GET ')) {
            var path = url.substring(4);
            console.log('path--------'+path);
              console.log('mapping[url]--------'+mapping[url]);
            router.get(path, mapping[url]);
            console.log(`register URL mapping: GET ${path}`);
        } else if (url.startsWith('POST')) {
            var path = url.substring(5);
            router.post(path, mapping[url]);
            console.log(`register URL mapping: POST ${path}`);
        } else {
            console.log(`invalid URL :${url}`);
        }
    }
}

app.use(bodyParser());
app.use(router.routes());
app.listen(3000);

console.log(`app started at port 3000`);

package.json

 {
    "name": "hello-koa2",
    "version": "1.0.0",
    "description": "Hello Koa 2 example with async",
    "main": "app.js",
    "scripts": {
        "start": "node app.js"
    },
    "keywords": [
        "koa",
        "async"
    ],
    "author": "Michael Liao",
    "license": "Apache-2.0",
    "repository": {
        "type": "git",
        "url": "https://github.com/michaelliao/learn-javascript.git"
    },
    "dependencies": {
        "koa": "2.0.0",
        "koa-router": "7.0.0",
        "koa-bodyparser": "3.2.0"
    }
}
記得npm install
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寓娩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呼渣,更是在濱河造成了極大的恐慌棘伴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁置,死亡現(xiàn)場離奇詭異排嫌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缰犁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怖糊,“玉大人帅容,你說我怎么就攤上這事∥樯耍” “怎么了并徘?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扰魂。 經(jīng)常有香客問我麦乞,道長,這世上最難降的妖魔是什么劝评? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任姐直,我火速辦了婚禮,結(jié)果婚禮上蒋畜,老公的妹妹穿的比我還像新娘声畏。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布插龄。 她就那樣靜靜地躺著愿棋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪均牢。 梳的紋絲不亂的頭發(fā)上糠雨,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音徘跪,去河邊找鬼甘邀。 笑死,一個胖子當(dāng)著我的面吹牛真椿,可吹牛的內(nèi)容都是我干的鹃答。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼突硝,長吁一口氣:“原來是場噩夢啊……” “哼测摔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起解恰,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锋八,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后护盈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挟纱,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年腐宋,在試婚紗的時候發(fā)現(xiàn)自己被綠了紊服。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸竞,死狀恐怖欺嗤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卫枝,我是刑警寧澤煎饼,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站校赤,受9級特大地震影響吆玖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜马篮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一沾乘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧积蔚,春花似錦意鲸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽读慎。三九已至,卻和暖如春槐雾,著一層夾襖步出監(jiān)牢的瞬間夭委,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工募强, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留株灸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓擎值,卻偏偏與公主長得像慌烧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸠儿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

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