node.js响应html页面
var http = require('http');
var luyou = require('./luyou');
var server = http.createServer();
luyou.bind(server)
server.listen(8090, function() {
console.log('访问127.0.0.1:8090')
})
var yewu = require('./yewu')
var fs = require('fs')
module.exports.bind = function(server) {
server.on('request', function(request, response) {
const url = request.url;
if (url == '/') {
response.end(yewu.data)
} else {
fs.readFile('.' + url, function(err, data) {
response.end(data)
})
}
})
}
var fs = require('fs');
var moment = require('moment');
var art_template = require('art-template');
var linkdb = require('./linkdb')
const { request } = require('http');
art_template.defaults.root = './';
module.exports.data = art_template('./index.html', {data: linkdb.data});
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'onepiece'
})
connection.connect();
var sql_r = 'select * from users';
connection.query(sql_r, function(error, data, field) {
module.exports.data = data;
result = data
})
connection.end()
// 这个使用了art-template模块渲染数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.css">
<title>Document</title>
</head>
<body>
<style>
.hero-list img {
width: 50px
}
</style>
<header>
<div class="page-header container">
<h1>海贼王 <small>角色管理器</small></h1>
</div>
</header>
<div class="container hero-list">
<a href="/add" class="btn btn-success pull-right">添加英雄</a>
<table class="table table-hover">
<thead>
<th>编号</th>
<th>名称</th>
<th>能力</th>
<th>团体</th>
<th>操作</th>
</thead>
<tbody id="tbody">
{{each data}}
<tr>
<td>{{$value.id}}</td>
<td>{{$value.name}}</td>
<td>{{$value.nengli}}</td>
<td>{{$value.jituan}}</td>
<td>
<a href="#">查看</a>
<a href="#">修改</a>
<a href="#">删除</a>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</body>
</html>
这个时候启动服务器,页面并没有显示数据,结果发现是在从数据库拿取到数据后,将数据module.exports的时候,数据并没有导出去,因为在yewu.js调用linkdb模块的时候,node.js查询数据已经结束了,所以数据没有被传出去
解决:在yewu.js使用回调函数,将数据获取
module.exports.setDatas = function(callback) {
var sql_r = 'select * from users';
connection.query(sql_r, function(error, data, field) {
callback(data)
connection.end()
})
}
linkdb.setDatas(function(datas) {
module.exports.data = art_template('./index.html', {data: datas});
})
