Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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 如何进一步增加快线?_Javascript_Node.js_Express_Architecture - Fatal编程技术网

Javascript 如何进一步增加快线?

Javascript 如何进一步增加快线?,javascript,node.js,express,architecture,Javascript,Node.js,Express,Architecture,(是否建议这样做) 我觉得路由的代码可以更容易阅读,并且可以进一步模块化调试这样做是一种好的做法吗? 我们有通常的代码 在app.js的 var users = require('./routes/users'); app.use('/users', users); 在users.js文件中,我有这些路由的代码: /user /user/bar /user/42 /user/42/baz /user/42/baz/123 我给了get、post、put和use的代码。我觉得文件太乱了 是否建

(是否建议这样做)

我觉得路由的代码可以更容易阅读,并且可以进一步模块化调试这样做是一种好的做法吗?

我们有通常的代码

在app.js的

var users = require('./routes/users');
app.use('/users', users);
users.js
文件中,我有这些路由的代码:

/user
/user/bar
/user/42
/user/42/baz
/user/42/baz/123
我给了
get
post
put
use
的代码。我觉得文件太乱了

是否建议进一步拆分
/routes/users.js
,是否有设计模式

根据要求进行编辑,尽管这是一个一般性问题

var express = require("express");
var marked = require("marked");
var OfflineMediaModel = require("../models/offlineMediaModel");
const offlineMediaRouter = express.Router();
var fs = require("fs");
var md = require("node-markdown").Markdown;
var path = require("path");
var config = require("../config");

// Middleware
offlineMediaRouter.use("/", function(req, res, next) {});
offlineMediaRouter.use("/podcasts/test", (req, res, next) => {});
offlineMediaRouter
  .post("/podcasts/test", function(req, res) {}) /// this is the only post
  .get("/", function(req, res) {})
  .get("/:podcast", function(req, res) {})
  .use("/:podcast/:episode", function(req, res, next) {})
  .get("/:podcast/:episode", function(req, res) {});
module.exports = offlineMediaRouter;

我想知道在更大的项目中,进一步模块化代码是个好主意还是不建议这样做或者routes方法中的代码是否应该

何时将路由器文件拆分为更多文件实际上就像决定何时拆分任何其他编码文件一样

  • 当感觉您拥有的文件变得太大而无法轻松维护和导航时
  • 当有界限时,谁在编写什么代码或负责什么代码,以方便团队开发
  • 在分割时,它将使事情比分割和使用多个文件所涉及的额外工作和复杂性更简单
  • 当拆分不会对分支造成不必要的复杂性时,合并团队开发环境中正在进行的其他代码工作
  • 当模块中有一些代码需要与其他模块共享或单独测试时
  • 当在片段之间共享代码时,您要拆分的代码不会使拆分过于复杂
  • 拆分路由器文件的一个相当简单的设计是,使用一个主路由器文件来创建路由器并将其导出,这就是主应用程序了解和加载的内容

    // main-router.js
    const router = require('express').Router();
    
    // some route definitions here
    
    module.exports = router;
    
    然后,可以创建子管线文件:

    // sub-router1.js
    module.exports = function(router) {
        router.get(path1, ...)
    
        router.post(path2, ...)
    }
    
    然后,将sub-router1.js集成到主路由器文件中,如下所示:

    // main-router.js
    const router = require('express').Router();
    
    // possibly some route definitions here
    
    // load and initialize sub-router1.js
    require('./sub-router1.js)(router);
    
    // possibly some route definitions here
    
    module.exports = router;
    

    请记住,当您将管线拆分为子文件时,必须以允许您对管线定义进行适当排序的方式执行此操作,因为您只能在单个文件中进行排序,并对文件的加载方式进行排序。因此,具有特定顺序要求的重叠路由可能应位于同一文件中,以便精确控制其顺序。

    何时将路由器文件拆分为更多文件实际上就像决定何时拆分任何其他编码文件一样

  • 当感觉您拥有的文件变得太大而无法轻松维护和导航时
  • 当有界限时,谁在编写什么代码或负责什么代码,以方便团队开发
  • 在分割时,它将使事情比分割和使用多个文件所涉及的额外工作和复杂性更简单
  • 当拆分不会对分支造成不必要的复杂性时,合并团队开发环境中正在进行的其他代码工作
  • 当模块中有一些代码需要与其他模块共享或单独测试时
  • 当在片段之间共享代码时,您要拆分的代码不会使拆分过于复杂
  • 拆分路由器文件的一个相当简单的设计是,使用一个主路由器文件来创建路由器并将其导出,这就是主应用程序了解和加载的内容

    // main-router.js
    const router = require('express').Router();
    
    // some route definitions here
    
    module.exports = router;
    
    然后,可以创建子管线文件:

    // sub-router1.js
    module.exports = function(router) {
        router.get(path1, ...)
    
        router.post(path2, ...)
    }
    
    然后,将sub-router1.js集成到主路由器文件中,如下所示:

    // main-router.js
    const router = require('express').Router();
    
    // possibly some route definitions here
    
    // load and initialize sub-router1.js
    require('./sub-router1.js)(router);
    
    // possibly some route definitions here
    
    module.exports = router;
    

    请记住,当您将管线拆分为子文件时,必须以允许您对管线定义进行适当排序的方式执行此操作,因为您只能在单个文件中进行排序,并对文件的加载方式进行排序。因此,具有特定顺序要求的重叠路由可能应位于同一文件中,以便精确控制其顺序。

    您的程序中是否使用模型?@Y4glory不确定,它们是什么?(这方面我比较新)请把你认为太乱的文件内容贴出来。我们不能就我们看不到的东西提供建议,而且“将其拆分为更多文件”不是一个好的通用建议。我同意@Bergi的观点,我只是想知道你是否有某种架构可以开始。此外,你的问题有很多答案,因为它可能涉及到你的应用程序结构的变化,如何编写代码的不同部分,甚至可能只是简单的旧抽象。因此,这将有助于查看该文件以及您试图实现的目标。我还建议你研究一下这个问题,这里可能会有很多事情发生,但是如果你看看这个问题并搜索这个人想要做什么,你可能会在我所说的很多答案上绊倒。你是否在你的程序中使用模型?@Y4glory不确定,它们是什么?(这方面我比较新)请把你认为太乱的文件内容贴出来。我们不能就我们看不到的东西提供建议,而且“将其拆分为更多文件”不是一个好的通用建议。我同意@Bergi的观点,我只是想知道你是否有某种架构可以开始。此外,你的问题有很多答案,因为它可能涉及到你的应用程序结构的变化,如何编写代码的不同部分,甚至可能只是简单的旧抽象。因此,这将有助于查看该文件以及您试图实现的目标。我还建议你研究一下这个问题,这里可能会有很多事情发生,但是如果你看看这个问题,寻找这个人想要做什么,你可能会在我所说的很多答案上绊倒