Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node-js中的模块化编程_Javascript_Node.js_Node Webkit - Fatal编程技术网

Javascript node-js中的模块化编程

Javascript node-js中的模块化编程,javascript,node.js,node-webkit,Javascript,Node.js,Node Webkit,在我们的node js应用程序中,所有api调用都在server.js中。这是一个正常工作的应用程序,但我不喜欢在一个文件(即server.js)中编写每个api。许多与NodeJS应用程序相关的示例都指向在一个名为app.js或server.js的文件中编写服务器端调用。为了实现代码模块化,我计划将employee.js(employee related data transaction)、library.js(library related data transaction)等不同文件中的a

在我们的node js应用程序中,所有api调用都在server.js中。这是一个正常工作的应用程序,但我不喜欢在一个文件(即server.js)中编写每个api。许多与NodeJS应用程序相关的示例都指向在一个名为app.js或server.js的文件中编写服务器端调用。为了实现代码模块化,我计划将employee.js(employee related data transaction)、library.js(library related data transaction)等不同文件中的api分离到各自的模块中。不确定这是否是正确的方法,因为node.js服务器需要在应用程序调用时启动。因此,如果api被分发到不同的文件,那么需要检查如何一次性启动NodeJS服务器

此外,我们还将node webkit与应用程序集成


需要这方面的建议。

node.js中最棒的东西之一是它的模块系统(您可以在文档:)中了解它,它提供了您想要的每一个粒度选项,从1000行文件到只导出一个常量的文件

所以只需将代码拆分成文件,
module.exports=thatthingyouwanttoexport
,然后
require('./it')
返回
app.js
。如果您是在顶层而不是在app.js中的任何回调中执行此操作,那么它将在应用程序开始时执行

少捕:

  • 所需的模块是缓存的,所以要求它两次不会执行两次文件,它可能很有用(例如,对于单例),但仍然需要注意
  • 只导出要导出的内容,因此不导出全局
一种有用的模式是导出函数,它接受参数并在调用时进行初始化,如下所示:

//accum.js
var start = 0
module.exports = function initaccum(step) {
    return function accum() {
        start += step;
        return start;
    }
}

//app.js
var accum = require('./accum.js')(1);
var http = require('http')
http.createServer(function(req, res) {
    res.end(accum());
}).listen(8080);

希望这会有所帮助。

您可以使用express中间件和node.js中的默认模块系统来实现这一点。保持代码模块化和分离是一种很好的做法。 一种常见的方法是为所有不同的路由/控制器(您的员工)添加单独的文件夹 像这样的

app.js

const express = require('express')
const app = express()

const employeeController = require('./controller/Employee');
const managerController = require('./controller/Manager');

app.use('/employee', employeeController);
app.use('/manager', managerController);


app.listen(3000, () => console.log('App listening on port 3000!'))
/controller/Employee/index.js

const express = require('express')
const router = express.Router()

router.get('/list', (req, res) => {
  res.send('Employee list')
});
router.get('/view', (req, res) => {
  res.send('Employee view')
});

module.exports = router
./controller/Manager/index.js

const express = require('express')
const router = express.Router()

router.get('/list', (req, res) => {
  res.send('Manager list')
});
router.get('/view', (req, res) => {
  res.send('Manager view')
});

module.exports = router

您甚至可以使用这里的express generator获得一个现成的样板MVC代码结构。不过,我建议根据您的需要来构建您的项目。

看看您是如何实现代码的会很有帮助。是的,我实现的方法是相同的。但是,我忘了在这篇帖子里回答。谢谢分享你的想法!!!。这肯定会有助于其他人寻找相同的问题。