【发布时间】:2015-07-24 17:06:04
【问题描述】:
我对 Node 很陌生,我正在使用 express。 我正在尝试实现简单的文件资源管理器。 说够了,这里有一些代码:
(本例的根目录是 /app。)
我的 app.js:
var express = require('express');
var fs = require('fs');
var path = require('path');
var ejs = require('ejs');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var explorer = require('./routes/explorer');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use("/public", express.static(__dirname + '/public'));
app.use('/', explorer);
server.listen(3000,function(){
console.log('Server started on http://localhost:3000');
});
io.on('connection',function(client){
console.log('connection with io established');
});
module.exports.app = app;
module.exports.server = server;
看到我已将“/”路由到资源管理器
和 explorer.js:
var express = require('express');
var router = express.Router();
var fs = require('fs');
router.get('/', function(req, res, next) {
res.render('explorer',{
currentPath : currentPath
});
});
function getUserHome() {
var rawPath = process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
return rawPath;
}
function clicked(){
console.log(getUserHome());
}
视图 explorer.ejs:
<div class="clickable">clickme</div>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
$('.clickable').click(function(){
socket.emit('clicked');
});
</script>
基本上我想从视图中捕获“点击”发射并触发 explorer.js 中的点击函数。换句话说,我希望视图和 explorer.js 通过 socket.io 进行对话,因此视图可以与文件系统对话。 我尝试了几种方法并得到了一堆错误。
非常感谢!
【问题讨论】:
标签: node.js model-view-controller express socket.io