用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!\n" + 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里面的对上了