栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js服务器和客户端之间的变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js服务器和客户端之间的变量

正如您可以在@WebServer的答案中看到的那样,节点中有多种模板引擎。
我想给你一个使用其中一个的例子-EJS:

首先安装它:

npm install ejs

server.js:

var http = require('http');var ejs = require('ejs');var fs = require('fs');http.createServer(function(req,res) {  res.writeHead(200, {'Content-Type': 'text/html'});  //since we are in a request handler function  //we're using readFile instead of readFileSync  fs.readFile('index.html', 'utf-8', function(err, content) {    if (err) {      res.end('error occurred');      return;    }    var temp = 'some temp';  //here you assign temp variable with needed value    var renderedHtml = ejs.render(content, {temp: temp});  //get redered HTML pre    res.end(renderedHtml);  });}).listen(80);

您的视图可能如下所示:

<html>   <head>   </head><body>My temperature: <%= temp %></body></html>

EJS还会

temp
为您转义(以及传递给视图的其他变量),因此您不必担心XSS攻击。

编辑

如果您不想在每个请求中读取文件,也可以编译模板:

var http = require('http');var ejs = require('ejs');var fs = require('fs');//we are not in a request handler so we may use readFileSyncvar content = fs.readFileSync('index.html', 'utf-8');var compiled = ejs.compile(content);http.createServer(function(req,res) {    var temp = 'some temp';    res.writeHead(200, {'Content-Type': 'text/html'});    res.end(compiled({temp: temp}));}).listen(80);

编辑2(回答您的评论问题)

这是使用Express和AJAX的简单示例:

server.js:

var http = require('http');var express = require('express');var app = express();app.configure(function() {    app.set('view engine', 'ejs');  //tell Express we're using EJS    app.set('views', __dirname + '/views');  //set path to *.ejs files    app.use(app.router);    //put your static files (js, css, images) into /public directory    app.use('/public', express.static(__dirname + '/public'));});//get some server data for sending it to the clientvar getData = function() {    return Math.random().toString();}app.get('/', function(req, res) {    //render index.ejs file    res.render('index', {val: getData()});});app.get('/ajax', function(req, res) {    res.send(getData());});http.createServer(app).listen(80);

views / index.ejs:

<!DOCTYPE html><html><head><script src="http://pre.jquery.com/jquery-1.11.0.min.js"></script><script src="/public/js/request.js"></script></head><body>    <h1>Val: <span id="val"><%=val%></span></h1>    <button id="loadRequest">Refresh</button></body></html>

public / js / request.js:

$(function() {    $('#loadRequest').click(function() {        $.get('/ajax', function(res) { $('#val').text(res);        });    });});

希望这可以帮助



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号