在Node.js中,我如何从其他文件“包含”功能?

假设我有一个名为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文件的基本导入。


你可以要求任何js文件,你只需要声明你想要公开的内容。

// tools.js
// ========
module.exports = {
  foo: function () {
    // whatever
  },
  bar: function () {
    // whatever
  }
};

var zemba = function () {
}

并在您的应用程序文件中:

// app.js
// ======
var tools = require('./tools');
console.log(typeof tools.foo); // => 'function'
console.log(typeof tools.bar); // => 'function'
console.log(typeof tools.zemba); // => undefined

如果尽管有其他所有答案,但您仍然希望传统上将文件包含在node.js源文件中,则可以使用以下命令:

var fs = require('fs');

// file is included here:
eval(fs.readFileSync('tools.js')+'');
  • 空字符串连接+''是将文件内容作为字符串而不是对象获取的必要条件.toString()如果您愿意,也可以使用.toString() )。
  • eval()不能在函数内部使用,必须在全局范围内调用,否则不能访问函数或变量(即不能创建include()实用程序函数或类似的东西)。
  • 请注意,在大多数情况下,这是不好的做法,你应该写一个模块。 但是,在极少数情况下,您本地环境/名称空间的污染是您真正想要的。

    更新2015-08-06

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


    您不需要新功能和新模块。 如果不想使用名称空间,只需执行要调用的模块即可。

    在tools.js中

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

    在app.js中

    或者像myController.js之类的任何其他.js文件中:

    代替

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

    我们可以简单地致电

    require('tools.js')();
    

    接着

    sum(1,2);
    

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

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

    require('ctrls.js')()之后,我可以在每个上下文中使用Categories作为公共类。

    链接地址: http://www.djcxy.com/p/2883.html

    上一篇: In Node.js, how do I "include" functions from my other files?

    下一篇: check to see if string matches requirements