1. Blog/
  2. Các hoạt động của Cybersoft

Top 7 Sai Lầm Cần ‘Né Gấp’ Khi Học Nodejs & Cách khắc phục

507 Lượt xem

Nodejs đang ngày càng trở nên phổ biến trong cộng đồng phát triển ứng dụng, nhưng việc sử dụng Nodejs đòi hỏi không chỉ kiến thức vững về công nghệ mà còn là sự hiểu biết sâu rộng về các quy tắc lập trình và kiến thức về bất đồng bộ. Dưới đây là phân tích chi tiết về 7 sai lầm phổ biến khi học Node.js và cách khắc phục

1. Tạo Vòng Lặp Dữ Liệu Lớn Làm Treo Ứng Dụng

Vấn Đề: Việc tạo vòng lặp dữ liệu lớn có thể làm treo ứng dụng do Node.js sử dụng kiến trúc đơn luồng.

Khắc Phục: Sử dụng bất đồng bộ để tối ưu hiệu suất, tránh sử dụng vòng lặp dữ liệu lớn

// Sai: Sử dụng vòng lặp đồng bộ
users.forEach(user => {
// Xử lý mỗi user
});

// Đúng: Sử dụng bất đồng bộ
async.each(users, (user, callback) => {
// Xử lý mỗi user
callback();
}, (err) => {
// Xử lý khi tất cả đã hoàn thành
});

2. Sử Dụng Return Rỗng với Callback

Vấn Đề: Sử dụng return rỗng với callback làm giảm đọc mã và logic.

Khắc Phục: Thay vào đó, sử dụng return chính hàm callback

// Sai: Sử dụng return rỗng
function verifyPassword(user, password, done) {
if (typeof password !== ‘string’) {
done(new Error(‘password should be a string’));
return;
}
}

// Đúng: Sử dụng return chính hàm callback
function verifyPassword(user, password, done) {
if (typeof password !== ‘string’) {
return done(new Error(‘password should be a string’));
}
}

3. Sử Dụng Callback Lồng Nhau:

Vấn Đề: Callback lồng nhau gây khó khăn trong bảo trì và đọc mã.

Khắc Phục: Sử dụng thư viện như Async.js để giảm callback lồng nhau.

// Sai: Callback lồng nhau
function handleLogin(done) {
db.User.get(…, function(…, user) {
utils.verifyPassword(…, function(…, okay) {
session.login(…, function() {
done(null, ‘logged in’);
});
});
});
}

// Đúng: Sử dụng Async.js
function handleLogin(done) {
async.waterfall([
function(done) {
db.User.get(…, done);
},
function(user, done) {
utils.verifyPassword(…, function(…, okay) {
done(null, user, okay);
});
},
function(user, okay, done) {
if (okay) {
return done(null, ‘failed to log in’);
}
session.login(…, function() {
done(null, ‘logged in’);
});
}
], function() {
// …
});
}

4. Sử Dụng Callback để Chạy Đồng Bộ:

Vấn Đề: Sử dụng callback để chạy đồng bộ tạo mã khó bảo trì và hiểu.

Khắc Phục: Sử dụng tính bất đồng bộ của Node.js một cách đúng đắn

// Sai: Sử dụng callback để chạy đồng bộ
function testTimeout() {
console.log(‘Begin’);
setTimeout(function() {
console.log(‘Done!’);
}, duration * 1000);
console.log(‘Waiting..’);
}

// Đúng: Sử dụng tính bất đồng bộ
function testTimeout() {
console.log(‘Begin’);
setTimeout(function() {
console.log(‘Done!’);
}, duration * 1000);
console.log(‘Waiting..’);
}

5. Nhầm Lẫn Giữa “exports” và “module.exports”:

  • Vấn Đề: Nhầm lẫn giữa exportsmodule.exports khi export hàm hoặc đối tượng.
  • Khắc Phục: Sử dụng module.exports khi muốn export trực tiếp hàm hoặc đối tượng

// Sai: Sử dụng exports
exports.verifyPassword = function(user, password, done) { … }

// Đúng: Sử dụng module.exports
module.exports = function(user, password, done) { … }

6. Throwing Errors Bên Trong Callbacks:

  • Vấn Đề: Sử dụng throw trong callback bất đồng bộ có thể làm mất khả năng bắt lỗi đúng đắn.
  • Khắc Phục: Xử lý lỗi bằng cách truyền lỗi qua callback hoặc sử dụng Promise để quản lý lỗi.

// Sai: Sử dụng throw trong callback
try {
db.User.get(userId, function(err, user) {
if (err) {
throw err;
}
// …
});
} catch (e) {
console.log(‘Oh no!’);
}

// Đúng: Sử dụng callback để truyền lỗi
db.User.get(userId, function(err, user) {
if (err) {
return callback(null, err);
}
// …
});

7. Sử Dụng Console.log Một Cách Bừa Bãi:

  • Vấn Đề: Sử dụng console.log quá nhiều có thể làm mã nguồn trở nên khó đọc và không quản lý được.
  • Khắc Phục: Hạn chế sử dụng console.log và thay vào đó, sử dụng thư viện log chuyên nghiệp để quản lý log dựa trên môi trường.
// Sai: Sử dụng console.log bừa bãi
console.log('Debug information:', data);
// Đúng: Sử dụng thư viện log
const logger = require('log-library');
logger.debug('Debug information:', data);

Bằng cách hiểu rõ và tránh những sai lầm trên, người học Node.js có thể xây dựng ứng dụng với mã nguồn chất lượng, dễ bảo trì và hiệu quả.

200+

Đối tác

8500+

Học viên

92%

Có việc làm
sau khoá học

6

Chi nhánh

TOP