興亜Expressは、オリジナルキャストの超軽量サーバーフレームワークによって構築されています
エクスプレスと比較して、より自由度の高いに加えて、このようにコールバック地獄を避け、より重要なのは、自分のミドルウェアの外ES6 +非同期の使用を導入することができます。
しかし、また、コードのアップグレードので、Koa2ようv7.60以上のNode.js環境が必要です
まず、プロジェクトを作成します
1.手動でプロジェクトディレクトリを作成し、すぐにファイルpackage.jsonを生成
$ NPMのinit -y
興亜は//現在のバージョン2.4.1をインストール
CONST興亜は=( 'KOA'を必要とします)。 constのアプリ = 新しい興亜(); app.use(非同期CTX => { ctx.body = 'こんにちはこんにちは' ; }); app.listen( 3000)。
ブラウザでhttpを使用すると、プロジェクトを開始することができますapp.jsノードでcmdを入力し、入力:// localhostを:3000 /ビューのパフォーマンス
それとも、コードを変更し、package.json:
プロジェクトを実行することができ、NPM開始が同じで、コマンドを入力し、KOAのような最も基本的なアプリケーションの一つ!
2.足場KOA-generato生成プロジェクトの使用
cmdを開き、次のコマンドを入力します。
$のNPMは、KOA-ジェネレータをインストール-g
--ejs背後$ Koa2デモ-eは、テンプレートEJSを使用することです
デモファイルにcdコマンドNPMはインストール入り
プロジェクトNPM開始を実行します
第二に、プロジェクト構造
生成されたプロジェクトの建設足場の使用を見てください:
コンフィギュレーションの内容がapp.js.を導入し、それを通してプロジェクトへの入り口を見つけるために、WWW、内部ビン
node_moudelは、ソース・モジュール機能のすべてである、フォルダモジュールがロードされて生成されます。
パブリックパブリックフォルダには、いくつかのスタイル、ページのjsロジック絵を入れました。
分散要求のためのルータのルーティング機能。
ビューファイルとしてビューは、ヒスイはテキスト形式で、その内容はまた、我々はHTMLで最も精通していることかもしれません。
app.jsと設定ファイルはpackage.jsonです
第三に、ルーティングを設定
プロジェクトを手動で作成するときは、ルーティングを設定する必要があります。
CONST興亜は=( 'KOA'を必要とします)。 constのアプリ = 新しい興亜(); app.use(CTX非同期 => {興亜にコンテキストオブジェクトを提供されるCTX、//、要求と応答のパッケージ ctx.body = 'こんにちはこんにちは' ; }); app.listen( 3000)。
Contextオブジェクトを作成するすべてのHTTP要求は、我々はContext.request.pathを介してユーザによって要求されたパスを取得し、その後Context.response.bodyを介してユーザにコンテンツを送信することができます
あなたはhtmlファイル(またはモジュールファイル)に戻したい場合は興亜デフォルトの戻り値の型は、Context.response.type修正する必要があり、text / plainであります
さらに、Context.responseは、例えばContext.response.typeがContext.typeと略記するため、省略することができ、Context.response.bodyはContext.typeと略します
1.あなたはそれが非常に面倒だったので、ルータをKOA、次のように見ていない場合:
ディレクトリ内のビューファイルを作成し、新しいのindex.htmlファイルビューは、ファイルへの書き込み
次のコードapp.jsを追加します。
CONST興亜は=( 'KOA'を必要とします)。 CONSTのfs =は( 'FS'を必要とします)。 constのアプリ = 新しい興亜(); app.use(非同期(CTX、次) => { 場合(ctx.request.path === '/' ){ ctx.type = 'text / htmlの' ; ctx.body = fs.createReadStream( './ビュー/ index.htmlを' ); } 他{ )(次待ちます。 } }); app.listen( 3000)。
运行项目,node app.js. 在浏览器输入:http://localhost:3000,就可以显示出index.html页面了,如果网址输入错误的话,页面就会显示 no found
2.引入路由中间件koa-router
安装koa-router, $ npm install koa-router
2.1.在根目录下创建一个routes目录,存放路由文件,新建index.js文件
// routes/index const fs = require('fs'); const router = require('koa-router')() // 引入自调用 router.get('/', async (ctx, next) => { ctx.type = 'text/html'; ctx.body = fs.createReadStream('./views/index.html'); }); module.exports = router
修改app.js文件:
// app.js const Koa = require('koa'); const app = new Koa(); const index = require('./routes/index') app.use(index.routes(), index.allowedMethods()) app.listen(3000);
运行项目,node app.js
四、静态资源加载
在实际项目中,需要加载很多静态文件,如css、js文件,但是你没有使用插件,静态资源是无法显示的,举个例子:
在根目录下新建public文件,在public文件下新建css文件,css文件下新建index.css文件
index.css
h1{
color: red;
}
在index.html文件中引入index.css文件,再运行项目,是没有效果的:
使用koa-static -S加载静态资源 $ npm
install
koa-static -S
在app.js中新增如下代码:
const static = require('koa-static'); // 将 public 目录设置为静态资源目录 const main = static(__dirname + '/public'); app.use(main);
然后在index.html相对引入就可以了,运行就可以看到红色的字体了。
<link rel="stylesheet" href="/css/index.css">
五、模板引擎
上面加载html文件是使用fs模块的,下面使用koa-views中间件来加载html文件
安装koa-views $ npm
install
koa-views -S
在app.js中将views目录设置为模板目录:
const views = require('koa-views') app.use(views(__dirname + '/views')); // html文件、ejs文件、pug文件等......
在路由文件中,使用render方法:
const router = require('koa-router')() router.get('/', async (ctx, next) => { await ctx.render('index'); }); module.exports = router
运行项目就可以啦,记录下每天学习内容...