安装koa-generator脚手架,并创建一个项目
全局安装:cnpm install -g koa-generator 查看版本:koa2 --version 创建项目:koa2 project 默认的是用jade模板引擎的 koa2 -e koa2-learn 使用的是ejs模板引擎,项目名称koa2-learn 初始化:cnpm install 运行:SET DEBUG=koa* npm start localhost:3000 运行:方式二:开发模式/修改后自启动 npm run dev
安装mongoDB数据库,并安装mongoose
mongodb的概念及安装 非关系型数据库, mongoose为模型提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证, 查询构建,业务逻辑钩子等,开箱即用。 mongodb可视化工具RoBo 3T 安装及应用 下载地址:https://robomongo.org/download mongoose的作用 文档地址:http://www.mongoosejs.net/docs/schematypes.html 操作mongoDB数据库, mongoose的应用 安装mongoose: cnpm install mongoose
使用es6,配置babel.文件
修改package.json文件 "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node", 新增babel配置文件 .babelrc { "presets":["es2015"] } 下载babel-preset-es2015文件 cnpm install babel-preset-es2015 报错:'babel-node' 不是内部或外部命令,也不是可运行的程序 解决办法:执行cnpm i babel-core babel-preset-es2015 babel-cli
const session = require('koa-session');
const Koa = require('koa');
const app = new Koa();
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess', /** (string) cookie key (default is koa:sess) */
/** (number || 'session') maxAge in ms (default is 1 days) */
/** 'session' will result in a cookie that expires when session/browser is closed */
/** Warning: If a session cookie is stolen, this cookie will never expire */
maxAge: 86400000,
autoCommit: true, /** (boolean) automatically commit headers (default true) */
overwrite: true, /** (boolean) can overwrite or not (default true) */
httpOnly: true, /** (boolean) httpOnly or not (default true) */
signed: true, /** (boolean) signed or not (default true) */
rolling: false, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
};
app.use(session(CONFIG, app));
// or if you prefer all default config, just use => app.use(session(app));
app.use(ctx => {
// ignore favicon
if (ctx.path === '/favicon.ico') return;
let n = ctx.session.views || 0;
ctx.session.views = ++n;
ctx.body = n + ' views';
});
app.listen(3000);
console.log('listening on port 3000');