Về việc học và thực hành NodeJS

Em đang học và thực hành NodeJS được tầm 1 tháng nhu cầu thêm kĩ năng và kiến thức về website. Em học theo kiểu xem youtube, đọc docs của NodeJS và NPM và tham khảo cách các website hoạt động.như DNH chẳng hạn. Đồng thời em cũng có 1 website đã thử deloy thành công trên heroku dùng để thực hành, chức năng chủ yếu chỉ là đăng bài thôi. Em tìm hiểu thiên về back-end hơn front, tính là sau khi nắm vững phần back thì mới tiến đến front. Vì chỉ mới 1 tháng tự mò nên kiến thức em có thể hơi lủng, mong mọi người bỏ qua. Em có vài câu hỏi muốn hỏi admin tạo DNH chẳng hạn như là:

  • Về việc post các media như ảnh trong 1 bài topic: Chẳng hạn như đăng tấm này em thấy bên edit thì có đoạn chữ cấu trức như thế này ![I4cXsB|690x387](upload://52rO7Shq8JohSLkL7qno8eHFqJ.jpeg). Phương pháp của ad để lấy, lưu trữ và hiển thị bài đăng chi tiết như thế nào ạ? Em đang nghĩ đến cách tạo 1 record, lưu các nội dung bài viết dưới dạng html với các tham số là các đường link, kích thước được tìm theo 1 cú pháp nào đó như bên trên. Em không biết làm thế có đúng hay đó có phải là best practice không nữa? Xin mọi người cho ý kiến.
  • Em deloy bằng heroku, lưu trữ các bài đăng trên mongodb còn hình ảnh như avatar người dùng thì là imgur. Em chia nhiều nơi lưu trữ thế có được không ạ? Có lợi hay hại gì em nên lưu ý?
  • Việc học javascript em thấy cũng được do có học C, C# nên làm quen với mảng, đối tượng… ngoại trừ sync, async, promise,… Em đã thử coi nhiều nơi và đọc docs nhưng vẫn cảm thấy khó hiểu. Có cách nào dễ tiếp thu phần này không? Và vì dùng imgur để upload ảnh nên hàm upload buộc phải dùng async, em không quen nên tính đổi sang lưu trữ dạng base64 trong db, dù gì cũng là web nhỏ dùng để thực hành làm quen, có nên làm thế không?

Em cũng xin phép để post này lâu dài, em vẫn còn nhiều thắc mắc nữa. Em xin cảm ơn ạ.

Còn nữa, không biết có đúng không nhưng khi em đăng nhập DHN, em để ý web hình như không có gửi post request lên database để kiếm tra thông tin mà gần như là ngay lập tức kiểm tra được ngay ( ý em là trường hợp nhập sai ấy). Không biết có phải thế không và làm cách nào vậy ạ?

Bạn đang học nodejs hay javascript hay web programming?
Có vẻ như bạn đang học nodejs để thực hành lập trình web. Nếu là vậy, thì trong đây có 2 vấn đề

  1. Nodejs là một platform, đi kèm theo là node package manager (a.k.a npm, mà phổ biến là npm, yarn) để quản lý các thư viện
  2. Lập trình web

giờ bắt đầu phân tích những gì bạn làm

Bạn xem và đọc những gì? và bên cạnh việc đọc thì bạn thực hành những gì, bạn có thể cho một ví dụ sau khi đọc docs nodejs/npm thì bạn áp dụng những cái bạn đọc như nào không?

tham khảo bằng cách nào? bạn tham khảo được gì? cho một ví dụ mà bạn thấy, bất kì website nào, bạn thấy hoạt động như nào?

Bạn đang có tư tưởng sai lệch, cái đầu tiên bạn cần làm, là tìm hiểu về cách hoạch động của ứng dụng web, những kiến thức cơ bản của ứng dụng web, như là giao tiếp http, web server/web service, html, session, cookie, … đại loại là cái mà bạn nói ở trên “cách mà ứng dụng web hoạt động” hay ứng dụng web có gì
Cần phải nắm concept trước rồi mới có thể bắt tay vào học và thực hành trên một ngôn ngữ/framework/platform nào đó
Bạn chưa nắm kiến thức cơ bản, mà đã học theo (tất nhiên là vẫn được, và hiển nhiên phải tự bổ sung khi thấy mình thiếu trong lúc học và làm theo) thì giống như cho một học sinh lớp 9 (đã được học luỹ thừa và căn) học đạo hàm như một con vẹt, nói với nó ax^3 đạo hàm ra được a*3*x^2 (quy tắc hệ số giữ nguyên, x^n thfi ra được nx^(n-1) …). bắt trước làm theo bài giống với ví dụ thì được, còn khác thì không hiểu

mình chưa từng tìm hiểu về platform mà daynhauhoc sử dụng, nhưng dựa vào kiến thức cơ bản về web thì vẫn có thể dễ dàng trả lời câu này
khi paste hình vào editor, thì hình được upload lên s3 service (browser -> daynhauhoc backend -> s3) trả về một chuỗi gọi là short_url như bạn đã thấy, short_url đó nếu bạn copy và paste ở topic khac vẫn có hiệu lực, vì editor sẽ dùng nó để query ra link public đã được daynhauhoc upload lên s3

mới học thì đừng nghĩ tới cái gọi là “best practice”, không bị bỏng sẽ không hiểu được câu “cẩn thận nước sôi”
bạn được người ta tư vấn cho giải pháp tốt ngay từ đầu, thì sẽ không biết vì sao nó tốt

bạn chưa thấy giải pháp của bạn có vấn đề gì, thì là chưa có vấn đề gì

hầu như ngôn ngữ nào cũng có thể loại này (hoặc concept tương tự, có thể khác tên), không thấy liên quan gì cả

Lên đây người ta giải thích cho cũng chưa chắc gì viết ra được những câu đọc vào hiểu ngay đâu, khó hiểu chỗ nào thì không nói thì có trời giúp bạn

Khẩu vị mỗi người mỗi khác, cách dễ tiếp thu với người khác thì chưa chắc hiệu quả tương tự với bạn

nên hay không thì tự hỏi lại mục tiêu của bạn, hoàn thành công việc hay kinh nghiệm/kiến thức/thành quả học tập?

6 Likes

Em chủ yếu là xem trước, đọc sơ qua về cách dùng trên npmjs.com, xem phục vụ đúng chức năng đang làm hay chưa, chẳng hạn như upload file thì dùng multer, gửi thì dùng imgur và lấy link, mongoose để tạo model, truy xuất dữ liệu,… Em sử dụng cũng chỉ ở mức căn bản theo như docs hướng dẫn, chưa tìm hiểu sâu.

Còn tham khảo các website thì em chỉ xem được các luồng chạy khi đăng bài, các case có thể xảy ra và cách xử lí case đó của các web, kiểu như đăng bài thiếu tiêu đề, khi đăng thì có bước xác thực gì, cách thức upload và hiển thị… cũng chỉ là tham khảo thôi, áp dụng đúng chính xác các web thì chỉ được 1/10.

Còn sync, async thì em gặp vấn đề về luồng chạy, dữ liệu được trả về không theo luồng,… mà theo lời anh nói thì để em xem kĩ lại và tự giải quyết vấn đề này. Còn lại thì em xin cảm ơn anh đã góp ý. Mục tiêu em đang là học rộng, mở rộng kĩ năng ra nên nắm vững những gì mình học vẫn tốt hơn, nên em muốn kiến thức nền vững tí để có gì dễ mở rộng thêm.

1 Like

Khi nào có vấn đề cần giải quyền thì đi tìm giải pháp, xem trước những cái mà mình chưa biết sử dụng vào đâu, sử dụng như nào thì không cần phải xem, không có tác dụng gì đâu
Cách học tốt nhất là áp dụng ngay những cái mình đang làm

cái này cũng sai luôn, không có khái niệm đúng chức năng đang làm ở đây, cái bạn làm phải đúng theo như yêu cầu chứ, giải pháp cho chức năng đó là gì thì liên quan gì đâu
không phải cứ upload file là xài multer, có nhiều giải pháp khác, multer chỉ là một trong những thư viện giải quyết vấn đề này (thường là dùng chung như middleware với expressjs)
chỉ cần giải quyết được vấn đề thì là đúng, dùng multer hay cái khác đều là đúng
tương tự “gửi thì dùng imgur và lấy link” nếu không dùng “imgur” thì là sai hay sao?

cách xử lí case đó của các web, kiểu như đăng bài thiếu tiêu đề -> đây là vấn đề về business/thiết kế, không phải vấn đề kĩ thuật
khi đăng thì có bước xác thực gì, cách thức upload và hiển thị -> bạn cho ví dụ cụ thể mà bạn đã tham khảo được xem, xác thực gì/như nào?, và cách hiển thị như nào? bạn tham khảo bằng cách nào?

câu từ của bạn viết còn chưa đúng, câu in đậm không có ý nghĩa gì cả
nói đúng hơn là code không chạy từ trên xuống dưới theo thứ tự các dòng lệnh, có vẻ như ý bạn phải là như vậy, nếu đúng là như vậy, thì cơ bản của javascript bạn còn chưa nắm nữa, bạn nên tìm những bài viết nói về vấn đề này của javascript để hiểu về nó (javascript asynchronous) và sau đó mới là áp dụng

việc bạn đang học giống như là một học sinh lớp 5, nhảy bước lên lớp 12 học, có nhiều vấn đề không hiểu khi tiếp nhận kiến thức lớp 12
sau đó thầy giáo nhắc về kiến thức lớp 11 để giải thích, rồi học sinh lại đơ ra vì kiến thức lớp 10 không có… rồi sau đó thầy giáo lại phải giải thích tới tận lớp 5…

ban cần có đủ kiến thức để tiếp nhận câu trả lời, đó mới là vấn đề

5 Likes

đúng là em chạy nhanh quá, anh thông cảm. Những gì học được đều thực hành ngay, hiểu được cách dùng nhưng không hiểu ý nghĩa, về kiến nền tảng thì em không dành thời gian để xem hết toàn bộ như các ngôn ngữ trước đó được, chủ yếu tìm điểm đặc trưng của javascript khác với các ngôn ngữ khác để mà học trước. Đây có thể là cách học sai, em sẽ xem lại. Mục đích bài viết em không hề có ý định khoe mẽ mà thật sự muốn học, tiếp thu, cách làm sai em sẽ nghe và tiếp nhận đàng hoàng. Vì biết có lỗ hỏng nên em muốn tìm giúp đỡ để cho có nền tảng tốt. Em cảm ơn ạ.

1 Like

Đầu tiên, bạn phải cho tụi mình biết là bạn sử sử dụng tech nào cho front-end? dùng React hay Vue.

Sau khi xác định được tech stack bạn đang dùng, bạn lên npm để tìm package tương ứng, cụ thể:

  • react-markdown cho nền tảng React,
  • vue-markdown con các thư viện của Vue.
4 Likes

Em tính sẽ sử dụng react, cám ơn anh ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?