execute a Nodejs script from an html page?(从 html 页面执行 Nodejs 脚本?)
问题描述
我目前正在使用 Express.js 来创建我的网站.我的主服务器脚本称为index.coffee
.我还创建了一个名为 request.js
的脚本,它发出 GET 请求并显示响应
I am currently using Express.js to create my website.
My main server script is called index.coffee
. I also created a script called request.js
that makes a GET request and displays the response with
console.log(list);
从控制台运行脚本时没有问题:node request.js
I have no problems when running the script from the console: node request.js
我的问题是:如何通过在同一页面上显示列表(即执行 request.js
on服务器并显示结果)?
My question is: How do I make the "Get this list" button on my the page respond to a click by displaying the list on the same page (that is, executing request.js
on the server and showing the result)?
app.js
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set ('view engine', 'coffee');
app.register('.coffee', require('coffeekup').adapters.express);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.get('/', function(req, res) {
res.render('index',{ layout: false });
});
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
index.coffee
index.coffee
doctype 5
html ->
head ->
body
p -> 嘿"
推荐答案
我使用的是纯 JS 而不是咖啡脚本,所以这里是根据 Fosco 的评论的一个示例(称之为 server.js
):
I use plain JS and not coffee script, so here's an example per Fosco's comment (call it server.js
):
var express = require('express'),
list = require('./request.js').Request; // see template
var app = express.createServer();
app.use(express.static(__dirname + '/public')); // exposes index.html, per below
app.get('/request', function(req, res){
// run your request.js script
// when index.html makes the ajax call to www.yoursite.com/request, this runs
// you can also require your request.js as a module (above) and call on that:
res.send(list.getList()); // try res.json() if getList() returns an object or array
});
app.listen(80);
编写您的 index.html
文件,并将其保存在节点应用程序目录的 /public
子文件夹中(通过 express.static
).:
Write your index.html
file, and save it in the /public
subfolder of your node app directory (which is exposed above, via express.static
).:
<html>
<body>
<div id="button">Get this List</div>
<div id="response"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#button').click(function() {
// run an AJAX get request to the route you setup above...
// respect the cross-domain policy by using the same domain
// you used to access your index.html file!
$.get('http://www.yoursite.com/request', function(list) {
$('#response').html(list); // show the list
});
});
});
</script>
</body
</html>
如果您将 request.js 包含为一个模块,则可能如下:
If you're including your request.js as a module, it could be as follows:
var RequestClass = function() {
// run code here, or...
};
// ...add a method, which we do in this example:
RequestClass.prototype.getList = function() {
return "My List";
};
// now expose with module.exports:
exports.Request = RequestClass;
在您的服务器上运行 node server.js
.然后前往 www.yoursite.com/index.html
Run node server.js
on your server. Then head over to www.yoursite.com/index.html
这篇关于从 html 页面执行 Nodejs 脚本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 html 页面执行 Nodejs 脚本?
基础教程推荐
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 响应更改 div 大小保持纵横比 2022-01-01
- 动态更新多个选择框 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在for循环中使用setTimeout 2022-01-01