Chào các bạn, mình đã làm nodejs một thời gian có chút kinh nghiệm.
Gần hơn một năm trở lại đây thì typescript được nhiều người chào đón
Mình đã làm typescript với ng2 nhưng thời gian build là khá lâu.
Vậy có nên phát triển nodejs với typescript ko? Bạn nào đã từng làm qua typescript + nodejs xin chia sẽ ít kinh nghiệm.

NHAN NGUYEN
@nguyenquynhan
Có kinh nghiệm xây dựng project thực tế bằng nodejs, web api, realtime
Đã làm việc với AngularJs
Am hiểu sâu về MVC
Làm việc tốt với MySQL, Mongodb, mysql
Đã tưng deploy nodejs với Ngnix trên Linux
Best posts made by nguyenquynhan
-
Có nên làm nodejs với typescript không?
-
RE: Ý nghĩa của next trong expressjs
Trong expressj, next() dùng để nhảy tới rout tiếp theo mà match với url khi clien request.
Ví dụ trong đoạn code bên dưới:- nếu url: /users
- rout * thực hiện visitCounter ++;
- chạy tiếp vào rout /users
- tương tự url: /products
- vào rout * thực hiện visitCounter ++;
- chạy tiếp vào rout /products
app.all('*', function(req, res, next){ visitCounter ++; next(); }); app.get('/users', function() { //... }); app.get('/products', function() { //... });
- nếu url: /users
-
Debug nodejs bằng chrome:
Hiện nay có nhiều tool debug nhưng mình thấy thằng này debug là ok nhất, nó y như những gì mình debug javascript trên browser
- step 1: cài đặt node-inspector
- npm install -g node-inspector
- step 2: vào thư mục project của bạn và chạy lệnh:
- node-debug app.js (app.js là file start app của bạn)
- step 3: node-inspector sẽ tự động mở chrome lên và bạn debug bằng develop tool của chrome
- bạn có thể tìm hiểu sâu hơn tại https://github.com/node-inspector/node-inspector
Chúc các bạn thành công!
- step 1: cài đặt node-inspector
-
RE: Hỏi về resize hình trong nodejs
Dùng free API đi bạn, hiện mình đang dùng thằng này thấy khá ổn.
https://rsz.io/ -
RE: Hỏi về load các package npm
Đó là việc phải làm, clone project mới bạn phải install lại là điều tất yếu, các example trên github sau khi tải về bạn cũng phải install, mục tiêu là khi lưu trữ lên github hoặc SVN sẽ giảm dụng lượng lưu trữ, mã nguồn copy, deploy lên server nhanh hơn.
Khuyên bạn nên dùng lệnh: npm install packageName --save để thông tin package được lưu vào package.json trong project của bạn -
RE: Hỏi về chạy nhiều ứng dụng nodejs trên cùng một VPS
Bạn nên dùng nginx:
- cache rất tốt, website nhanh hơn nhiều
- load banlance: sử dụng nginx mà ko làm load balance thì phí
- professional: run bằng node khi dev, còn đưa lên production thì ko ai chạy bằng node hết. Cũng giống nhiw .net đưa lên server thì cần iss để control
-
RE: [Git] Cần hỏi về workflow khi làm việc với shared branch
Quan trọng nhất là tách branch ra từ branch chung rồi làm, cuối ngày rebase và merge vào branch chung và đẩy code lên
. Ví vụ branch chung là: user-management
. Sau khi lấy code về bạn cần tách ra một branch mới từ branch này:
git checkout -b my-user-management
. Work và commit lên trên branch này, có thể push branch này lên server (tùy bạn)
. Trước khi merge với branch chung cần:
git checkout user-management
git pull origin user-management
git checkout my-user-management
git rebase user-management (resolve conflict ở bước này, sau khi resolve thì kiểm tra lại code và tính năng của project), sau đó commit những thay đổi nếu có lên
git checkout user-management
git merge my-user-management
git push origin user-management (cuối cùng là push code lên branch chung)
git checkout my-user-management (trở về nhánh của mình để code tiếp)Hy vọng có thể giúp bạn
-
RE: Set giá trị language trong function Find mongose
Chào bạn,
NodeJS chạy bất đồng bộ nên bạn để ngoài callback sẽ ko nhận được kết quả vì dòng lệnhconsole.log(_language);
sẽ thực thi trước khi hàm .find thực thi xong. Có 3 cách:- Bạn phải luôn nhận kq trong callback (cách bạn đang làm)
- Hoặc sử dụng thư viện async https://github.com/caolan/async
- Hoặc sử dụng ES6 syntax, cách này thì gần hơn với mong muốn của bạn. Support từ nodejs 6.9.x trở lên (ko nhớ rõ)
var _language = null; let docs = yield LanguageData.find({'language_default': 1}); _language = docs[k]['language_code'];
-
RE: Tìm source code backend NodeJS mẫu
Bạn bắt đầu từ templete này thì khá đầy đủ, có support cả bootstrap
https://github.com/sahat/hackathon-starter -
RE: Fix lỗi bất đồng bộ trong việc insert vs update mongodb
Cách trình bày code và post code lên topic hơi xấu, bạn cần format code cho pretty hơn, dọc code của bạn mình không hiểu cho lắm, nhưng mình thấy có lỗi sai cơ bản là hàm addCustomer có parameter là callback nhưng bạn lại không gọi lại hàm callback.
addCustomer: function(customer, service, callback) { CustomerModel.getlist(function(err, customers) { customer.potentialService = service; if (!err) { if (customers.length > 0) { // Update CustomerModel.update(customer, callback); } else { CustomerModel.insert(customer, callback); } }else{ callback(err); } }, { query: { email: customer.email, potentialService: service } }); }
Latest posts made by nguyenquynhan
-
Số thông báo là 2 những khi mở ra thì ko có thông báo nào
Thấy lỗi nho nhỏ của site nên góp ý thôi nhé.
Số thông báo là 2 những khi mở ra thì ko có thông báo nào như hình -
RE: Gặp vấn đề về crawl data :)))
Đã có solution chưa bạn @Hải-Nguyễn215 , nếu có thì share bà con với nhé, mình cũng gặp issue tương tự bạn
-
Có nên làm nodejs với typescript không?
Chào các bạn, mình đã làm nodejs một thời gian có chút kinh nghiệm.
Gần hơn một năm trở lại đây thì typescript được nhiều người chào đón
Mình đã làm typescript với ng2 nhưng thời gian build là khá lâu.
Vậy có nên phát triển nodejs với typescript ko? Bạn nào đã từng làm qua typescript + nodejs xin chia sẽ ít kinh nghiệm. -
RE: Nghiên cứu sâu vào Nodejs
Nên nghiên cứu một số opensource nào đó, không những giúp bạn hiểu sâu hơn về nodejs và sau này muốn build một sản phẩm thì từ opensource sẽ nhanh hơn nhiều. Có thể NodeBB mà diễn này này đang sử dụng
-
RE: Hỏi về bất đồng bộ trong nodejs
Bạn dùng Promiss.All sẽ resolve được trường hợp này
var p1 = new Promise((resolve, reject) => { setTimeout(resolve, 1000, "one"); }); var p2 = new Promise((resolve, reject) => { setTimeout(resolve, 2000, "two"); }); var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 3000, "three"); }); Promise.all([p1, p2, p3]).then(function(values) => { console.log(values); //Kết quả: values = ["one", "two", "three"] res.send(values) // Xử lý Response ở đây }, function(error) { console.log(error); res.send(error); });
Tham khảo thêm Promiss.All tại đây nhé
https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Global_Objects/Promise/all -
RE: [Git] Cần hỏi về workflow khi làm việc với shared branch
Quan trọng nhất là tách branch ra từ branch chung rồi làm, cuối ngày rebase và merge vào branch chung và đẩy code lên
. Ví vụ branch chung là: user-management
. Sau khi lấy code về bạn cần tách ra một branch mới từ branch này:
git checkout -b my-user-management
. Work và commit lên trên branch này, có thể push branch này lên server (tùy bạn)
. Trước khi merge với branch chung cần:
git checkout user-management
git pull origin user-management
git checkout my-user-management
git rebase user-management (resolve conflict ở bước này, sau khi resolve thì kiểm tra lại code và tính năng của project), sau đó commit những thay đổi nếu có lên
git checkout user-management
git merge my-user-management
git push origin user-management (cuối cùng là push code lên branch chung)
git checkout my-user-management (trở về nhánh của mình để code tiếp)Hy vọng có thể giúp bạn
-
RE: Build thư viện cho nodejs
Bạn muốn truy vấn nhanh thì bạn có thể sử dụng NodeJS-ORM, hiện tại support:
- MySQL & MariaDB
- PostgreSQL
- Amazon Redshift
- SQLite
- MongoDB (beta, missing aggregation for now)
-
RE: Hỏi quy trình phát triển Back-end và deploy lên dev vps, product vps
Từ khóa ở đây là CI for Deploy NodeJS
Bạn có thể sử dụng jenkins để làm nhé hoặc bạn có thể follow link dưới
https://codeforgeek.com/2016/04/continuous-integration-deployment-jenkins-node-js/ -
RE: Phát triển Docker cho Nodejs
Chào bạn
Theo mình tạo docker trên một server chỉ tối ưu thời gian downtime, không biết còn tối ưu thêm gì nữa không (chưa nghiên cứu thêm). Nếu muốn lượng user lớn thì tốt nhất là dùng nhiều server thay vì docker
-
RE: Set giá trị language trong function Find mongose
Chào bạn,
NodeJS chạy bất đồng bộ nên bạn để ngoài callback sẽ ko nhận được kết quả vì dòng lệnhconsole.log(_language);
sẽ thực thi trước khi hàm .find thực thi xong. Có 3 cách:- Bạn phải luôn nhận kq trong callback (cách bạn đang làm)
- Hoặc sử dụng thư viện async https://github.com/caolan/async
- Hoặc sử dụng ES6 syntax, cách này thì gần hơn với mong muốn của bạn. Support từ nodejs 6.9.x trở lên (ko nhớ rõ)
var _language = null; let docs = yield LanguageData.find({'language_default': 1}); _language = docs[k]['language_code'];