模块架子初探

2016-07-23  本文已影响463人  离子来了

koa

koa安装 npm install koa@2
当安装的目录不是全局,而是相应文件夹的时候,请在相应的文件夹下主动创建<code>node_modules</code>
由于koa2还未全面支持,

redis --koa-redis-pool
const redisPool = require('koa-redis-pool')
//redis中间件
app.use(convert(redisPool({ //redis配置  convert将其转换成promise异步
  host: 'localhost',
  port: 6379,
  max: 100,
  min: 1,
  timeout: 30000,
  log: false,
  db: 0
})))
//使用redis
app.use(async (ctx, next) => {
  ctx.redis.set('name1','liyang')//redis 设置值
  console.log(await ctx.redis.get('name')) //redis 取出缓存的值,注意<code>await</code>
})

mongo --koa-mongo

const mongo  = require('koa-mongo')

app.use(convert(mongo({ 
  uri: 'mongodb://localhost:27017/user',
  max: 100,
  min: 1,
  timeout: 30000,
  log: false})
))

const f = await ctx.mongo.db("user").collection("user").findOne();

nodemon --nodemon

该模块的作用就是在使用避免每次更改的时候要重启node运行,这个模块的作用就是监听js文件的更改,然后重新运行

nodemon app.js //具体使用方法进去github里面,

runkoa--runkoa

用于语法兼容es6,不需要重复导入<code>babel</code>

npm install runkoa
app.use(require('koa-static')(__dirname + '/public'))

koa-convert--convert

用于将中间件转换成koa2可以使用的中间件

app.use(convert(staticserver(__dirname + "/public")))

koa-views--koa-views

koa的视图渲染模块,注意安装的时候使用支持koa2的(最近出了个错误就是实用koa1的了,老找不出代码错误)

npm install koa-views@next
app.use(convert(views(__dirname + '/views', { map: {html: 'nunjucks' }})))
router.get("/",async (ctx,next) => {    
    await ctx.render("index.html",{title:"tt"})
});

koa-router--koa-router

koa的路由模块,还是注意使用koa2支持的

npm install koa-router@next

koa-logger --logger日志 支持2.0

npm install koa-logger@2

onerror--onerror

npm install koa-onerror

koa-cors--koa-cors做跨域处理的(没有测试过)

npm install koa-cors

koa-better-body处理请求参数的(post)

这里描述下情况,玩koa2的时候bodyparser总是解析不了参数,所以采用这个中间件,这个中间件可以处理application/x-www-form-urlencoded、multipart/form-data、application/json的类型

npm i koa-better-body --save //--save的作用就是在package.json里面加上依赖
从header里面取数据,不用任何中间件
ctx.request.header.token//这样就可以把存在header里面的token取到
get请求取出数据,不用依赖任何中间件
ctx.request.query//结果是一个对象,get拼接的参数组成的,直接取
post请求取出数据,依赖上面的koa-beeter-body
ctx.request.fields//参数对象
ctx.request.fields.file1[0].path//上传文件的地址,这个地址是一个物理地址(这里具体使用的时候可能会使用文件操作的中间件来处理)

keygrip

koa用于cookies签名

npm install keygrip
import Keygrip from 'keygrip'
app.keys = new Keygrip(['im a newer secret', 'i like turtle'], 'sha256')//设置签名密钥
var name = ctx.request.fields.name //从post请求中取出参数
ctx.cookies.set("name",name,{signed:true})// 第三个参数设置是否签名
console.log(ctx.cookies.get("name")) //自动就回解出签名的串
签名后的字符串.png
node-uuid--node-uuid

联想到iOS的uuid就可以了

shelljs使用

nodejs执行shell脚本或者命令

npm install --save shelljs //安装
import fs from 'fs'
import shell from 'shelljs' 
const inputStr  = "inputstr"
fs.watchFile(inputStr,()=>{
    console.log("文件变动")
    shell.exec("rm -r originpath")//删除历史目录
    shell.exec("cp -r originpath newpath")//copy目录
})
上一篇下一篇

猜你喜欢

热点阅读