ホームページ >ウェブフロントエンド >jsチュートリアル >Koaプロジェクト建設の詳細な分析

Koaプロジェクト建設の詳細な分析

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-08 14:12:531550ブラウズ

今回は、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 サイトの他の関連記事に注目してください。

推奨読書:

vueのループトラバーサル命令とは何ですか

ポップアップウィンドウ機能を実装する2つの方法

以上がKoaプロジェクト建設の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。