Nodejs搭建web服務器實現簡單的登陸


本服務器采用了node-koa(2.0):koa是Express下的一個web框架。

搭建步驟:

1.首先我們創建一個web-koa目錄,在目錄下創建app.js,package.json,start.js三個文件。

2.然后我們來編輯最基本的package.json文件,如下:

$ npm init

{
"name": "myapp",
"version": "1.0.0",
"description": "this is my test web app in nodejs ",
"main": "app.js",
"scripts": {
"start": "node start.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/hehongfe/weapp-node-koa.git"
},
"keywords": [
"koa"
],
"author": "*****",
"license": "ISC",
"bugs": {
"url": "https://github.com/hehongfe/weapp-node-koa/issues"
},
"homepage": "https://github.com/hehongfe/weapp-node-koa#readme",

"dependencies":{

 

}


}

其中的dependencies是我們做需要加載的模塊信息,本項目需要用到的模塊有如  koa2.0.0 

模塊安裝有兩種方式:命令行 npm install (模塊名)或者 在dependencies中配置,如下

"dependencies": {
"babel-core": "6.13.2",//用ES7編寫的JavaScript代碼,用Babel轉換成ES6以后,就可以在Node環境下執行
"babel-polyfill": "6.13.0",
"babel-preset-es2015-node6": "0.3.0",
"babel-preset-stage-3": "6.5.0",//為了讓async語法能正常執行,我們只需要指定ES7的stage-3規則。
"koa": "2.0.0",//web主模塊
"koa-router": "7.0.0",//它負責處理URL映射
"koa-bodyparser": "3.2.0"//無論是Node.js提供的原始request對象,還是koa提供的request對象,都不提供解析request的body的功能!,引入它來解析原始request請求
}

注意:json中不能有注釋。

2.然后我們在根目錄中打開控制台(app.js目錄),輸入npm install ,然后我們就可以看到一個node_modules模塊文件夾。

3.接下來編寫start.js,如下:

var register=require('babel-core/register');

register({

      presets:['stage-3']

});

require('./app.js');

接着我們建立一個專門處理url的文件夾-controller:

controller目下建立 index.js和hello.js

index.js:

function login=async (ctx,next) =>{

    console.log("method:  "+ctx.request.method+"  url :"+ctx.request.url);

    ctx.response.body=`

              <h1> welcome to you!!!</h1>

              <form action="/singin" method="post">

                <p>Name:<input name="name" value="koa"></p>

                <p>Password:<input name="password" ></p>

                <p>Name:<input type="submit" name="Submint" value="Submit"></p>

              </form>`;

}

function singin=async (ctx,next) =>{

    console.log("method:  "+ctx.request.method+"  url :"+ctx.request.url);

    var name=ctx.request.body.name;

    var password=ctx.request.body.password;

        if(name=="hehong"&&password=="123"){

      ctx.response.body=`<h1>  Congratulations on &{name}success. </h1>`;

    }else{

      ctx.response.body=`<h1>  sorry for landing. </h1>

              <a href="/">click me to relogin</a>

              `;

    }

}

 

module.exports={

  'GET /':login,

  'POST /singin':singin

}

 

 

4.在app.js同級目錄中建立controller.js文件專門來負責router的文件。

controller.js:

var fs=require('fs');

function addController(router,dir){

  var dirname=__dirname;

  var files=fs.readdirsync(dirname+'/'+dir);//讀取文件夾里的內容

  var js_files=files.filter(function(f){

          return f.endsWith('.js');

        },files);

  js_files.map(function(x){

    var mapping=require(dirname+'/'+dir+x);

           addMapping(router,mapping);

  });

}

 

 

function addMapping(router,mapping){

  for(var url in mapping){

    if(url.startsWith('GET ')){

      var path=url.substring(4);

      router.get(path,mapping[url]);

    }else if(url.startsWith('POST ')){ 

      var path=url.substring(5);

      router.poat(path,mapping[url]);

    };

  }

}

module.exports=function(dir){

  var controller_dir=dir||'controller';

      var router=require('koa-router')();

  addController(router,controller_dir);

      return router.routes()

}

 

最后編寫 app.js

app.js:

var Koa=require('koa');

var bodyParser=require('koa-bodyparser');

var controller=require('./controller');

var app=new Koa();

app.use(async(ctx,next) =>{

  console.log('method:'+ctx.requet.method+' URL :'+ctx.request.url);

});

app.use(bodyParser());//必須在 router之前

app.use(controller());

app.listen(8001);
console.log('you can listen to 8001, start your webapp work!!');

 

 

node start 

結束!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM