2015-10-15 93 views
1

我希望我的Node.JS网站每次在contact-us页面上提交表单时都会发送一封电子邮件。Node.js javascript - 从外部脚本服务器端调用函数

HTML页面

<form class="contact_us_form" method="post"> 
    <button type="submit" >Submit</button> 
</form> 

Public.js

router.post('/contact_us', function(req, res, next) 
{ 
    console.log('FORM SUBMITTED FROM CONTACT_US PAGE'); 
    sendMail(); 
}); 

utils.js

function sendMail() 
{ 
    //function body 
} 

当我按下提交对HTML则Sendmail是被称为按钮,但它不能被发现,所以html页面和public.js文件链接正确,但public.js和utils.js不是。

我该如何将函数“sendMail”链接到Public.js?此功能旨在运行在客户端上的服务器上,NOT

+1

http://www.sitepoint.com/understanding-module-exports-exports-node-js/ – sagie

回答

2

NodeJS使用modules的概念。你会从utils.js出口sendMail

exports.sendMail = sendMail; 

...并导入它public.js

var sendMail = require("./utils.js").sendMail; 

// ... 

sendMail(/*...*/); 

或:

var utils = require("./utils.js"); 

// ... 

utils.sendMail(/*...*/); 

这里有一个完整的例子:

utils.js

function sendMail() { 
    console.log("I'm sending mail now..."); 
} 

exports.sendMail = sendMail; 

public.js

var utils = require("./utils.js"); 
utils.sendMail(); 

运行它:

 
$ node public.js 
I'm sending mail now... 
+0

由于某些奇怪的原因,它仍然不能识别'sendMail'作为函数。我需要在'utils.js'内的函数声明之前还是之后放置'exports.sendMail = sendMail;'行? – Omrii

+0

@Omrii:如果它是一个函数*声明*,没关系。但最终通常是最好的。我已经添加了一个可以运行的完整示例(它并不比之前的代码块长得多:-))。 –

+0

您在public.js中编写的示例运行良好,但utils.js的解决方案不同。修复如下:'module.exports = {sendMail:function(){/ * func body * /}}' 谢谢你的帮助! – Omrii