假设我有一个叫app。js的文件。很简单:

var express = require('express');
var app = express.createServer();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.get('/', function(req, res){
  res.render('index', {locals: {
    title: 'NowJS + Express Example'
  }});
});

app.listen(8080);

如果我在“tools.js”中有一个函数。我如何将它们导入到apps.js中使用?

还是……我应该把“工具”变成一个模块,然后需要它吗?<<似乎很难,我宁愿做tools.js文件的基本导入。


当前回答

如果,不管所有其他答案,你仍然想传统地在node.js源文件中包含一个文件,你可以使用这个:

var fs = require('fs');

// file is included here:
eval(fs.readFileSync('tools.js')+'');

为了将文件内容作为字符串而不是对象获取,必须使用空字符串连接+ "(如果您愿意,也可以使用. tostring())。 eval()不能在函数内部使用,必须在全局作用域内调用,否则没有函数或变量可访问(即不能创建include()实用函数或类似的东西)。

请注意,在大多数情况下,这是不好的做法,您应该编写一个模块。然而,在极少数情况下,您真正想要的是对本地上下文/名称空间的污染。

更新2015-08-06

请注意,这对“use strict”无效;(当你处于“严格模式”时),因为在“导入”文件中定义的函数和变量不能被执行导入的代码访问。严格模式强制执行一些由语言标准的新版本定义的规则。这可能是避免此处描述的解决方案的另一个原因。

其他回答

如果,不管所有其他答案,你仍然想传统地在node.js源文件中包含一个文件,你可以使用这个:

var fs = require('fs');

// file is included here:
eval(fs.readFileSync('tools.js')+'');

为了将文件内容作为字符串而不是对象获取,必须使用空字符串连接+ "(如果您愿意,也可以使用. tostring())。 eval()不能在函数内部使用,必须在全局作用域内调用,否则没有函数或变量可访问(即不能创建include()实用函数或类似的东西)。

请注意,在大多数情况下,这是不好的做法,您应该编写一个模块。然而,在极少数情况下,您真正想要的是对本地上下文/名称空间的污染。

更新2015-08-06

请注意,这对“use strict”无效;(当你处于“严格模式”时),因为在“导入”文件中定义的函数和变量不能被执行导入的代码访问。严格模式强制执行一些由语言标准的新版本定义的规则。这可能是避免此处描述的解决方案的另一个原因。

您可以将函数放在全局变量中,但更好的做法是将工具脚本转换为模块。这并不难——只需将您的公共API附加到exports对象。看一看理解Node.js的exports模块,了解更多细节。

您不需要新的函数或新的模块。 如果不想使用命名空间,只需执行正在调用的模块。

在tools.js

module.exports = function() { 
    this.sum = function(a,b) { return a+b };
    this.multiply = function(a,b) { return a*b };
    //etc
}

在app.js

或任何其他。js,如myController.js:

而不是

Var tools = require('tools.js'),这迫使我们使用命名空间并调用工具,如tools.sum(1,2);

我们可以简单地调用

require('tools.js')();

然后

sum(1,2);

在我的情况下,我有一个文件与控制器ctrl .js

module.exports = function() {
    this.Categories = require('categories.js');
}

和我可以使用类别在每个上下文后的公共类require('ctrls.js')()

假设我们想调用函数ping()和add(30,20),这是在lib.js文件 从main.js

main.js

lib = require("./lib.js")

output = lib.ping();
console.log(output);

//Passing Parameters
console.log("Sum of A and B = " + lib.add(20,30))

lib.js

this.ping=function ()
{
    return  "Ping Success"
}
//Functions with parameters
this.add=function(a,b)
    {
        return a+b
    }

app.js

let { func_name } = require('path_to_tools.js');
func_name();    //function calling

tools.js

let func_name = function() {
    ...
    //function body
    ...
};

module.exports = { func_name };