Hướng dẫn nodejs file name convention - quy ước tên tệp nodejs

Sau một số năm với nút, tôi có thể nói rằng không có quy ước nào cho cấu trúc thư mục/tệp. Tuy nhiên, hầu hết các ứng dụng (chuyên nghiệp) Express sử dụng một thiết lập như: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

Một ví dụ sử dụng thiết lập này là NodeJS-Starter.

Cá nhân tôi đã thay đổi thiết lập này thành:

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

Theo tôi, phần sau phù hợp tốt hơn với cấu trúc thư mục kiểu UNIX (trong khi cái trước trộn nó lên một chút).

Tôi cũng thích mẫu này để tách các tệp:

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

};

Điều này cho phép giải mã gọn gàng tất cả mã nguồn mà không phải làm phiền các phụ thuộc. Một giải pháp thực sự tốt để chiến đấu với JavaScript khó chịu. Một ví dụ trong thế giới thực là gần đó sử dụng thiết lập này.

Cập nhật (tên tệp):

Về tên tệp phổ biến nhất là ngắn, tên tệp thường. Nếu tệp của bạn chỉ có thể được mô tả bằng hai từ, hầu hết các dự án JavaScript sử dụng dấu gạch dưới làm dấu phân cách.

Cập nhật (biến):

Về các biến, cùng một "quy tắc" áp dụng như đối với tên tệp. Các nguyên mẫu hoặc các lớp, tuy nhiên, nên sử dụng Camelcase.

Cập nhật (StyleGuides):

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

Nếu như các developer trong cùng 1 dự án, mỗi người một phong cách code khác nhau thì đôi khi có thể tạo ra vấn đề khi phát sinh khi phát triển như người này phải đọc code người kia để hiểu và làm tiếp hoặc để fixbug. Để tránh những vấn đề như vậy khi làm việc theo nhóm, hầu hết các cộng đồng ngôn ngữ lập trình đều tuân theo bộ coding convention riêng. Bằng cách tuân theo các quy tắc này, mọi developer đều có thể viết code mà team của họ đọc có thể hiểu được mà không mất nhiều thời gian. Bài viết này hướng dẫn viết code Node.js nhất quán và đẹp mắt về mặt thẩm mỹ, các bạn có thể tham khảo.
Bài viết này hướng dẫn viết code Node.js nhất quán và đẹp mắt về mặt thẩm mỹ, các bạn có thể tham khảo.

1. Formatting

  • 4 spaces for indentation

Sử dụng 4 dấu cách để thụt đầu dòng code của bạn và hãy chắc chắn không bao giờ trộn các tab và dấu cách - một loại địa ngục đặc biệt đang chờ đợi^^.

  • No trailing white space

Giống như bạn đánh răng sau mỗi bữa ăn, bạn hãy làm sạch bất kỳ khoảng trắng thừa nào trong các tệp .js của mình trước khi commit. Hãy cứ tưởng tượng những khoảng trắng thừa đó như mùi thối rữa của thức ăn, chính mùi đó sẽ xua đuổi những người cùng team với bạn hoặc đồng nghiệp bạn.

  • 80 characters per line

Giới hạn dòng của bạn nên ở 80 ký tự. Vâng, màn hình đã lớn hơn nhiều trong vài năm qua, nhưng bộ não của bạn thì không. Sử dụng thêm chỗ để chia đôi màn hình, trình soạn thảo của bạn hỗ trợ điều đó, phải không?

  • Use single quotes

Sử dụng dấu ngoặc kép, trừ khi bạn đang viết JSON. Điều này giúp bạn tách chuỗi đối tượng của mình khỏi chuỗi bình thường.

Right:

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;
5 Wrong:
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;
6
Wrong:
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;
6

  • Opening braces go on the same line

Dấu ngoặc nhọn mở đầu của bạn đi cùng dòng với câu lệnh.

Right:

if (true) {
    console.log(‘winning’);
}

Wrong:

if (true) 
{
    console.log(‘losing’);
}

Ngoài ra, hãy lưu ý việc sử dụng khoảng trắng trước và sau câu lệnh điều kiện. Điều gì xảy ra nếu bạn muốn viết ‘else’ hoặc ‘else if’ cùng với ‘if’…

Right:

if (true) {
    console.log(‘winning’);
} else if (false) {
    console.log(‘this is good’);
} else {
    console.log(‘finally’);
}

Wrong:

if (true)
{
    console.log(‘losing’);
}
else if (false)
{
    console.log(‘this is bad’);
}
else
{
    console.log(‘not good’);
}
  • Declare one variable per var/let/constant statement

Khai báo một biến cho mỗi câu lệnh var/let/constant, nó giúp sắp xếp lại các dòng dễ dàng hơn.

Right:

var keys = [‘foo’, ‘bar’];
var values = [23, 42];
var object = {};

Wrong:

var keys = [‘foo’, ‘bar’],
values = [23, 42],
object = {},
key;

2. Naming Conventions

  • Use lowerCamelCase for variables, properties and function names

Các variables, properties và tên function nên sử dụng lowerCamelCase. Chúng cũng phải mang tính mô tả. Thường nên tránh các biến ký tự đơn và các chữ viết tắt không phổ biến.

Right:

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;
7 Wrong:
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;
8
Wrong:
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;
8

  • Use UpperCamelCase for class names

Tên class phải được viết hoa bằng cách sử dụng UpperCamelCase.

Right:

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

Wrong:

/
  /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
1
  • Use UPPERCASE for Constants

Hằng số nên được khai báo dưới dạng biến thông thường hoặc static class properties, sử dụng tất cả các chữ cái viết hoa.

Right:

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

Wrong:

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

Variables

  • Object / Array creation

Sử dụng dấu phẩy ở cuối và đặt các khai báo ngắn gọn trên một dòng.

Right:

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

Wrong:

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

Conditionals

  • Use the === operator

Lập trình không phải để ghi nhớ các quy tắc ngu ngốc. Sử dụng triple equality operator và nó sẽ hoạt động như mong đợi.

Right:

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

Wrong:

/
  /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
7
  • Use descriptive conditions

Mọi điều kiện non-trivial nên được gán cho một biến hoặc hàm có tên mô tả:

Right:

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

Wrong:

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

Functions

  • Write small functions

Giữ cho các function của bạn thật ngắn gọn. Mỗi function chỉ làm 1 việc

  • Return early from functions

Để tránh lồng sâu các câu lệnh if, hãy luôn trả về giá trị của hàm càng sớm càng tốt.

Right:

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

Wrong:

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

Hoặc đối với ví dụ cụ thể này, bạn cũng có thể rút ngắn mọi thứ hơn nữa:

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

Comments

  • Use slashes for comments

Sử dụng dấu gạch chéo cho cả comments một dòng và nhiều dòng. Cố gắng chỉ viết comment giải thích ở những phần logic phức tạp.

Right:

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

Wrong:

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

Cảm ơn bạn vì đã đọc! Link bài viết gốc: https://medium.com/swlh/node-js-coding-style-guidelines-74a20d00c40b
Link bài viết gốc: https://medium.com/swlh/node-js-coding-style-guidelines-74a20d00c40b