JavaScriptでは、(名前のない)関数を作って、 それを括弧の中に(つまり上位の関数に渡す引数として)書く、 ということが多い。そのときに
function(...) { }
と書くのでなく、
(...) => { }
と書くと、やや見やすいコードが書ける。(ES6=JavaScript2015 からの機能)
Expressで生成された app.js本体 と そこから呼び出される、 route/*.js , views/*.jade の関係を、下の図で追いかけよう。
Javascriptは、オブジェクト指向言語でもあり、
右図のように オブジェクト名 . 属性名 という記法で
オブジェクトの属性値にアクセス(参照したり代入したり)できる。
前回の内容の概要は下図のとおり
ページ内に(index.jadeまたはlayout.jadeに)
script(src=”….”)
を入れておく
jQueryを起動
$(()=>{
})
この中に行うべきことを書く
index.jade (ほぼ全部更新した)
extends layout
block content
script(src='/lib/jquery-min.js') //バージョン確認されたし
script(src='/lib/memo.js')
input#memo
button#send
img(src='/images/send.png')
#data
each item in db
p #{item.memo}
以下に追加分だけ載せる
// -- 簡単なデータベース
var nedb=require('nedb')
var db=new nedb({filename:'app.db',
autoload:true
})
//db.insert({memo:'あいうえお'})
//db.insert({memo:'かきくけこ'})
//db.insert({memo:'さしすせそ'})
routes.db=db
//-- add の処理
app.use('/add',(req,res,nex)=>{
// 要求処理
var data=req.query.note
db.insert({memo:data})
console.log(data)
// 応答生成
res.contentType('application/json');
res.send(JSON.stringify({newdata:data}));
})
index.js ( ///の箇所が変更箇所)
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
router.db.find({},(err,data)=>{ ///
res.render('index', { xyz: data }); ///
}) ///
});
module.exports = router;
を新しく作った。
$(()=>{ //ページ読み込みが終わったら呼ばれる
$('#send').click((e)=>{ // クリック時の処理
var data=$('#memo').val()
$.get('/add',{note:data},(data)=>{ // データを送信
// サーバからの応答を受信した時の処理
var x=data.newdata
//alert("Data Loaded: " + data.newdata);
$('#output').prepend(`<p>${x}</p>`)
})
})
})