对于使用html来说是很新的东西,我想知道是否可以将节点文件链接到HTML。我想要一个按钮,单击该按钮将运行节点文件中定义的功能。我想知道我的节点文件中是否包含节点软件包,如果出现任何错误。任何帮助!
答案 0 :(得分:0)
我认为您正在尝试执行以下操作:您编写了一些要在Node中运行的代码。假设代码包含在文件aModule.js中。问题是,如何从浏览器中调用该文件中定义的函数。第二个问题是,它们会运行吗?
首先,您当然可以像其他任何JavaScript一样使用script标签将aModule.js导入浏览器。然后,您也许可以访问模块中的功能,并且它们可能在浏览器中正确运行。这完全取决于他们在编写时是否考虑了浏览器支持。我在下面举例说明可以做到这一点的一种方法(不是唯一的方法)。
您将必须查看正在使用的特定代码,以查看如何在浏览器中访问它。另外,如果编写代码时仅依赖于节点内可用的功能,则您将不得不做更多的工作,可能需要修改代码才能使其运行。
在某些时候,“导入”机制将被标准化,因此这一切将变得更加容易,但是到目前为止,这有点混乱。
这是一个可以在节点或浏览器中工作的模块的示例。
// aModule.js - illustrates modularity that will work in browser or node
"use strict";
var aModule = {}; // In browser, this will put aModule into global context
// "Closure" stops other stuff from being put into global context in browser
(function () {
function getMessage() {
return "Hello";
}
// other internal code not intended to be exposed can go here...
// ...
// and here is how we expose our getMessage function
aModule.getMessage = getMessage;
})();
// If we are in node...
if (typeof module !== 'undefined' && module.exports) {
// Export our module for use in node
module.exports = aModule;
}
这是您访问node.js中功能的方式:
var aModule = require("./aModule.js");
console.log (aModule.getMessage());
以下是您在浏览器中的访问方式:
<!DOCTYPE html>
<html>
<head>
<title>Try out modularizing javascript in browser</title>
</head>
<body>
<h2>Try modularization...</h2>
<script src="aModule.js"></script>
<script>
alert(aModule.getMessage());
</script>
</body>
</html>
另一个提示-看一下Browserify之类的工具。这些旨在将节点代码转换为可以在浏览器中运行的形式。您的里程可能会有所不同。