Koa プロジェクトを構築する手順の詳細な説明

php中世界最好的语言
リリース: 2018-04-28 14:06:40
オリジナル
2213 人が閲覧しました

今回は、Koa プロジェクトをビルドする手順について詳しく説明します。Koa プロジェクトをビルドする際の 注意事項 は何ですか?実際のケースを見てみましょう。

この記事では、Koa プロジェクトの構築プロセスの詳細な記録を紹介し、皆さんと共有します。詳細は次のとおりです:

Java の Spring MVC と 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またはフォーム)
ctx.request.body
ログイン後にコピー

リクエストレスポンス(レスポンス)

サーバーがクライアントに応答するデータ

restful

ctx.body = yourData
ログイン後にコピー
テンプレートレンダリング

デフォルトでviewsディレクトリから開始し、ファイルサフィックスは許可されません

ctx.render('layout', yourData)
ログイン後にコピー

ルートインターセプト

ログインしていない場合はリクエストを拒否しますこれは 404 を返します

const userAuth = (ctx, next) => {
  let isLogin = ctx.session.isLogin
  if(isLogin) return next()
}
router.use('/', userAuth)
ログイン後にコピー
この操作は「/a」、「/b」などのルートに含まれており、サブルートの前に使用する必要があります。そうでない場合は無効になると思います。この記事の事例を読んで方法をマスターしてください。さらに興味深い情報については、php 中国語 Web サイトのその他の関連記事を参照してください。

推奨読書:

vuex ページの更新後にデータが消去されないようにする方法

jQuery はマウス クリックの一時停止効果を実装します

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!