我在jade模板文件(index.jade)中声明的变量(config)遇到了问题,该文件未传递给javascript文件,然后导致我的javascript崩溃.这是文件(views/index.jade):
h1 #{title}
script(src='./socket.io/socket.io.js')
script(type='text/javascript')
var config = {};
config.address = '#{address}';
config.port = '#{port}';
script(src='./javascripts/app.js')
Run Code Online (Sandbox Code Playgroud)
这是我的app.js(服务器端)的一部分:
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.set('address', 'localhost');
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', function(req, res){
res.render('index', {
address: app.settings.address,
port: app.settings.port
});
});
if (!module.parent) {
app.listen(app.settings.port);
console.log("Server listening on port %d",
app.settings.port);
}
// Start my Socket.io app and pass in the socket
require('./socketapp').start(io.listen(app));
Run Code Online (Sandbox Code Playgroud)
这是我的javascript文件的一部分崩溃(public/javascripts/app.js):
(function() {
var socket = …Run Code Online (Sandbox Code Playgroud) 我在服务器上有一个非常重量级的查询,导致新的页面呈现,我想将一些查询结果传递给客户端(作为javascript对象数组).这基本上是这样我以后不必再进行单独的JSON查询来获取相同的内容(主要是静态的).这些数据最终会有用,但最初并没有这样,所以我没有直接将其放入文档中.
app.get('/expensiveCall', function(req, res) {
// do expensive call
var data = veryExpensiveFunction();
res.render('expensiveCall.jade', {
locals: {
data: data,
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
data是一个对象数组,最初只使用了一些对象.我想传递整个数据或一些子集(取决于具体情况).我的玉看起来像普通的玉,但我想包括类似的东西
<script type="text/javascript">
var data = #{data};
</script>
Run Code Online (Sandbox Code Playgroud)
但这不起作用(它是一个对象数组).