【问题标题】:Using ExpressJS on Server and JQuery on Client static links在服务器上使用 ExpressJS,在客户端静态链接上使用 JQuery
【发布时间】:2016-03-09 00:21:13
【问题描述】:

刚开始学习 jQuery 和 node.js,效果非常好。但是此时我发现了一个问题,一次又一次的google无法解决。可能很简单,但是查不出来……

原来是这样:

我正在用 ExpressJS/Node.JS 编写我的服务器,向服务器提供这样的网页:

router.get("/", function(req, res) {
 res.sendFile(path + "index.html");
});

在客户端,我用这样的 jQuery 请求页面

<li><a id="show-catchem" href="#page-content">CatchEm</a></li>

$("#show-catchem").click(
  function() {
    $("#content-page").load("html/catchem.html #page-content");
  }
);

这很好用,但我也想做 jQuery 的东西,当点击其他地方的链接时,比如 Facebook 上的链接:

www.homepage.com/catchem

我可以用 ExpressJS 回答这个问题,但不知道如何在客户端将其插入到主页中。

希望我说清楚了, 干杯:)

【问题讨论】:

  • 为此,您必须为该 URL 设置路由器。否则它将无法识别请求。
  • 是的,这不是问题 router.get("/catchem", function(req, res) { res.sendFile(path + "catchem.html"); }); - 但是如何将其集成/注入到主页面并返回?

标签: javascript jquery node.js express


【解决方案1】:

您可以向服务器发出请求,然后在服务器中检索 HTML 内容并通过诸如jade 之类的视图引擎将其传递给客户端。在 Jade 中,为了注入变量中的 html 内容,您必须使用 != 运算符,它不会转义内容。由于在下面的示例中,我向您展示的 HTML 内容是一个完整的页面,因此我会将其注入页面的根目录,如果您想将内容放在其他位置,则需要将 HTML 内容与标签相关联(例如: 将内容附加到div 标签div!= content

例子:

服务器

// send the HTML content to the client view through responseHTML variable
router.get('/catchem', function(req, res){
    request.get('http://www.google.com', function(err, response, body){
        res.render('catchem', {responseHtml: body});
    });
});

客户端(catchem.jade 页面)

!= responseHtml

【讨论】:

  • 谢谢,不用玉也可以吗?每次我点击页面内的链接时,这不会导致客户端下载整个页面吗?
  • 是的,我只是向您展示如何将 HTML 内容注入客户端视图。您可以将请求保存到文件中,然后使用 fs 或使用其他方法(保存在内存中)加载它,也许您的 HTML 内容是静态文件,您只需要加载而不是使用 request 模块。您也可以使用另一个视图引擎,唯一的一点是弄清楚如何注入(取消转义)内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多