{"id":55454,"date":"2023-05-30T14:03:28","date_gmt":"2023-05-30T07:03:28","guid":{"rendered":"https:\/\/jobsgo.vn\/blog\/?p=55454"},"modified":"2023-12-20T09:31:39","modified_gmt":"2023-12-20T02:31:39","slug":"cac-cau-hoi-phong-van-nodejs","status":"publish","type":"post","link":"https:\/\/jobsgo.vn\/blog\/cac-cau-hoi-phong-van-nodejs\/","title":{"rendered":"T\u1ed5ng h\u1ee3p c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS th\u01b0\u1eddng g\u1eb7p nh\u1ea5t"},"content":{"rendered":"\n
NodeJS l\u00e0 m\u1ed9t platform si\u00eau ph\u1ed5 bi\u1ebfn \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n JavaScript \u0111\u1ec3 ch\u1ea1y c\u00e1c \u1ee9ng d\u1ee5ng m\u1ea1ng ph\u00eda server. Nh\u1edd v\u1eady m\u00e0 th\u1ecb tr\u01b0\u1eddng tuy\u1ec3n d\u1ee5ng NodeJS t\u1ea1i Vi\u1ec7t Nam nh\u1eefng n\u0103m g\u1ea7n \u0111\u00e2y lu\u00f4n \u1edf m\u1ee9c \u201cs\u1ed1t n\u00f3ng\u201d. B\u00e0i vi\u1ebft h\u00f4m nay, JobsGO s\u1ebd c\u00f9ng b\u1ea1n t\u00ecm hi\u1ec3u <\/em>c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/em><\/strong><\/a> th\u01b0\u1eddng g\u1eb7p v\u00e0 c\u00e1ch tr\u1ea3 l\u1eddi \u0111\u00fang \u0111\u1ec3 b\u1ea1n chinh ph\u1ee5c Nh\u00e0 tuy\u1ec3n d\u1ee5ng. \u0110\u1ecdc ngay nh\u00e9!<\/em><\/p>\n M\u1ee5c l\u1ee5c<\/p> T\u1ed5ng h\u1ee3p c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong> t\u1eeb ki\u1ebfn th\u1ee9c c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng cao:<\/p>\n NodeJS<\/strong><\/a> l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean JavaScript V8 runtime, \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng C++ v\u00e0 JavaScript \u0111\u1ec3 t\u1ea1o ra c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh m\u1ea1ng, \u1ee9ng d\u1ee5ng web,…<\/p><\/blockquote>\n N\u1ec1n t\u1ea3ng n\u00e0y \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n v\u00e0o n\u0103m 2009, c\u00f3 th\u1ec3 ch\u1ea1y tr\u00ean nhi\u1ec1u h\u1ec7 \u0111i\u1ec1u h\u00e0nh kh\u00e1c nhau.<\/p>\n T\u01b0\u01a1ng t\u1ef1 JavaScript, NodeJS c\u00f3 nh\u1eefng ki\u1ec3u d\u1eef li\u1ec7u c\u01a1 b\u1ea3n nh\u01b0 sau:<\/p>\n M\u1ed9t v\u00e0i t\u00ednh n\u0103ng n\u1ed5i b\u1eadt ph\u1ea3i \u0111\u1ec1 c\u1eadp khi b\u1ea1n tr\u1ea3 l\u1eddi c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong>:<\/p>\n \u0110\u00e2y l\u00e0 m\u1ed9t trong c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong> r\u1ea5t hay g\u1eb7p, c\u00e1c Nh\u00e0 tuy\u1ec3n d\u1ee5ng<\/strong><\/a> l\u1ef1a ch\u1ecdn c\u00e2u h\u1ecfi n\u00e0y \u0111\u1ec3 ki\u1ec3m tra ki\u1ebfn th\u1ee9c c\u1ee7a \u1ee9ng vi\u00ean v\u1ec1 c\u00e1ch v\u1eadn h\u00e0nh NodeJS.<\/p>\n NodeJS ban \u0111\u1ea7u \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng d\u1ef1a tr\u00ean \u00fd t\u01b0\u1edfng \u0111\u01a1n lu\u1ed3ng v\u00e0 ch\u1ec9 x\u1eed l\u00fd nhi\u1ec1u ho\u1ea1t \u0111\u1ed9ng th\u00f4ng qua c\u00e1c quy tr\u00ecnh kh\u00f4ng \u0111\u1ed3ng b\u1ed9. B\u1eaft \u0111\u1ea7u t\u1eeb version 13, NodeJS \u0111\u01b0\u1ee3c b\u1ed5 sung th\u00eam module h\u1ed7 tr\u1ee3 x\u1eed l\u00fd \u0111a lu\u1ed3ng.<\/p>\n NodeJS \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e2y d\u1ef1ng nhi\u1ec1u \u1ee9ng d\u1ee5ng kh\u00e1c nhau, ph\u1ed5 bi\u1ebfn nh\u1ea5t c\u00f3 th\u1ec3 k\u1ec3 \u0111\u1ebfn:<\/p>\n N\u1ebfu Blocking l\u00e0 kh\u00e1i ni\u1ec7m \u0111\u1ec3 ch\u1ec9 h\u00e0nh \u0111\u1ed9ng ng\u0103n ch\u1eb7n c\u00e1c t\u00e1c v\u1ee5 ti\u1ebfp theo \u0111\u01b0\u1ee3c th\u1ef1c thi khi t\u00e1c v\u1ee5 hi\u1ec7n t\u1ea1i ch\u01b0a k\u1ebft th\u00fac th\u00ec Non-blocking s\u1ebd kh\u00f4ng ch\u1eb7n. Non-blocking IO trong NodeJS s\u1ebd gi\u00fap c\u00e1c L\u1eadp tr\u00ecnh vi\u00ean<\/strong><\/a> kh\u00f4ng c\u1ea7n x\u1eed l\u00fd \u0111a lu\u1ed3ng m\u00e0 v\u1eabn c\u00f3 th\u1ec3 ti\u1ebfp nh\u1eadn v\u00e0 th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c nhi\u1ec1u request c\u00f9ng m\u1ed9t l\u00fac.<\/p>\n RESTful Web Service trong NodeJS l\u00e0 m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c giao th\u1ee9c trao \u0111\u1ed5i h\u1ec7 th\u1ed1ng v\u00e0 \u1ee9ng d\u1ee5ng. Ngh\u0129a l\u00e0 c\u00e1c \u1ee9ng d\u1ee5ng \u0111\u01b0\u1ee3c t\u1ea1o ra b\u1edfi c\u00e1c ng\u00f4n ng\u1eef v\u00e0 n\u1ec1n t\u1ea3ng kh\u00e1c nhau c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng RESTful Web Service \u0111\u1ec3 trao \u0111\u1ed5i d\u1eef li\u1ec7u.<\/p>\n REPL l\u00e0 t\u1eeb vi\u1ebft t\u1eaft c\u1ee7a Read, Eval, Print v\u00e0 Loop. \u0110\u00e2y l\u00e0 m\u00f4i tr\u01b0\u1eddng m\u00e1y t\u00ednh cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng vi\u1ebft code v\u00e0 ch\u1ea1y tr\u1ef1c ti\u1ebfp tr\u00ean m\u00e0n h\u00ecnh shell\/console\/terminal \u0111\u1ec3 debug, ki\u1ec3m tra code m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea1o ra b\u1ea5t c\u1ee9 m\u1ed9t file hay folder n\u00e0o.<\/p>\n C\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong> c\u0169ng \u0111\u01b0\u1ee3c Nh\u00e0 tuy\u1ec3n d\u1ee5ng \u0111\u00e0o s\u00e2u v\u1ec1 EventEmitter.<\/p>\n EventEmitter l\u00e0 m\u1ed9t l\u1edbp \u0111\u1ed1i t\u01b0\u1ee3ng trong NodeJS, c\u00f3 ch\u1ee9c n\u0103ng ch\u00ednh l\u00e0 ph\u00e1t sinh s\u1ef1 ki\u1ec7n th\u00f4ng qua Module Event. Khi EventEmitter ph\u00e1t ra m\u1ed9t s\u1ef1 ki\u1ec7n, t\u1ea5t c\u1ea3 c\u00e1c h\u00e0m g\u1eafn v\u1edbi s\u1ef1 ki\u1ec7n \u0111\u00f3 \u0111\u01b0\u1ee3c g\u1ecdi m\u1ed9t c\u00e1ch \u0111\u1ed3ng b\u1ed9.<\/p>\n \u0110\u00e2y l\u00e0 m\u1ed9t trong c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong> c\u01a1 b\u1ea3n, JobsGO c\u00f3 g\u1ee3i \u00fd c\u00e2u tr\u1ea3 l\u1eddi nh\u01b0 sau:<\/p>\n B\u1ea3ng 1. \u01afu \u2013 Nh\u01b0\u1ee3c \u0111i\u1ec3m khi s\u1eed d\u1ee5ng NodeJS.<\/em><\/p>\n V\u1edbi nh\u1eefng \u01b0u \u0111i\u1ec3m c\u1ee7a m\u00ecnh, c\u00f3 kh\u00f4ng \u00edt c\u00e1c framework n\u1ed5i ti\u1ebfng \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o ra nh\u1edd NodeJS. C\u1ee5 th\u1ec3:<\/p>\n \u201cT\u1ea1i sao n\u00ean s\u1eed d\u1ee5ng ExpressJS?<\/em>\u201d l\u00e0 m\u1ed9t trong c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS<\/strong> th\u01b0\u1eddng \u0111\u01b0\u1ee3c Nh\u00e0 tuy\u1ec3n d\u1ee5ng \u0111\u1ec1 c\u1eadp \u0111\u1ebfn.<\/p>\n ExpressJS th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o ra c\u00e1c \u1ee9ng d\u1ee5ng web ti\u1ec7n \u00edch, d\u1ec5 s\u1eed d\u1ee5ng v\u00e0 th\u00f4ng minh. M\u1eb7t kh\u00e1c, ExpressJS c\u00f3 dung l\u01b0\u1ee3ng nh\u1eb9 n\u00ean c\u00e1c thao t\u00e1c th\u1ef1c hi\u1ec7n c\u0169ng tr\u1edf n\u00ean \u0111\u01a1n gi\u1ea3n h\u01a1n. \u0110\u00f3 l\u00e0 nguy\u00ean do v\u00ec sao b\u1ea1n n\u00ean s\u1eed d\u1ee5ng ExpressJS trong l\u1eadp tr\u00ecnh.<\/p>\n Stream l\u00e0 m\u1ed9t collections c\u1ee7a d\u1eef li\u1ec7u. N\u00f3 cho ph\u00e9p b\u1ea1n \u0111\u1ecdc d\u1eef li\u1ec7u t\u1eeb m\u1ed9t ngu\u1ed3n v\u00e0 ghi d\u1eef li\u1ec7u \u0111\u1ebfn m\u1ed9t \u0111\u00edch.<\/p>\n Trong NodeJS, Steam c\u00f3 4 lo\u1ea1i l\u00e0:<\/p>\n Khi t\u00ecm hi\u1ec3u v\u1ec1 NodeJS, h\u1eb3n hai kh\u00e1i ni\u1ec7m Event v\u00e0 Callbacks kh\u00f4ng c\u00f2n qu\u00e1 \u201cl\u1ea1 l\u1eabm\u201d \u0111\u1ed1i v\u1edbi b\u1ea1n. Nh\u01b0ng li\u1ec7u b\u1ea1n hi\u1ec3u \u0111i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ee7a hai kh\u00e1i ni\u1ec7m n\u00e0y l\u00e0 g\u00ec?<\/p>\n1. C\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n NodeJS ph\u1ed5 bi\u1ebfn<\/strong><\/span><\/h2>\n
C\u00e2u 1. NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
C\u00e2u 2. N\u00eau \u200b\u200bc\u00e1c ki\u1ec3u d\u1eef li\u1ec7u trong NodeJS<\/strong><\/span><\/h3>\n
\n
C\u00e2u 3. C\u00e1c t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
\n
C\u00e2u 4. NodeJS \u0111\u01a1n lu\u1ed3ng hay \u0111a lu\u1ed3ng?<\/strong><\/span><\/h3>\n
C\u00e2u 5. Nh\u1eefng \u1ee9ng d\u1ee5ng n\u00ean vi\u1ebft b\u1eb1ng NodeJS?<\/strong><\/span><\/h3>\n
\n
C\u00e2u 6. H\u00e3y gi\u1ea3i th\u00edch v\u1ec1 m\u00f4 h\u00ecnh I\/O Non-blocking trong NodeJS<\/strong><\/span><\/h3>\n
C\u00e2u 7. RESTful Web Service trong NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
C\u00e2u 8. REPL Terminal trong NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
C\u00e2u 9. EventEmitter trong NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
C\u00e2u 10. \u01afu \u2013 Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
\n\n
\n \u01afu \u0111i\u1ec3m c\u1ee7a NodeJS<\/strong><\/td>\n Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a NodeJS<\/strong><\/td>\n<\/tr>\n \n \n \n
\n \n
C\u00e2u 11. Gi\u1edbi thi\u1ec7u m\u1ed9t s\u1ed1 framework c\u1ee7a Nodejs<\/strong><\/span><\/h3>\n
\n
C\u00e2u 12. T\u1ea1i sao n\u00ean s\u1eed d\u1ee5ng ExpressJS?<\/strong><\/span><\/h3>\n
C\u00e2u 13. Stream trong NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n
\n
C\u00e2u 14. S\u1ef1 kh\u00e1c nhau gi\u1eefa \u200b\u200bEvent v\u00e0 Callbacks trong NodeJS l\u00e0 g\u00ec?<\/strong><\/span><\/h3>\n