NodeJS là gì? ExpressJS là gì ? Từng bước tạo ứng dụng chat trên NodeJS

Là lập trình viên, chúng ta chắc hẳn biết Javascript là một ngôn ngữ client, nhưng kể từ khi NodeJS ra đời, khái niệm đã đó đã thay đổi. Bài viết sẽ giới thiệu về Node.js và một Node.js framework khá phổ biến hiện nay là Express. Chúng ta sẽ tạo ứng dụng cơ bản bằng framework Express


1086

NodeJS là gì ?

NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8 Engine. Nó được xây dựng để chạy trên server.

Javascript là một ngôn ngữ hướng sự kiện, do đó bất cứ điều gì xảy ra trên server đều tạo ra một sự kiện non-blocking, do vậy nên 1 website sử dụng NodeJS có thể đáp ứng được việc truy cập cùng lúc một lượng user cực kì lớn.

Vậy NodeJS thích hợp để làm gì. Với các đặc trưng của mình thì NodeJS thích hợp để xây dựng các ứng dụng thời gian thực, ví dụ như hệ thống chat online hoặc hệ thông thông báo…

Và cũng như nhiều ngôn ngữ chạy phía server khác, NodeJS cũng bắt đầu có một cộng đồng phát triển rất lớn, nhiều framework sử dụng core NodeJS ra đời, một trong số các framework phổ biến nhất hiện nay là Express. Chúng ta sẽ cùng tìm hiểu về framework này phía dưới đây.

Lợi ích của framework Express

  • Framework giúp cho việc phát triển ứng dụng được rút ngắn đi rất nhiều. Cũng như các framework dựa trên những ngôn ngữ khác như Rails (Ruby); Django (Python); Laravel, CakePHP (PHP)… Express được xây dựng dựa trên NodeJs. Vậy nó có ưu điểm gì để ta lựa chọn cho việc phát triển ứng dụng.
  • Express hỗ trợ việc phát triển ứng dụng theo mô hình MVC, mô hình phổ biến cho việc lập trình web hiện nay.
  • Cho phép định nghĩa Middleware hỗ trợ cho việc tổ chức và tái sử dụng code.
  • Định nghĩa routes và các request method đến server một cách dễ dàng.
  • Hỗ trợ REST API.
  • Và còn rất nhiều thứ mà framework này hỗ trợ, còn bây giờ hãy thử cài đặt và xây dựng một ứng dụng đơn giản nhé.

Cài đặt NodeJS và framework Express

Bài viết sẽ hướng dẫn cài đặt trên môi trường linux (ubuntu).

  • Cài đặt NodeJS
apt-get install nodejs
  • Cài đặt NPM:
apt-get install npm

Cài đặt xong 2 gói trên, gõ lệnh

nodejs|npm -v

để kiểm tra version của các gói tương ứng. Tiếp theo, tạo thư mục expressjs và khởi tạo project

mkdir /var/www/expressjs
cd /var/www/expressjs
npm init
  • Điền các thông tin tương ứng (name, version, description …) mà trình cài đặt yêu cầu hoặc enter để bỏ qua nếu bạn thấy nó đã phù hợp, cuối cùng chọn yes để kết thúc. Thực hiện tiếp các lệnh
npm install express --save
npm install express
npm install express-generator -g
cd /var/www/
express expressjs
cd expressjs
npm install

Vậy là xong phần cài đặt, giờ hãy thử chạy lệnh sau

nodejs /var/www/expressjs/bin/www

và mở trình duyệt truy cập http://localhost:3000/ bạn sẽ thấy

Express
Welcome to Express

Vậy là chúng ta đã hoàn thành cài đặt Express framework, giờ hãy xem qua các thư mục một chút.

  • bin: Thư mục này chứa các file khởi tạo ứng dụng của bạn, mặc định khi cài đặt sẽ chứa file www, là file mà các bạn chạy lệnh phía trên để khởi tạo ứng dụng.
  • node_modules: chứa core framework và các thư viện trên nền NodeJS
  • public: chứa các file css, javascript và ảnh.
  • routes: định nghĩa url và method.
  • views: định nghĩa các màn hình.
  • app.js: là một file quan trọng, có nhiệm vụ kết nối tất cả mọi thứ để ứng dụng có thể chạy một cách chính xác.
  • package.json: file định nghĩa các module.

Xây dựng ứng dụng chat đơn giản

Để xây dựng ứng dụng chat chúng ta cần cài thêm socket.io, các bạn chạy lệnh phía dưới

cd /var/www/expressjs
npm install --save socket.io
npm install

trong thư mục expressjs tạo file chat.js và chat.html, nội dung 2 file như sau

  • chat.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
    res.sendFile(__dirname + '/chat.html');
});
io.on('connection', function(socket){
    socket.on('chat message', function(msg){
        io.emit('chat message', msg);
    });
});
http.listen(3000, function(){
    console.log('listening on *:3000');
});
  • chat.html
<!doctype html>
<html>
<head>
    <title>Socket.IO chat</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font: 13px Helvetica, Arial;
        }
        form {
            background: #000;
            padding: 3px;
            position: fixed;
            bottom: 0;
            width: 100%;
        }
        form input {
            border: 0;
            padding: 10px;
            width: 90%;
            margin-right: .5%;
        }
        form button {
            width: 9%;
            background: rgb(130, 224, 255);
            border: none;
            padding: 10px;
        }
        #messages {
            list-style-type: none;
            margin: 0;
            padding: 0;
        }
        #messages li {
            padding: 5px 10px;
        }
        #messages li:nth-child(odd) {
            background: #eee;
        }
    </style>
</head>
<body>
<ul id="messages"></ul>
<form action="">
    <input id="m" autocomplete="off"/>
    <button>Send</button>
</form>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
    var socket = io();
    $('form').submit(function () {
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
    });
    socket.on('chat message', function (msg) {
        $('#messages').append($('<li>').text(msg));
    });
</script>
</body>
</html>

Sau khi hoàn tất, hãy thử chạy lệnh

nodejs /var/www/expressjs/chat.js

Nếu có thông báo

listening on *:3000

tức là ứng dụng đã được khởi tạo, giờ hãy mở 2 trình duyệt, truy cập localhost:3000 và kiểm tra kết quả xem sao.

Kết luận

Sau bài này, bạn đã hiểu được cách thức hoạt động của NodeJS và framework Express khá mạnh mẽ của NodeJS.

Lợi ích của framework luôn là giúp code dễ dàng hơn, cải thiện được chất lượng hiệu suất của ứng dụng.

Framework Express đã đáp ứng được hết những điều người developer cần để có thể phát triển, mở rộng ứng dụng.Và chúng ta có thể tham khảo qua bài viết Từng bước tạo RESTful API với Node.js , Express, MySQL


Like it? Share with your friends!

1086