PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Tốc độ phát triển của xã hội ngày càng nhanh. Công nghệ ngày càng phát triển. Và đây cũng là điều kiện thuận lợi để thương mại điện tử ngày càng phát triển hơn.
Đối với những nhà kinh doanh, doanh nghiệp, từ khi thương mại điện tử xuất hiện thì chi phí sản xuất, chi phí tìm kiếm khách hàng, chi phí bán hàng, chi phí tiếp thị được giảm mạnh. Quy mô khách hàng mở rộng hơn. Dễ dàng tìm kiếm khách hàng và đối tác. Quá trình kinh doanh diễn ra nhanh hơn.
Theo đó, năng suất bán hàng, lợi nhuận cũng tăng nhiều hơn. Đối với khách hàng, các kênh thương mại điện tử luôn mở 24/7 nên việc tìm hiểu và mua sản phẩm có thể diễn ra bất cứ lúc nào. Tiết kiệm được thời gian, chi phí đi lại. Ngoài ra, khách hàng có thể lựa chọn, so sánh trong nhiều loại sản phẩm để chọn sản phẩm tốt nhất cho mình.
Tuy nhiên, để tạo được một kênh thương mại điện tử cần phải có nhiều hiểu biết về công nghệ, tốn nhiều thời gian và công sức. Nắm bắt được xu hướng và tiếp cận vấn đề đó, nhóm quyết định chọn đề tài “Xây dựng ứng dụng tạo website bán hàng” làm đề tài nghiên cứu và đồng thời ứng dụng thực tế. MỤC TIÊU CỦA ĐỀ TÀI Đề tài ra đời với mục đích giúp sinh viên tổng hợp lại các kiến thức đã tiếp thu được trong quá trình, đồng thời có cái nhìn tổng quan về ngành lập trình web. Là cơ hội để sinh viên tìm hiểu các công nghệ mới nhất và ứng dụng chúng vào thưc tiễn.
Xây dựng được ứng tạo website bán hàng một cách đơn giản nhanh chóng giúp người dùng chỉ trong vài phút thiết kế đã có được một website bán hàng, cho phép người dùng xem trước và deploy website tự động, các website được tạo đáp ứng được tiêu chí “Responsive Web Design” có các chức năng cơ bản của một website bán hàng, đồng thời có một công cụ quản lý giúp người dùng dễ dàng quản lý các sản phẩm và các đơn hàng. 6 do an Khóa luận tốt nghiệp kỹ sư CNTT GVHD: ThS. Nguyễn Minh Đạo 1. CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU 1.
Đối tượng nghiên cứu - Nghiên cứu và sử dụng ngôn ngữ JavaScript, framework VueJS, nền tảng NodeJS, docker, NGINX để xây dựng ứng dụng. - Sử dụng hệ quản trị cơ sở dữ liệu MongoDB để xây dựng database lưu trữ dữ liệu. - Nghiên cứu nhu cầu sử dụng, tạo website bán hàng của người dùng. Phạm vi nghiên cứu - Nghiên cứu sử dụng VueJS, NodeJS, docker, NGINX để tạo ra ứng dụng web tạo website bán hàng bằng cách kéo thả, tạo ra website có các tính năng cơ bản của một website bán hàng, cho phép deoploy tự động lên subdomain.
Phương pháp nghiên cứu - Phương pháp tổng hợp lý thuyết: nghiên cứu và tìm hiểu các tài liệu, ứng dụng liên quan đến công nghệ đang tìm hiểu. - Phương pháp chuyên gia: tham khảo ý kiến của thầy hướng dẫn cùng các anh chị, bạn bè có kinh nghiệm liên quan đến các vấn đề của tiểu luận tạo độ chính xác và khoa học cho đề tài. - Phương pháp mô hình hóa: mô phỏng ứng dụng các bước từ thiết kế cài đặt cho đến kết quả thành phẩm của ứng dụng. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC ‑ Tạo công cụ hỗ trợ kéo thả giao diện, tùy biến các thành phần website (màu sắc, style, theme, font chữ, bố cục) ‑ Cho phép preview và deploy website tự động trên subdomain ‑ Các website được tạo đáp ứng được tiêu chí “Responsive Web Design” ‑ Tạo công cụ quản lý database cho các website được tạo ra ‑ Website được tạo ra có các chức năng cơ bản của một website bán hàng: o Tìm kiếm, lọc sản phẩm o Tính năng giỏ hàng, đặt hàng, o Thông báo email khi trạng thái đơn hàng thay đổi o Xem lịch sử mua hàng 7 do an Khóa luận tốt nghiệp kỹ sư CNTT GVHD: ThS.
Nguyễn Minh Đạo PHẦN NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. NGÔN NGỮ LẬP TRÌNH JAVASCRIPT JavaScript là ngôn ngữ lập trình phổ biến nhất trên thế giới trong suốt 20 năm qua. Nó cũng là một trong số 3 ngôn ngữ chính của lập trình web (HTML, CSS, JS). JavaScript có rất nhiều ưu điểm khiến nó vượt trội hơn so với các đối thủ, đặc biệt trong các trường hợp thực tế.
Sau đây chỉ là một số lợi ích của JavaScript: - Không cần một compiler vì web browser có thể biên dịch nó bằng HTML - Lỗi dễ phát hiện hơn và vì vậy dễ sửa hơn - Nó có thể được gắn trên một số element của trang web hoặc event của trang web như là thông qua click chuột hoặc di chuột tới - JS hoạt động trên nhiều trình duyệt, nền tảng, … - Bạn có thể sử dụng JavaScript để kiểm tra input và giảm thiểu việc kiểm tra thủ công khi truy xuất qua database - Nó giúp website tương tác tốt hơn với khách truy cập - Nó nhanh hơn và nhẹ hơn các ngôn ngữ lập trình khác 1. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB 1. Giới thiệu - MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. - MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
- Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server.) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là thay vì bảng - So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS. 8 do an Khóa luận tốt nghiệp kỹ sư CNTT GVHD: ThS. Nguyễn Minh Đạo - Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định. - Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB 1.
Ưu điểm - Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái. - Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS. - MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster: - Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng. - Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Nhược điểm - Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu. - Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện. 9 do an Khóa luận tốt nghiệp kỹ sư CNTT GVHD: ThS.
Nguyễn Minh Đạo 1. NỀN TẢNG NODEJS 1. Giới thiệu 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 sử dụng để xây dựng các ứng dụng web như các trang video clip, các forum và đặc biệt là trang mạng xã hội phạm vi hẹp. NodeJS là một mã nguồn mở được sử dụng rộng bởi hàng ngàn lập trình viên trên toàn thế giới.
NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ WIndow cho tới Linux, OS X nên đó cũng là một lợi thế. NodeJS cung cấp các thư viện phong phú ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất. Đặc điểm - Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ, nó chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả dữ liệu về. Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước (Realtime).
- Tốc độ rất nhanh: NodeJ được xây dựng dựa vào nền tảng V8 Javascript Engine nên việc thực thi chương trình rất nhanh. - Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình luồng duy nhất với sự kiện lặp. cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server. - Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này chủ yếu là đầu ra dữ liệu.
- Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License. FRAMEWORK VUEJS - Vue là một framework Javascript tiên tiến trong xây dựng giao diện người dùng, không giống như các framework khác, Vue được xây dựng từ những dòng code cơ bản nhất nhằm tối ưu tốc độ. Thư viện của Vue chỉ tập trung vào lớp hiển thị, rất đơn giản để tiếp cận và dễ dàng tích hợp vào các hệ thống khác. Vue cũng có khả năng 10 do an Khóa luận tốt nghiệp kỹ sư CNTT GVHD: ThS.