首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件和文件夹的Node.js项目命名约定

问文件和文件夹的Node.js项目命名约定
EN

Stack Overflow用户
提问于 2013-09-20 23:30:08
回答 8查看 173.6K关注 0票数 189

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

我应该大写大写,camelCase,还是低于分数?

即。这被认为有效吗?

代码语言:javascript
复制
project-name
    app
        controllers
            someThings.js
            users.js
        models
                someThing.js
                user.js
        views
            some-things
                index.jade
            users
                logIn.jade
                signUp.jade
    ...
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-01-02 15:08:24

在使用节点数年之后,我可以说,对于目录/文件结构,没有约定。然而,大多数(专业)速递应用程序使用的设置如下:

代码语言:javascript
复制
/
  /bin - scripts, helpers, binaries
  /lib - your application
  /config - your configuration
  /public - your public files
  /test - your tests

使用此设置的一个示例是nodejs起动器。

我亲自将此设置更改为:

代码语言:javascript
复制
/
  /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样式的目录结构匹配得更好(而前者则混合了一点)。

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

lib/index.js

代码语言:javascript
复制
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

代码语言:javascript
复制
var express = require('express');

module.exports = function(app) {

  app.use(express.static(app.settings.static.path));

};

这允许将所有源代码整齐地解耦,而不必麻烦依赖项。对付讨厌的Javascript的一个很好的解决方案。一个真实的例子是附近,它使用这个设置。

更新(文件名):

关于文件名,最常见的是短、小写文件名。如果您的文件只能用两个单词来描述,那么大多数JavaScript项目都使用下划线作为分隔符。

更新(变量):

对于变量,同样的“规则”适用于文件名。但是,原型或类应该使用camelCase。

更新(样式指南):

票数 219
EN

Stack Overflow用户

发布于 2017-07-03 09:41:59

对所有包、文件夹和文件名使用kebab-case。

为什么?

您应该想象有一天,任何文件夹或文件都可能被解压缩到它自己的包中。包不能包含大写字母。

新包的名称不得带有大写字母。https://docs.npmjs.com/files/package.json#name

因此,不应该使用camelCase。这就剩下snake_case和kebab-case了。

到目前为止,kebab-case是最常见的惯例。仅对内部节点包使用下划线,这只是早期的约定。

票数 186
EN

Stack Overflow用户

发布于 2014-01-04 22:25:45

没有约定。有一些逻辑结构。

我唯一能说的是:永远不要使用camelCase文件和目录名。为什么?它可以工作,但在Mac和Windows上,someAction和某些操作并没有什么不同。我遇到了这个问题,一次也没有。我需要这样的文件:

代码语言:javascript
复制
var isHidden = require('./lib/isHidden');

但遗憾的是,我创建了一个包含小写的文件:lib/ishidden.js。对我来说很管用。在我同事的麦克身上很好。测试运行时没有错误。部署之后,我们得到了一个巨大的错误:

代码语言:javascript
复制
Error: Cannot find module './lib/isHidden'

哦,是的。这是一个linux机器。因此,camelCase目录结构可能是危险的。对于在Windows或Mac上开发的同事来说,这已经足够了。

因此,如果需要,可以使用下划线(_)或破折号(-)分隔符。

票数 82
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18927298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档