12/08/2018, 15:18

Giới thiệu về Mean stack và cách cài đặt mean.io

Xin chào các bạn. Hôm nay nhân dịp mình mới bảo vệ thành công khóa luân tốt nghiệp thành công với chủ đề là tìm hiểu về MEAN Stack và cài đặt ứng dụng Mean.io nên mình xin giới thiệu sơ lược và cách cài đặt về mean 1. Khái niệm MEAN Stack Như đã trình bày ở những bài trước, AngularJs là 1 ...

Xin chào các bạn. Hôm nay nhân dịp mình mới bảo vệ thành công khóa luân tốt nghiệp thành công với chủ đề là tìm hiểu về MEAN Stack và cài đặt ứng dụng Mean.io nên mình xin giới thiệu sơ lược và cách cài đặt về mean

1. Khái niệm MEAN Stack

Như đã trình bày ở những bài trước, AngularJs là 1 framework khá mạnh mẽ để tạo ra một trang web SPA (Single Page Application). Tuy nhiên AngularJs chỉ là một ngôn ngữ làm việc ở phía client, để tạo một ứng dụng hoàn chỉnh như một trang web động thật sự thì cần phải có sự kết hợp với các ngôn ngữ phía server và ngôn ngữ thao tác cơ sở dữ liệu. Và MEAN Stack là một sự kết hợp như thế.

MEAN Stack bao gồm: M (MongoDB), E (ExpressJS), A (AngularJS), N (NodeJS).

MEAN Stack là giải pháp hoàn hảo để xây dựng một mô hình SPA hoàn chỉnh nhất.

2. Các thành phần trong MEAN Stack

2.1. AngularJS

Về AngularJs, mình đã trình bày khá chi tiết về căn bản và một số bài nâng cao một chút. Nếu bạn chưa biết gì về AngularJS thì có thể xem thêm những bài viết Giới thiệu về AngularJS để hiểu thêm về Angular trước khi đọc tiếp bài viết.

2.2. MongoDB

MongoDB là một cơ sở dữ liệu có dạng NoSQL.

NoSQL là một thế hệ cơ sở dữ liệu có các đặc điểm chính là không ràng buộc (nonrelational), phân tán (distributed), mã nguồn mở (open source), khả năng co giản theo chiều ngang (Horizontal scalable) có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới dữ liệu cực lớn, lên đến hàng petabytes dữ liệu trong hệ thống cần có độ chịu tải, chịu lỗi cao với những yêu cầu về tài nguyên phần cứng thấp.

Mục tiêu chính của Mongo là giữ lại các thuộc tính thân thiện của SQL. Do đó các câu truy vấn khá giống với SQL nên MongoDB khá thích hợp cho các lập trình viên đã quen với ngôn ngữ truy vấn SQL. MongoDB có một khối lượng tính năng lớn và hiệu năng cao. Với các loại dữ liệu phong phú, nhiều truy vấn và việc giảm thời gian phát triển trong việc mô hình hóa các đối tượng.

MongoDB được sử dụng tốt nhất với nhu cầu cần truy vấn động, cần tốc độ nhanh cho một cơ sở dữ liệu lớn vì MongoDB ngoài tốc độ đọc nhanh ra thì tốc độ ghi của nó rất nhanh. MongoDB hỗ trợ việc tìm theo trường, khoảng kết quả tìm và tìm theo cú pháp. Các truy vấn có thể trả về các trường được qui định trong văn bản và cũng có thể bao gồm các hàm Javascript mà người dùng chưa định nghĩa. Cũng giống như các cơ sở dữ liệu quan hệ, bất cứ một trường nào trong MongoDB đều được đánh chỉ mục.

MongoDB còn có hổ trợ theo mô hình chủ – tớ (master – slave), mảnh, vùng dữ liệu (Sharding).

MongoDB sử dụng một quá trình xử lý để xử lý các yêu cầu về dữ liệu, quản lý định dạng dữ liệu, thực hiện các hoạt động quản lý bên dưới là mongod, đây là trình xử lý chính. Trong việc mở rộng theo chiều ngang sử dụng mô hình mảnh lưu trữ, MongoDB cung cấp dịch vụ xử lý các truy vấn từ tầng ứng dụng, xác định vị trí dữ liệu trong cụm các node phân mảnh được gọi là mongos.

2.3. NodeJS

NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết bằng c++ và Javasccript. Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào năm 2009.

Tại thời điểm này, nó được rất nhiều nhà phát triển ứng dụng ưa chuộng và còn là một nền tảng rất mới mẻ. Nó là dự án được xem nhiều thứ 2 trên GitHub.org, có khá nhiều theo dõi trên một nhóm của nó trên Google.com và có trên 15.000 modules được công bố trên NMP. Tất cả những điều trên cho thấy rằng, NodeJS đang là một nền tảng mới và thú vị cho việc phát triển các ứng dụng web, ứng dụng Server. NodeJS cũng cho thấy rằng nó hứa hẹn là một nền tảng hấp dẫn có thể thay thế được các nền tảng truyền thống như Apache, PHP, Python . . .

NodeJS là một nền tảng cho việc viết ứng dụng Javascript phía server, không giống như Javascript chúng ta thường viết trên trình duyệt. Với ngôn ngữ Javascript và nền tảng nhập xuất bất đồng bộ, nó là một nền tảng mạnh mẽ để phát triển các ứng dụng thời gian thực.

2.4. ExpressJS

Express là một web application framework cho NodeJS, cung cấp các tính năng mạnh mẽ cho việc xây dựng một ứng dụng web đúng nghĩa hoặc lai.

ExpressJS là framework phổ biến và được sử dụng rộng rãi nhất của NodeJS, được xây dựng trên cấu trúc ngữ pháp của Sinatra. Ý tưởng đằng sau ExpressJS là đưa đến một framework nhẹ, dễ dàng tiếp cận để phát triển các ứng dụng web từ nhỏ đến lớn hay hybrid.

Express cũng có thể sử dụng để xây dựng một API mạnh mẽ và thân thiện với người dùng, vì nó cung cấp rất nhiều tiện ích HTTP và middleware cho việc kết nối.

3. Tạo ứng dụng MEAN Stack với framework MEAN.IO

Khi cài đặt Mean.io bạn sẽ có một ứng dụng với các tác vụ căn bản như một cms thực sự. Mình giới thiệu cách cài Mean.io là để các bạn có một cái nhìn tổng quan về cách hoạt động của một ứng dụng MEAN, từ đó sau này có thể phát triển một ứng dụng MEAN cho bản thân.

Để cài được Mean.io thì chúng ta cần phải cài đặt các thành phần này trước:

– Mongodb – Nodejs – Angular.js Tiếp theo chúng ta chạy lệnh $ npm install -g grunt-cli Để bắt đầu với MEAN thì bạn cần cài đặt gói “mean-cli” từ NPM. Nó sẽ thêm câu lệnh mean giúp bạn tương tác (cài đặt, quản lý, cập nhật…) với ứng dụng MEAN của bạn.

Cài đặt MEAN-CLI:

$ npm install -g mean-cli
$ mean init <myApp>
$ cd <myApp> && npm install

Sau đó các bạn chạy lệnh

$ node server

Sau đó bạn có thể truy cập tới ứng dụng thông qua trình duyệt:

http://localhost:3000 Như vậy các bạn đã build thành công một ứng dụng chạy theo framwork MEAN.IO

4. Kết luận

Đây chỉ là một bài viết giới thiệu về MEAN Stack vì vậy mình không đi sâu vào các thành phần, mà chỉ giới thiệu sơ lược về những gì được sử dụng để tạo ứng dụng MEAN và cách cài đặt một bộ ứng dụng được build sẵn những chức năng cơ bản là mean.io để các bạn có thể hiểu được căn bản sự hoạt động của MEAN thông qua việc xây dựng ứng dụng build sẵn. Nguồn tham khảo : http://mean.io/ https://youtu.be/bIj_Skg7eWw

0