Node.js用Koa框架去搭建http服务
用Koa框架去构建http服务器,在构建http服务需要用到http模块,由于http模块是Node.js自带的模块所以不需要我们从网上去下载.
该项目会用到的几个模块
直接通过npm去安装例如: npm install koa
在项目中先建立一个app.js文件,然后引用我们已经安装过的模块 然后在 app.js里面注册或者说设置
然后我们在写一个处理url的js,类似于路由,创建一个controller.js和app.js是同级目录
const fs = require(fs); function addMapping(router, mapping) { for (var url in mapping) { if (url.startsWith(GET )) { var path = url.substring(4); 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}`);*/ } } } function addControllers(router, dir) { var files = fs.readdirSync(__dirname + /controllers); var js_files = files.filter((f) => { return f.endsWith(.js); //用于检测后缀为.js得文件 }); /* console.log(js_files);*/ for (var f of js_files) { /*console.log(`process controller: ${f}...`);*/ let mapping = require(__dirname + /controllers/ + f); addMapping(router, mapping); } } module.exports = function (dir) { let controllers_dir = dir || controllers, // 如果不传参数,扫描目录默认为controllers router = require(koa-router)(); addControllers(router, controllers_dir); return router.routes(); };
引入fs模块对写url的文件的文件夹进行扫描处理,http请求过来后根据url来对controllers文件夹进行扫描,扫描其目录下的url文件,通过请求的url来找到对应的文件中的请求。
接下来发现我们没用controllers文件夹,所以我们创建一个该文件夹。然后在里面创建一个Index.js 就把这个当作index.js把 手动滑稽,controllers文件夹下面的文件随便起名字,我们也不用引用调用之类的。因为我们已经对这个文件夹进行了全盘扫描了。 接下来就在index.js里面写返回。
var fn_hello = async (ctx, next) => { ctx.response.body = 你好!nod.js的koa; }
返回已经做好了,你现在去请求根本不知道从哪里请求。也没有url地址,是因为我们没有给这个返回绑定相应的请求路径。其实我们就把定义的这个变量绑定对应的请求地址然后exports出去
module.exports = { GET /index: fn_hello };
ok了,这下直接在该项目下输入node app.js启动项目,然后打开 http://localhost:端口号/index 就可以看见你的请求了
配置信息都要写在package.json里面 这是我的项目结构,public目录下我都放的一些链接之类的,CommFun.js里面是写了一些公共方法,Redis.js是链接Redis。其实链接Redis很简单。 model下面放的是我处理返回的一些业务逻辑
class RedisOpe{ constructor(){ this.Redis = require("redis"); this.linkRedis = this.Redis.createClient(端口之类的好像,Redis地址); } async createRedis(callback){ await this.linkRedis.on("error",function (error){ /*console.log("RedisServer is error! " + error);*/ callback(error); }); await this.linkRedis.on(connect,function(){ /*console.log(redis connect success!);*/ callback(ok); }); } } module.exports={ RedisOpe }; //redis操作完成记得关闭redis,关闭方法linkRedis.end(true);
上面就是链接Redis的方法,如果在处理返回的时候需要调用Redis里面的数据那么就直接引入这个文件。然后再进行Redis的增删改查。用完记得关闭Redis
我把端口号放在config.js里面在
这就跟我app.js里面的对上了
推荐看新版的:https://blog..net/a519637560/article/details/106812152