以 node.js 作为后端的 HTML 中的 jQuery

Posted

技术标签:

【中文标题】以 node.js 作为后端的 HTML 中的 jQuery【英文标题】:jQuery in HTML with node.js as backend 【发布时间】:2013-07-17 22:36:57 【问题描述】:

我是 jQuery 和 node.js 的新手,这个问题困扰了我几个小时,我搜索了 *** 和谷歌但找不到解决方案。

我正在用 jQuery 测试这个“hello world”示例,并尝试使用 node.js 运行它,但没有成功。

这是我的 node.js 服务器代码:

var express = require('express');
var fs = require("fs");
var app = express.createServer(express.logger());
var path = require('path');

var indexText = fs.readFileSync("test.html");

app.use('/jquery', express.static(__dirname + '/jquery'));


app.get('/', function(request, response) 
  response.send(indexText.toString());
);

var port = process.env.PORT || 8080;
app.listen(port, function() 
  console.log("Listening on " + port);
);

如您所见,我尝试使用 express.static() 告诉 node.js jQuery lib 所在的位置。 这是 test.html 的 html:

<html>
<head>
<title>jQuery Hello World</title>

<script type="text/javascript" src="/jquery/jquery-1.2.6.min.js"></script>

</head>

<body>

<script type="text/javascript">

$(document).ready(function()
 $("#msgid").html("This is Hello World by JQuery");
);

</script>

This is Hello World by HTML

<div id="msgid">
</div>

</body>
</html>

应该打印出来:

这是 HTML 的 Hello World 这是 JQuery 的 Hello World

但它只从 HTML 打印 hello

这个问题可能很愚蠢,但我是新手,所以我需要你的帮助。谢谢。

【问题讨论】:

您的控制台是否有任何错误?网络标签上的错误? 没什么,它工作得很好,只是没有从 jQuery 打印任何东西。 您确定浏览器的控制台没有显示错误信息吗? (不是节点的控制台。) 是的,没有错误:) 【参考方案1】:

好的,我找到了解决问题的方法。 这是一个 git 存储库,其中包含对我有帮助的代码:

https://github.com/jmhdez/Nodejs-Sample

这是带有代码的教程(它是西班牙语,但让谷歌浏览器为你翻译整个页面,没关系)

http://blog.koalite.com/2011/11/tutorial-node-js-express-jquery-i-creando-la-aplicacion/

再次感谢大家的帮助

【讨论】:

你能解释一下解决方案吗?我仍然很好奇到底出了什么问题。 唯一的问题是这里 github 用户 jmhdez 使用模块 jam 来呈现视图,而我没有使用 jam,我使用的是纯 html.. 我仍然不知道为什么它适用于 jam跨度> 【参考方案2】:

app.use 使用字符串作为第一个参数是一个前缀。意思是后面应用的任何中间件都位于该前缀下。对于 jquery 的 express.static,它将位于 /jquery

因此,在您的 HTML 中,jquery-1.2.6 的 src 应该在 /jquery/jquery-1.2.6.js 下找到

你可以通过尝试加载来测试这个

http://localhost:8080/jquery/jquery-1.2.6.min.js

而不是

http://localhost:8080/jquery-1.2.6.min.js

【讨论】:

目录结构是这样的:“/web.js”和“/jquery/jquery-1.2.6.js” web.js是我启动服务器的nod​​e.js代码,所以应该好吧我猜..但它不起作用 但重点依然存在,使用的第一个参数是前缀。您可以改用 /js 并将静态指向您的 jQuery 目录。另一方面,浏览器对此一无所知,需要查看前缀目录。试试这个.. 加载 localhost:8080/jquery-1.2.6.min.js 然后尝试 localhost:8080/jquery/jquery-1.2.6.min.js 对不起,我不小心编辑了您的评论。是的,我知道,当我转到 localhost:8080/jquery/jquery-1.2.6.min.js 时,它显示了整个 jQuery 代码,但是当我运行 web.js 时它不起作用,jQuery 只是不运行 HTML里script标签里的src改了吗? 是的,我做到了,现在是这样的:跨度>

以上是关于以 node.js 作为后端的 HTML 中的 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用木偶操作作为后端的一部分吗?

简析 Node.js 特点与应用场景(让你更了解它)

如何以 Node JS 作为后端将 Mysql 数据获取并显示到 ReactJS 前端?

带有 Node.js 后端的移动应用程序 - 为客户端开发选择啥框架?

将 HTML 作为图像渲染到 Node.js 中的 Buffer 中

使用来自node.js的angularjs中的json数据作为后端和sql db