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
