我使用Node.js用JavaScript编写了一个程序(当前有一个网站)。您可以在这里找到它:https://github.com/bhofff/Wikipedia-Image-Data-Tool
对于与JavaScript有关的几件事,我有些困惑,并且还想知道如何从python文件运行包含JavaScript API的函数。
该程序的目的是使用Wikipedia API在特定页面上下载所有图像,它们各自的描述以及主体页面。它为桌面上的每个页面创建一个新文件,并以该页面命名,所有文件都存储在该文件中。
到目前为止,用于从Wikipedia获取所有数据的Wiki.js文件是从and index.ejs(与HTML相似)在服务器上运行的。节点运行app.js来启动服务器。您转到http://localhost:3000/wiki并输入所需的Wikipedia页面的名称,它将其发送到Wiki.js,后者会收集图像URL和文本字符串,并将它们发送到未托管在服务器上并处理的WikiController.js。用页面名称创建文件夹,然后将图像和文本文件下载到其中。
我的第一个问题是Wiki.js是否必须托管在服务器上。我相信确实可以,但是只是很好奇。
假设它确实存在,并且我将其托管在服务器上,那么我需要什么,以便python脚本可以从我的计算机上调用它(发送页面名称)并接收回来的数据?基本上,我想将Wiki.js包装在可以由python脚本调用的API中。
下一步,我不想使用Node.js下载任何内容。这个问题对我来说最令人困惑,因为即使我为WikiController.js编写了所有代码,但实际上我不知道它在客户端还是服务器上的运行位置?我的理解是:
I)节点运行app.js,
II)然后在app.js中执行:
$('.presentation').on({
mouseleave: function() {
this.timer = setTimeout(function () {}, 4000);
},
mouseenter: function() {
if (this.timer) window.clearTimeout(this.timer)
}
});
运行WikiController.js并发送某种var / object(应用程序),以便可以在WikiController.js中使用它?
III)然后我们开始托管服务器:
var express = require('express');
var wikiController = require('./controllers/WikiController');
var app = express();
wikiController(app);
但是“ wikiController(app);”首先发生,所以WikiController.js只是编辑“ app”对象/无论它是什么,以便在服务器启动的下一行中,它知道用于pare的html(ejs)是什么以及如何对所有对象进行操作请求?
这与我的第一个问题有关,因为我认为“ Java创建的应用程序可以在虚拟机或浏览器中运行,而JavaScript代码只能在浏览器中运行。” node是允许我在计算机上运行JavaScript的东西吗?我很困惑。
如果我将其托管在GitHub上,API将会起作用,对吗?感觉像个愚蠢的问题,但我只想确定。
我可以使用.py或.java来运行app.js并在服务器上运行localhost(假设我已经同意让app.js不使用Node了吗)?
app.listen(3000, function() {
console.log('we be listening to da port of 3000');
});
1)我可能从GitHub托管服务器。
2)Thing1.py调用Thing2(我不在乎的python或Java或JavaScript)并将两个字符串发送到Thing2(“页面标题”,“文件目录位置”)。
3)Thing2将“页面标题”发送到GitHub上的服务器/ API
4)GitHub服务器将执行它已经在Wiki.js中执行的所有操作,但是它将在每个函数中执行而不是第二个POST请求(例如,上面的145-151、159-166行 ),它将在API的“成功:”字段中将数据(图像和文本字符串)发送回thing2,然后下载该数据。
非常感谢您提前提供的帮助!
答案 0 :(得分:1)
好的,让我们大致按您要求的顺序进行此操作,但是在某些地方会有所不同。
这里有很多问题。这些中的第一个也是最重要的一点是,您实际上并不了解Node.js是什么或其功能。如您所建议的那样,Node.js是JavaScript的服务器端实现-换句话说,它使您可以在与Web浏览器完全分开的服务器上运行JavaScript(在这种情况下,服务器为localhost
)。我真的建议您回去学习一下您正在使用的框架的基础知识,然后再尝试实现类似的东西。
如果Wiki.js
与您的Node.js服务器进行交互,是的,您需要在服务器上进行交互。由于我不知道Wiki.js
所包含内容的详细信息,因此很难比这更具体。再次,回到Node.js的基础可能会在这里有所帮助。
wikiController
在您的服务器上运行,事实证明您正在app.js
中调用它,它是服务器的 。调用wikiController(app);
会“编辑” app
对象,大概是在您开始侦听连接后扩展其功能。
GitHub不是服务器主机。 GitHub页面是静态HTML,因此您无法在它们上运行API。我建议您看一下Glitch,它将允许您托管Node.js服务器以测试您的API。它是免费的,但有一些限制,但是在您进行测试时,它们可能不会影响您。它还与GitHub集成,因此您可以将更改提交到GitHub存储库,并在Web服务器上自动更新。
为了“使用.py或.java运行app.js”,如果要运行Node,则需要使用Python或Java发出针对localhost
的Web请求。 js应用程序在本地,或者您应该选择将其托管在网络上。
正如我所看到的,您在此处遇到的大多数问题是由于总体上缺乏对Node.js,JavaScript和API的基础知识所致。这不是一件坏事,但我建议您寻找深入的课程或创建简单服务器的指南,然后从那里开始。