我可以在HTML文档中运行Nodejs JavaScript脚本吗?

时间:2013-05-10 16:42:34

标签: javascript html node.js

是否可以在.html文档中运行此JavaScript代码:

<script>
    function DBConnect() {
        var mysql = require('mysql');
        var mydb = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'admin123',
            database: 'users'
        });

        var username = user_name.value;
        mydb.connect();

        var query = ('select passwd from peer where username=' + username);

        console.log(query);

        connection.end(function(err) {
            // The connection is terminated now
        });
    }
</script>

因为当我尝试总是出错时:未定义的“require”, 或者如何在其他f.e。:db.js中调用此函数? 我已经编写了从Node.js运行的脚本server.js,您认为上面的代码应该在这里运行吗?

4 个答案:

答案 0 :(得分:5)

忽略所有人建议使用browserify。如果您对客户端 - 服务器体系结构有基本的了解,那么这将是有意义的,因此对browserify的局限性有直觉。你的问题的答案是

没有

Node.js代码在服务器上运行。在您的代码中,您正在做一些无法在客户端上完成的事情。在尝试编写处理敏感信息的代码之前,您应该理解为什么。

答案 1 :(得分:2)

使用browserify,您可以在浏览器上运行一些Node.js模块,但是执行此类繁重I/O的模块无法在您的浏览器中运行。

所以不,你不能简单地使用这个Node.js代码并尝试在浏览器中运行它。您必须设计一个正确的客户端 - 服务器应用程序,服务器将对数据库进行所有访问。

您可以获得许多教程的解决方案可以是

  • 让您的浏览器JavaScript代码发出一些Ajax次请求
  • 让服务器通过查询数据库来回答这些请求,并在响应中的JSON中发送一些数据。
  • 使浏览器使用此JSON更改HTML。

你可以从google “json node.js ajax mysql”开始,但是你有很多面向你的学习。

答案 2 :(得分:2)

即使可以直接从MySQL连接到HTML数据库,也不错。如果您在HTML中包含数据库凭据,则有权访问该网页的任何人都可以访问您的数据库并使用它执行任何操作。这是一个坏主意。

答案 3 :(得分:0)

您可能尝试在浏览器中执行Node.js JavaScript代码,但无法识别require关键字。

要在浏览器中导入JavaScript文件,您应该使用以下内容:

<script src="path/to/your/JavaScript/file"></script>