大型 node 中文件和文件夹的命名约定是什么.js项目?

我应该大写、camelCase还是分数不足?

这被认为有效吗?

project-name
    app
        controllers
            someThings.js
            users.js
        models
                someThing.js
                user.js
        views
            some-things
                index.jade
            users
                logIn.jade
                signUp.jade
    ...

推荐答案

使用node几年后,我可以说目录/文件 struct 有no种约定.但是,大多数(专业)express应用程序使用如下设置:

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

使用此设置的示例是nodejs-starter.

我个人将此设置更改为:

/
  /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

在我看来,后者更适合Unix风格的目录 struct (而前者稍微混淆了这一点).

我也喜欢这种模式来分离文件:

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));

};

这样就可以灵活地解耦所有源代码,而不必担心依赖关系.这是一个非常好的解决方案,可以对抗恶劣的Javascript.一个真实的例子是nearby,它使用这种设置.

Update (filenames):

关于文件名,最常见的是shortlowercase个文件名.如果文件只能用两个单词描述,大多数JavaScript项目都会使用下划线作为分隔符.

Update (variables):

关于变量,同样的"规则"适用于文件名.然而,原型或类应该使用camelCase.

Update (styleguides):

Node.js相关问答推荐

如何在Reaction应用程序中查看存储的斑点图像?

当变量在另一个文件中初始化时,在初始化错误之前无法访问变量

我的 MERN 网站一直告诉我我的一个函数不是一个函数

Redis Typescript 删除方法类型转换

几个 lambda 共有的函数

是否可以在 NodeJS 代码库中的每个函数之前和之后添加 console.log?

TypeError:在使用 Jest、Supertest、Express、Typescript 进行测试时无法读取未定义的属性(读取listen)

级联定时器和Jest 的异步功能

nuxt:在 docker 镜像中找不到

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

如何刷新 youtube-data-api v3 的访问令牌

如何在 TypeScript 中输出 Hackerrank 二叉树问题?

带权限的机密 Rest-Api - 总是 403 - 我做错了什么?

突然 React 无法执行create-react-app命令.为什么会发生这种情况,我该如何解决?

baseurl64 缓冲区解码

如何监控 node.js 上的网络,类似于 chrome/firefox 开发者工具?

使用 Webpack 和 font-face 加载字体

Node.JS 中的基本 HTTP 身份验证?

Puppeteer 等待所有图像加载然后截图

桌面应用程序仅支持 oauth_callback 值 'oob'/oauth/request_token