今回は、Koa プロジェクト構築の詳細な分析と、Koa プロジェクト構築の注意点について説明します。以下は実際の事例です。見てみましょう。
Spring MVC と Java の MyBatis は、基本的に Java Web の標準になっています。対応するNode JSはKoa、Express、Mongoose、Sequelizeなどです。 Koa は、Express をある程度アップグレードしたバージョンであると言えます。多くの Node JS プロジェクトは、非リレーショナル データベース (MongoDB) を使用し始めています。 Sequelize は非リレーショナル データベース (MSSQL、MYSQL、SQLLite) をサポートします。
Koaプロジェクトの構築
cnpm install -g koa-generator // 这里一定要用koa2 koa2 /foo
Koaの共通ミドルウェアの紹介
koa-generatorで生成されたアプリケーションにはすでに共通のミドルウェアが含まれていますが、ここではその中で使用されないものについてのみ説明します。
koa-less
app.use(require('koa-less')(__dirname + '/public'))
はstaticの前に使用する必要があります。そうでない場合は無効になります。
スタイルシートフォルダーに新しいstyles.lessを作成し、すべてのモジュールレスファイルをインポートします。
@import 'foo.less'; @import 'bar.less';
このようにして、すべてのスタイルが style.css にコンパイルされます。テンプレート (pug) の style.css を参照するだけです。
koa-session
// 设置app keys,session会根据这个进行加密 app.keys = ['some secret hurr']; // 配置session config const CONFIG = { key: 'bougie:session', /** (string) cookie key (default is koa:sess) */ maxAge: 1000 * 60 * 60 * 24 * 7, 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: true, /** (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));
これはルーターの前で使用する必要があります。そうでない場合は無効になります。
基本的には通常のオブジェクトとして扱うことができます
// 赋值 ctx.session.statu = value // 取值 ctx.session.statu // 删除 ctx.session.statu = null
koa-proxies
プロキシの設定に使用されます
const proxy = require('koa-proxies') app.use(proxy('/octocat', { target: 'https://api.github.com/users', changeOrigin: true, agent: new httpsProxyAgent('http://1.2.3.4:88'), rewrite: path => path.replace(/^\/octocat(\/|\/\w+)?$/, '/vagusx'), logs: true }))
ルーティング制御
開発は主にRestfulインターフェイスやテンプレートレンダリングを含むルーティング制御に焦点を当てています
パラメータの取得(リクエスト)
クエリパラメータ(?param=a)
ctx.query.param
ルーティングパラメータ(/:id)
ctx.params.id
POSTパラメータ(JSONまたはForm)
ctx.request.body
リクエストレスポンス(レスポンス)
サーバークライアントに応答します 終了データ
restful
ctx.body = yourData
テンプレートレンダリング
デフォルトではviewsディレクトリから開始し、ファイルサフィックスは許可されません
ctx.render('layout', yourData)
ルートインターセプト
ログインしていない場合はリクエストを拒否します。 return 404
const userAuth = (ctx, next) => { let isLogin = ctx.session.isLogin if(isLogin) return next() } router.use('/', userAuth)
この操作はルーティングに含まれます。「/a」、「/b」などは、サブルートの前に使用する必要があります。そうでない場合は無効になります
この記事の事例を読んでその方法をマスターしました。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がKoaプロジェクト建設の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。