首页 > 代码库 > Nodejs搭建web服务器实现简单的登陆

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="http://www.mamicode.com/koa"></p>

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

                <p>Name:<input type="submit" name="Submint" value="http://www.mamicode.com/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="http://www.mamicode.com/">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 

结束!!!

 

Nodejs搭建web服务器实现简单的登陆