(前回の続きだが、今回はgeneratorを使わないで作る)
generatorで作った bin/www を参考にし、 とりあえずは最小限のもの。
var express=require('express')
var app=express()
// ここに appへの変更(.set, .use メソッドなど)が入る
var http = require('http')
var server = http.createServer(app)
server.listen(3000)
前回のように npmから起動してもいいし、packages.json を用意していなければ以下の方法でも起動できる。
node server.js
或は、自動再起動のライブラリ(node-devなど)が入っていれば、 その方が便利(プログラムを変更したときに自動的に再起動してくれる)。
npm install node-dev -g
:: を前提として
node-dev server.js
(右図のような構成になることを想定している。)
view engine の設定
app.set('view engine', 'pug')
静的コンテンツ用フォルダを準備
app.use(express.static('public'))
トップページの準備
app.get('/',(req,res)=>{
res.render('index')
})
views/index.pug を用意しておくこと
doctype html
p hello
ここでは前々回に作ったページを、ネットワーク型に拡張することを試みる。
CSS部分を分離
div {
background-color:red;
position: absolute;
width: 100px; height: 100px;
}
javascript部分も分離
$(()=>{
$(document).click(c)
})
function c(ev) {
bx(ev.pageX,ev.pageY)
}
function bx(x,y){
//console.log(x,y)
$('body').append(
$('<div/>').css({
left: x+'px', top: y+'px'
})
)
}
(html を生成するための)pugファイルを準備
doctype html
link(rel="stylesheet" href="css/1.css")
// ↑は style(src="css/1.css") とも書けるようだ
script(src="https://code.jquery.com/jquery-3.2.1.min.js")
script(src="js/1.js")
p hello
呼び出すためのコード
app.get('/1',(req,res)=>{
res.render('1')
})
ブラウザから開くための URL
http://localhost:3000/1
URLの後ろに ?x=100&y=200 のようなパラメータ付加(最もポピュラー)
$.get('/b',{x:x,y:y})
URLの疑似パス名として送る
$.get(`/b/${x}/${y}`)
上記(3.の送り方を前提として)を受け取ったサーバの動作
var a=[]
// で初期化をしておいて
app.get('/b/:x/:y', (req,res)=>{
var {x,y}=req.params
// 1. の送り方の場合は req.query から値を取り出す
console.log(`x=${x}, y=${y}`)
a.push([x,y])
// とりあえずデータとして記録しておく
res.send('')
// 空っぽでもいいので応答を返す必要があるようだ
// (ここは後から気づいて追加しました)
})
(以下は次回扱う)