Javascript 是否可以将node.js文件链接到HTML?

Javascript 是否可以将node.js文件链接到HTML?,javascript,html,node.js,Javascript,Html,Node.js,我对使用html非常陌生,我想知道是否可以将节点文件链接到html。我想有一个按钮,点击后将运行节点文件中定义的功能。我想知道我的节点文件是否有节点包,是否会出错。什么都行 我认为您正在尝试执行以下操作:您有一些编写用于在Node中运行的代码。假设代码包含在文件aModule.js中。问题是,如何从浏览器中调用该文件中定义的函数。第二个问题是,他们会跑吗 首先,您当然可以使用脚本标记将aModule.js导入浏览器,就像其他javascript一样。这样,您就可以访问模块中的函数,并且这些函数可

我对使用html非常陌生,我想知道是否可以将节点文件链接到html。我想有一个按钮,点击后将运行节点文件中定义的功能。我想知道我的节点文件是否有节点包,是否会出错。什么都行

我认为您正在尝试执行以下操作:您有一些编写用于在Node中运行的代码。假设代码包含在文件aModule.js中。问题是,如何从浏览器中调用该文件中定义的函数。第二个问题是,他们会跑吗

首先,您当然可以使用脚本标记将aModule.js导入浏览器,就像其他javascript一样。这样,您就可以访问模块中的函数,并且这些函数可以在浏览器中正确运行。这完全取决于它们是否是在考虑浏览器支持的情况下编写的。我在下面举一个例子,说明一种方法(不是唯一的方法)可以做到这一点

您必须查看正在使用的特定代码,以了解如何在浏览器中访问它。此外,如果编写的代码依赖于仅在节点中可用的功能,那么您将不得不做更多的工作,可能需要修改代码,才能使其运行

在某个时候,“导入”机制将被标准化,因此这一切都将变得更容易,但现在它有点混乱

下面是在节点或浏览器中工作的模块示例

// 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>

在浏览器中尝试模块化javascript
尝试模块化。。。
警报(aModule.getMessage());

还有一个提示-看看像Browserify这样的工具。这些设计用于将节点代码转换为可以在浏览器中运行的表单。您的里程数可能会有所不同。

节点文档将告诉您许多需要了解的信息。这可能是一个很好的起点,而且MDN也很好,因为节点在服务器上运行,所以实现这一点的唯一方法是通过HTTP请求。如果你还没有意识到Ajax,请查阅它。@RobinZigmond非常感谢@罗宾兹格蒙德:你说的没错,但我认为你可能错过了OP想要做的事情。可以在浏览器中使用node.js模块,如果它们的编写允许这样做的话。@Duncan-我同意这(可能)是它们想要的,但是它们是否可以在浏览器中使用相同的文件取决于它的功能。如果它只是一个“普通”类型的JS库,比如lodash,那么是的,这很好——但是如果它涉及特定于节点的API(比如连接到数据库或访问文件系统),那么它就不能直接在浏览器中使用。当然,“Javascript就是Javascript”,但浏览器和节点是完全不同的运行时环境,其中有很多东西是有意义的,但另一个却没有意义。HTTP是连接这两个世界的唯一方式。另请参见:感谢您的冗长回复!我知道我可以将js文件链接到html,但是如果js文件有节点包呢。当这个包含节点包(来自npm)的文件在html中链接时会有任何问题吗?