Node js và javascript là song kiếm hợp bích

hi, Sau khi nghiên cứu cái node js khoảng 10h, mình có cảm giác là : node js và javascript là song kiếm hợp bích; ý anh chị em nghĩ sao? , Dường như nó không khó như trước kia mình tưởng!!! rất uyển chuyển, thk bác google.

em nghĩ chữ “js” trong “node js” là gì???

2 Likes

Bối rối quá :joy:
20chars

var fs =require("fs");
fs.readdir("./",function(err,files){
/*Tống cái list of file đưa vào array và duyệt thôi*/
    /*this is begin all javascrip*/
    for(var f in files){
        console.log(files[f]);
    }
    /*this is end all javascrip*/
});

Em chẳng cần nghĩ anh ạ, em chỉ trải nghiệm!!!

down luôn cái visial studio code của Bác Bill xài luôn, hình như cái này bác Bill free luôn, thuận tiện vô cùng, thk bác Bill hôm nay thực sự cống hiến cho cộng đồng.

Bác Bill đâu còn làm ở MS đâu :wink: Chỉ là làm cố vấn thôi
MS giờ nó “mở” hơn so với xưa thôi. Như .NET Core - bản open source của .NET Framework hay VS Code viết bằng Electron - một framework JavaScript viết app desktop
Còn NodeJS là nền tảng JavaScript giúp phát triển ứng dụng web từ phía server (back-end)
Nên chuyện Js “song kiếm gì đó…” mình thấy bình thường. Js giờ đâu còn chỉ xài kiểu bộ 3 HTML - CSS - Js hay lib, framework Js thông thường. Giờ Js còn làm back-end (NodeJS) , Mobile app (React Native) , Desktop app (Electron) thậm chí lập trình nhúng (Tessel)

3 Likes

bạn lại chưa hiểu ý của @alway5dotcom rồi, ngay từ đầu node js được viết ra đã là target cho javascript rồi, nên mới gọi là node js chứ không phải là node c#, node java hay node c++… Cái mà bạn cảm thấy thực ra vốn dĩ ngay trong tên gọi đã thể hiện như thế rồi

câu phát biểu hài ước và chứng tỏ bản thân chẳng biết gì :slight_smile:

4 Likes

À, lần sau nghiên cứu NodeJS lâu hơn nhé. Tầm 2 tuần trở lên thì bạn có thể post một bài tutorial chất lượng lên daynhauhoc rồi. 10h thì quá ít

1 Like

Node js và javascript nó là 1 mà. Chỉ có điều Node js nó dựa vào bộ mã V8 của google thôi, Và tư duy của Node js nó khác hoàn toàn với javascript thôi mà. Việc bạn dùng javascript để viết front-end nó khác hoàn toàn với việc dùng nodeJs để viết back-end

Không biết bạn học NodeJS theo hướng nào, nếu chỉ học JS căn bản vào nhảy thẳng ExpressJS để code Web thì chưa hẳn là học Node đâu.

Sức mạnh của NodeJS ở tập hợp Asynchronous API, được chia thành nhiều phần, có thao tác với mảng byte, encrypt, decrypt, thao tác file, thao tác với http, gọi systemcall.

Điểm hay nhất của Node chính là viết C++ extension cho Node để tạo package riêng cho mình, ví dụ viết package tính toán ma trận, vector song song, viết package cho immutable collection, hiện thực 1 số thao tác image processing,…

Tóm lại, nếu thực sự học NodeJS thì cần học cả 2 ngôn ngữ JavaScript và C++ để viết 1 node app.

3 Likes

Cho mình hỏi chút bạn có dự án thực tế nào với Node JS chưa bạn. Mình không biết liệu nó có ổn định không.

Mình không xài cái Express, mình đang thử cái http thôi, Bạn xem code nhé:

var http = require('http');
function get_html(page) {
    var st = [
        '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>',
        '<script src="',"my.js",'"></script>',
        '<div style="border:1px solid blue; margin:auto; width:600px;" >',
        '<h2>hello world</h2>',
        '<div>',
        '<ul>',
        '    <li><a href="/aaa">one</a></li>',
        '    <li><a href="/bbbb">one</a></li>',
        '    <li><a href="/ccc">one</a></li>',
        '    <li><a href="/dddd">one</a></li>',
        '</ul>',
        '</div>',
        '<div>', page, '</div>',
        '<div>footer</div>',
        '</div>',
    ].join('');
    return st;
}
http.createServer(function (req, res) {
    var page = "home";
    var url=req.url;
    res.writeHead(200, {'Content-Type': 'text/html'});    
    res.write(get_html(page)); //write a response to the client
    res.end(); //end the response
}).listen(8080); //the server object listens on port 8080 
console.log("server listen at : %s", 8080);

Mình đặt câu hỏi : Nếu chỉ dùng cái http thôi, (không install thêm express) có thể chạy được cái my.js ở dòng 5 được không?
ps. đoạn code đang test nên hơi lũng cũng thông cảm nhé

my.js đặt ở thư mục gốc nhưng node js không hiểu!!!

node js một cách đơn giản là thế này:
Bước 1: Cài node js
Bươc 2: Tạo một fonder nodejs_project
Bước 3: Tạo một file index.js có nội dung sau

var http = require('http'); // Import Node.js core module
var server = http.createServer(function (req, res) {   //create web server
    if (req.url == '/') { //check the URL of the current request
        res.writeHead(200, { 'Content-Type': 'text/html' }); 
        var html=[
            '<html><body>',
            '<p>This is home Page.</p>',
            '<div>',
                '<a href="/">Home</a> |',
                '<a href="/student">Vo</a> |',
                '<a href="/admin">admin</a> |',
                '<a href="/">Toan</a> |',
            '</div>',
            '</body></html>',
        ].join('');
        res.write(html);
        res.end();
    }
    else if (req.url == "/student") {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write('<html><body><p>This is student Page.</p></body></html>');
        res.end();
    }
    else if (req.url == "/admin") {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write('<html><body><p>This is admin Page.</p></body></html>');
        res.end();
    }
    else
        res.end('Invalid Request!');
});
server.listen(5000); //6 - listen for any incoming requests
console.log('Node.js web server at port 5000 is running..') 

Vào cái cmd :

cd d:\nodejs_project
node index.js

—>
Node.js web server at port 5000 is running…

Mở cái trình duyệt lên : http://localhost:5000

Bấm cái student

Bấm back, rồi admin

Bi giờ mình muốn cái menu ở lại khi bấm các button , làm sao đây?

Bạn phải viết phần view, extends view như oop là sẽ được.
View này nên render từ file tmpl

1 Like

Gợi ý cho bạn dùng template như nunjucks để viết nha,
chứ viết html trong js mà ko phải jsx rờm rà lắm

2 Likes

Okay bạn, Mình đang suy nghĩ con đường tại sao cần phải có cái package express
Ý của bạn : Phải dùng template, ok

Mình sửa nó lại một tí :slight_smile:

var http = require('http'); // Import Node.js core module
function get_html(page) {
    var html = [
        '<html><body>',
        '<div style="border:1px solid blue; margin:auto; width:600px; padding:5px;">',
        '<h2>W3 school</h2>',
        '<div>',
        '<a href="/">Home</a> | ',
        '<a href="/student">student</a> | ',
        '<a href="/admin">admin</a> | ',
        '<a href="/sfsfsf">More</a> | ',
        '</div>',
        '<div>',
        page,
        '</div>',
        '</div>',
        '</body></html>',
    ].join('');
    return html;
}
function lap_lai(str,so_lan){
    var kq="";
    for(var i=0;i<so_lan;i++){
        kq+=str+" ";    
    }
    return kq;
}
var server = http.createServer(function (req, res) {   //create web server
    var page='';
    if (req.url == '/') { //check the URL of the current request
        res.writeHead(200, { 'Content-Type': 'text/html' }); 
        page='this is home';
        res.write(  get_html(   lap_lai(page,50)    )  );
        res.end();
    }
    else if (req.url == "/student") {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        page='this is student page';
        res.write(  get_html(  lap_lai(page,50)  )  );
        res.end();
    }
    else if (req.url == "/admin") {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        page='this is admin page';
        res.write(  get_html(  lap_lai(page,50)   )  );
        res.end();
    }
    else
        res.end('Invalid Request!');
});
server.listen(5000); //6 - listen for any incoming requests
console.log('Node.js web server at port 5000 is running..') 
  • vào cmd : ctrl -c để thoát
  • Bấm cái nút mũi tên up, enter
  • Vào cái web cũ, refresh 1 cái, bấm home, student, admin
    Kết quả thế này :slight_smile:

Ok giờ bạn học express rồi code lại cái mà bạn đang làm sẽ thấy Nodejs thuần củ chuối như nào :smiley:

2 Likes

ok, node thuần quả là củ chuối, nhưng nó là cơ hội cho mấy em như express,…kiếm cơm
:grinning:

Nhưng được cái nó làm cho mọi sự đơn giản…
Bạn có ngâm cứu cái net socket của nó chưa ? thảo luận chơi. Ý mình nói là net nghen, không nói cái socket io

Thấy nó cũng củ chuối nhưng ổn định ra phết, chat trong cái mạng lan rất ok, đơn giản hơn cái socket của window.

1 Like

Bạn viết NodeJS như thế không khác Java Servlet là mấy
Người ta viết web theo mô hình MVC (Model - View - Controller)

  • Model: Các đối tượng thao tác với CSDL (Như bảng User trong db thì có model User bên web)
  • View: Phần hiển thị (HTML, JSP (Java), EJS (Express))
  • Controller: Phần xử lý request, sau đó trả về respone cho view hiển thị
    Express nó là dạng template, hiển thị HTML + Nhận model đã xử lý từ Controller giúp render ra HTML
2 Likes

Em đang học mà đại ca. khi học một ngôn ngừ mới mình hay làm thế, chưa xài các thư viện vội…
Thì thảo luận chơi mà

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