01/10/2018, 10:51

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.

X viết 13:08 ngày 01/10/2018

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

Do Ngoc Anh viết 12:53 ngày 01/10/2018

Bối rối quá
20chars

Thuc Nguyen Tan viết 12:54 ngày 01/10/2018
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.

Phan Bá Hải viết 12:57 ngày 01/10/2018

Bác Bill đâu còn làm ở MS đâu 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)

Quân viết 13:07 ngày 01/10/2018

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

Nguyễn Hoàng viết 12:57 ngày 01/10/2018

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

Phan Bá Hải viết 12:59 ngày 01/10/2018

À, 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

Nguyễn Đức Hoàng viết 12:55 ngày 01/10/2018

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

Hung viết 13:05 ngày 01/10/2018

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.

Nguyễn Đức Hoàng viết 13:01 ngày 01/10/2018

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.

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.

Thuc Nguyen Tan viết 12:56 ngày 01/10/2018

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!!!

Thuc Nguyen Tan viết 13:02 ngày 01/10/2018

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?

Dark.Hades viết 13:01 ngày 01/10/2018

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

Đào An viết 13:07 ngày 01/10/2018

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

Thuc Nguyen Tan viết 13:02 ngày 01/10/2018

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í

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

Đào An viết 13:00 ngày 01/10/2018

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

Thuc Nguyen Tan viết 12:57 ngày 01/10/2018

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

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.

Phan Bá Hải viết 13:06 ngày 01/10/2018

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
Thuc Nguyen Tan viết 12:53 ngày 01/10/2018

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à

Phan Bá Hải viết 12:55 ngày 01/10/2018

Bổ sung kiến thức cho bạn thôi

Bài liên quan
0