[解決済み] res.render」は何をするもので、htmlファイルはどのようなものになるのでしょうか?
質問
<ブロッククオート
とは何ですか?
res.render
また、そのhtmlファイルはどのようなものでしょうか?
私の最終目標は、テキストファイルから任意のカンマ区切り値をhtmlファイルに読み込むことです(例)。私は、ビューがhtmlファイルであり、コールバックがそのhtmlファイルを返すと推論することができました。
以下はそのドキュメントです。 http://expressjs.com/api.html#res.render .
さて、私が見つけたいくつかのサンプルコードから文脈を考えると、何か
ejs
(埋め込みjavascript)と
<%
と
%>
.
しかし、付け加えるとすれば、私が無能なだけなのか、それともドキュメントが本当に曖昧で、読者がすべてを知っていると思い込んでいるのか?どうすれば自分で解決できたのでしょうか?使用方法、利点、落とし穴を完全に理解できるような公式のドキュメントはないのでしょうか?
編集1
私は、このようなことを学ぶのに非常に苦労していることを付け加えておきたいと思います。
node.js
.
一般的なドキュメントが本当に曖昧なのは、私のせいでしょうか?上記のようないい加減な説明はともかく、パラメータや戻り値の型指定がないのです。
編集2
コードの上でもう少し具体的な質問をさせてください。
実際の
orders.ejs
ファイルは
views/orders.ejs
. このコードはどのようにそれを参照しているのでしょうか?
HTMLの抜粋です。
<tbody>
<% for(var i=0; i<orders.length; i++) {%>
<tr>
<td><%= orders[i].id %></td>
<td><%= orders[i].amount %></td>
<td><%= orders[i].time %></td>
</tr>
<% } %>
そして、js。/ordersをご覧ください。
// Define routes for simple SSJS web app.
// Writes Coinbase orders to database.
var async = require('async')
, express = require('express')
, fs = require('fs')
, http = require('http')
, https = require('https')
, db = require('./models');
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('port', process.env.PORT || 8080);
// Render homepage (note trailing slash): example.com/
app.get('/', function(request, response) {
var data = fs.readFileSync('index.html').toString();
response.send(data);
});
// Render example.com/orders
app.get('/orders', function(request, response) {
global.db.Order.findAll().success(function(orders) {
var orders_json = [];
orders.forEach(function(order) {
orders_json.push({id: order.coinbase_id, amount: order.amount, time: order.time});
});
// Uses views/orders.ejs
response.render("orders", {orders: orders_json});
}).error(function(err) {
console.log(err);
response.send("error retrieving orders");
});
});
// Hit this URL while on example.com/orders to refresh
app.get('/refresh_orders', function(request, response) {
https.get("https://coinbase.com/api/v1/orders?api_key=" + process.env.COINBASE_API_KEY, function(res) {
var body = '';
res.on('data', function(chunk) {body += chunk;});
res.on('end', function() {
try {
var orders_json = JSON.parse(body);
if (orders_json.error) {
response.send(orders_json.error);
return;
}
// add each order asynchronously
async.forEach(orders_json.orders, addOrder, function(err) {
if (err) {
console.log(err);
response.send("error adding orders");
} else {
// orders added successfully
response.redirect("/orders");
}
});
} catch (error) {
console.log(error);
response.send("error parsing json");
}
});
res.on('error', function(e) {
console.log(e);
response.send("error syncing orders");
});
});
});
// sync the database and start the server
db.sequelize.sync().complete(function(err) {
if (err) {
throw err;
} else {
http.createServer(app).listen(app.get('port'), function() {
console.log("Listening on " + app.get('port'));
});
}
});
// add order to the database if it doesn't already exist
var addOrder = function(order_obj, callback) {
var order = order_obj.order; // order json from coinbase
if (order.status != "completed") {
// only add completed orders
callback();
} else {
var Order = global.db.Order;
// find if order has already been added to our database
Order.find({where: {coinbase_id: order.id}}).success(function(order_instance) {
if (order_instance) {
// order already exists, do nothing
callback();
} else {
// build instance and save
var new_order_instance = Order.build({
coinbase_id: order.id,
amount: order.total_btc.cents / 100000000, // convert satoshis to BTC
time: order.created_at
});
new_order_instance.save().success(function() {
callback();
}).error(function(err) {
callback(err);
});
}
});
}
};
解決方法は?
<ブロッククオートres.renderは何をし、htmlファイルはどのようなものになるのでしょうか?
res.render()
機能
テンプレートをコンパイルします。
(ejsは使わないでください)、そこにlocalsを挿入し、これら2つのものからhtml出力を作成します。
回答 編集2 の部分です。
// here you set that all templates are located in `/views` directory
app.set('views', __dirname + '/views');
// here you set that you're using `ejs` template engine, and the
// default extension is `ejs`
app.set('view engine', 'ejs');
// here you render `orders` template
response.render("orders", {orders: orders_json});
つまり、テンプレートパスは
views/
(最初の部分) +
orders
(後半部分) +
.ejs
(第3部) ===
views/orders.ejs
とにかく、express.jsのドキュメントは、何をするにも良いものです。APIリファレンスであって、node.jsの使い方の本ではありません。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント