Node.js project naming conventions for files & folders

后端 未结 7 1661
清酒与你
清酒与你 2020-12-04 04:41

What are the naming conventions for files and folders in a large Node.js project?

Should I capitalize, camelCase, or under-score?

Ie. is this considered vali

7条回答
  •  时光说笑
    2020-12-04 05:17

    After some years with node, I can say that there are no conventions for the directory/file structure. However most (professional) express applications use a setup like:

    /
      /bin - scripts, helpers, binaries
      /lib - your application
      /config - your configuration
      /public - your public files
      /test - your tests
    

    An example which uses this setup is nodejs-starter.

    I personally changed this setup to:

    /
      /etc - contains configuration
      /app - front-end javascript files
        /config - loads config
        /models - loads models
      /bin - helper scripts
      /lib - back-end express files
        /config - loads config to app.settings
        /models - loads mongoose models
        /routes - sets up app.get('..')...
      /srv - contains public files
      /usr - contains templates
      /test - contains test files
    

    In my opinion, the latter matches better with the Unix-style directory structure (whereas the former mixes this up a bit).

    I also like this pattern to separate files:

    lib/index.js

    var http = require('http');
    var express = require('express');
    
    var app = express();
    
    app.server = http.createServer(app);
    
    require('./config')(app);
    
    require('./models')(app);
    
    require('./routes')(app);
    
    app.server.listen(app.settings.port);
    
    module.exports = app;
    

    lib/static/index.js

    var express = require('express');
    
    module.exports = function(app) {
    
      app.use(express.static(app.settings.static.path));
    
    };
    

    This allows decoupling neatly all source code without having to bother dependencies. A really good solution for fighting nasty Javascript. A real-world example is nearby which uses this setup.

    Update (filenames):

    Regarding filenames most common are short, lowercase filenames. If your file can only be described with two words most JavaScript projects use an underscore as the delimiter.

    Update (variables):

    Regarding variables, the same "rules" apply as for filenames. Prototypes or classes, however, should use camelCase.

    Update (styleguides):

    • https://github.com/feross/standard
    • https://github.com/airbnb/javascript

提交回复
热议问题