インストール
npm install koa-generator -g
复制代码
新koa2・テスト・プログラム
Koa2 koa2-test
复制代码
koa2-テストプロジェクトを入力し、実行してインストールします
npm install
复制代码
クロスENVをインストールします。
npm install cross-env --save-dev
复制代码
package.jsonを変更
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www",
"prd": "cross-env NODE_ENV=production pm2 start bin/www",
复制代码
DEV実行実行NPM
ルーティング
ルートルーティングディレクトリはディレクトリである、新しいファイルを作成しますlogin.js
users.jsを模倣するために書きますconst router = require('koa-router')()
router.prefix('/login')
router.get('/', function (ctx, next) {
ctx.body = 'this is a login response!'
})
router.get('/next', function (ctx, next) {
ctx.body = 'this is a login/next response'
})
module.exports = router
复制代码
導入app.jsで
const login = require('./routes/login')
复制代码
app.use(login.routes(), login.allowedMethods())
复制代码
このとき、デフォルトのポート番号のbin / www.jsは3000で、HTTPに、ブラウザ:// localhostを:3000 /ログイン
ログイン
インストール
npm i koa-generic-session koa-redis redis --save
复制代码
app.jsでは、ルートの前の書き込みは、ローカルコンピュータのRedisがインストールされていない場合は、インストールする必要があります
const session = require('koa-generic-session')
const redisStore = require('koa-redis')
----------------------------------------------
app.keys = ['hello123456*']
app.use(session({
cookie: {
path: '/',
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000
},
store: redisStore({
all: '127.0.0.1:6379'
})
}))
复制代码
login.jsでのテストセッション、
router.get('/session-test', async function(ctx, next){
if(ctx.session.viewCount == null){
ctx.session.viewCount = 0
}
ctx.session.viewCount++
ctx.body = {
errno: 0,
viewCount: ctx.session.viewCount
}
})
复制代码
オープン
http://localhost:3000/login/session-test
复制代码
ディスプレイに加え、リセットのリフレッシュ、変更のブラウザセッション
セッションの成功インターフェース
インストール
npm i mysql xss --save
复制代码
データモデルのインターフェースを返します。
class BaseModel{
constructor(data,message){
if(typeof data === 'string'){
this.message = data
data = null
message = null
}
if(data){
this.data = data
}
if(message){
this.message = message
}
}
}
class SuccessModel extends BaseModel{
constructor(data,message){
super(data,message)
this.errno = 0
}
}
class ErrorModel extends BaseModel{
constructor(data,message){
super(data,message)
this.errno = -1
}
}
module.exports = {
SuccessModel,
ErrorModel
}
复制代码
データベース接続の基本的な構成は、私は可視化ツールを使用して、MySQLデータベースをインストールするには、新しいフォルダconfに、confフォルダの新しいdb.js、ローカルコンピュータを作成し、動作mysqlデータベース(mysqlの公式推奨)
const env = process.env.NODE_ENV //环境变量
// 配置
let MYSQL_CONF
let REDIS_CONF
if(env === 'dev'){
// mysql
MYSQL_CONF = {
host: 'localhost',
port: '3306', //默认端口号
user: 'root',
password: '123456', //密码
database: 'myblog' //你的数据库名字
}
// redis
REDIS_CONF ={
port: '6379', //默认端口号
host: '127.0.0.1'
}
}
// 由于都是在本地,没有上线,所以 env 没有起到作用,做个提示
if(env === 'production'){
// mysql
MYSQL_CONF = {
host: 'localhost',
port: '3306',
user: 'root',
password: '123456',
database: 'myblog'
}
// redis
REDIS_CONF ={
port: '6379',
host: '127.0.0.1'
}
}
module.exports = {
MYSQL_CONF,
REDIS_CONF
}
复制代码
Redisの再配布改変app.js
const { REDIS_CONF } = require('./conf/db')
复制代码
修正
store: redisStore({
all: `${REDIS_CONF.host}:${REDIS_CONF.port}`
})
复制代码
デシベル約束を返しますmysqlのクエリをパッケージ化するために使用される新しいmysql.jsを、フォルダ、新しいフォルダDBを作成します。
const mysql = require('mysql')
const {MYSQL_CONF} = require('../conf/db')
// 创建连接对象
const con = mysql.createConnection(MYSQL_CONF)
// 连接
con.connect();
// 创建同意执行sql语句的函数
function exec(sql){
const promise = new Promise((resolve,reject) => {
con.query(sql,(err,result)=>{
if(err){
reject(err)
return
}
resolve(result)
})
})
return promise
}
module.exports = {
exec,
escape: mysql.escape
}
复制代码
新しいuser.jsの内側に新しいコントローラフォルダ、
const {exec, escape} = require('../db/mysql')
const login = async (username, password)=>{
username = escape(username)
password = escape(password)
const sql = `select username, realname from users where username=${username} and password = ${password}`
const rows = await exec(sql)
return rows[0] || {}
}
module.exports = {
login
}
复制代码
データベースに追加します。
追加されましたSQL文insert into users(username,`password`,realname) values('wangwu','123','王五')
复制代码
郵便配達の問い合わせを使用
成功全体的なプロセスである:ルート/ login.jsファイルルーティング書き込み---「コントローラ/ user.jsのは、MySQLクエリ操作を行う---」データベース操作を接続DB / mysql.js ---「のconf / db.jsデータベース基本的な構成
ます。https://juejin.im/post/5d087607f265da1baf7cedc5で再現