(8)nodejs学習--express統合テンプレートエンジン
6481 ワード
ps:見たい大神さんたちが、私の理解性に誤りがあるかどうかについて指摘してください.今は多くのテンプレートエンジン(jade、ejsなど)があります.テンプレートエンジンを使うと、もっと便利に開発できます.しかし、テンプレートエンジンを完璧なページにしたいです.expressの協力が必要です.上に述べたように、多くのテンプレートエンジンがあります.各テンプレートはそれぞれ違っています.だから、expressはこれらの原因を適応する必要があります.expressはまず開発者がどのようなテンプレートエンジンを使っているかを知ってから、このタイプのエンジンを処理して、最終的に必要なhtmlページを生成します.しかし、expressは、自分でさまざまなテンプレートエンジンに適応することはできません.もしexpressが適応エンジンに行くならば、市場でまた1つの比較的に大衆のテンプレートのエンジンが現れて、一回のexpressを進級しなければならなくて、このように面倒なだけではなくて、ユーザーの体験感もよくなくて、そのような化、expressはこのように流行することはできないでしょう!この適応問題を解決するために、より良い中間部品のconsolidateが現れました.consolidateの主な機能は、expressに各種のエンジンを適応させることです.ヒント:consolidteのミドルウェアを使って、同じようにダウンロードします.古い方法npm install consosolidate.最初にテンプレートエンジンを勉強した時は、まだテンプレートエンジンの問題に言及していませんでした.その時は単独のエンジンに対してだけ行いました.しかし、このようにエンジンを換えるごとに、一つのエンジンを導入するのはとても気まずいです.だから、すべてのテンプレートエンジンを適応させるためには、統一インターフェースを提供します.(気持ちがいいですか?)テンプレートエンジンを適応させるには、次の3つのステップが必要です.
1、consosolidteは言います:私はあなたに似合うようにしてもいいです.何を出力しますか?これは何ですか?
エンジンテンプレートを設定しました.使用できます.
より完全なコード:
1、consosolidteは言います:私はあなたに似合うようにしてもいいです.何を出力しますか?これは何ですか?
server.set('view engine','html');
2、consolidteで言います.えっと、出力するのはhtmlだと知っていますが、テンプレートのファイルはどこに置いてありますか?教えてください.server.set('views'.'./views');
3、consolidateは言います.「はい、どのテンプレートエンジンに適していますか?jade、ejsですか?それとも他の何ですか?」server.engine('html',consolidate.ejs);
今からこの三つの操作について簡単に分析してみます.まず、ここで中間部品を使って、server.use()で呼び出すのではなく、set()を使っています.実はsetはサーバ自体、つまり全体を構成しています.first:server.set('view engine','html');
注:view engineは固定的で、意味はビューエンジンです.この文章に対して、あなたのエンジンのテンプレートは、どのような方法でユーザーにあなたを見てもらいたいですか?答えは私が選んだのです.second:server.set('views','./views');
注:私たちのテンプレートはどのフォルダの下にあるかを指定しました.最初のパラメータは固定不変で、第二のパラメータはテンプレートの場所によって変わります.third:server.engine('html',consolidate.ejs);
注:コンパイルが必要な場合は、ejsをエンジンテンプレートとして、ejsをコンパイルして、ユーザーに提示するという意味です.エンジンテンプレートを設定しました.使用できます.
server.get('/index',function(req,res){
req.render('1.ejs',{name:'blue'};
})
注意:res.render()とres.send()は、すべてユーザーにものを提示することです.しかしやはり違いがあります.そうでないと二つの方法ができません.res.render()最初のパラメータはテンプレートをコンパイルします.2番目のパラメータはテンプレートエンジンに必要な変数です.つまり、テンプレートエンジンを使って作成する場合は、レンダー()方法でコンパイルし、結果をユーザーに返す必要があります.レスリング.send();パラメータの中のものは、ユーザーに直接送るものです.より完全なコード:
const express=require('express');
const static=require('express-static');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
const bodyParser=require('body-parser');
const multer=require('multer');
const consolidate=require('consolidate');
var server=express();
server.listen(8080);
//1. cookie
server.use(cookieParser('sdfasl43kjoifguokn4lkhoifo4k3'));
//2. session
var arr=[];
for(var i=0;i<100000;i++){
arr.push('keys_'+Math.random());
}
server.use(cookieSession({name: 'zns_sess_id', keys: arr, maxAge: 20*3600*1000}));
//3.post
server.use(bodyParser.urlencoded({extended: false}));
server.use(multer({dest: './www/upload'}).any());
//4.
//
server.set('view engine', 'html');
//
server.set('views', './views');
//
server.engine('html', consolidate.ejs);
//
server.get('/index', function (req, res){
res.render('1.ejs', {name: 'blue'});
});
//4.static
server.use(static('./www'));