1. Trang chủ
  2. » Cao đẳng - Đại học

lập trình BACKEND với NODEJS EXPRESSJS

24 44 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,72 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với tốc độ phát triển vô cùng mạnh mẽ, ngành pháttriển ứng dụng web đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tinthế giới, cả về phần cứng và phần mềm.. Giới thi

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

LẬP TRÌNH BACKEND VỚI NODEJS – EXPRESSJS

Trang 2

TP Hồ Chí Minh, tháng 1 năm 2021

Trang 3

LỜI MỞ ĐẦU

Ngày nay, ngành công nghiệp phát triển ứng dụng web là một bộ phận không thểthiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành pháttriển ứng dụng web đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tinthế giới, cả về phần cứng và phần mềm

Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngànhcông nghiệp phát triển web non trẻ Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhậpvới những công ty hàng đầu về xây dựng nền tảng web trên thế giới Bên cạnh sự phát triểncủa web thì những ngành nghề được tiếp cận người dùng một cách nhanh chóng như những

gì ta có thể thấy là mạng xã hội hay những website bán hàng trực tuyến cũng đang rất thịnhhành trên cả thế giới lẫn Việt Nam

Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũngnhư muốn được tham gia làm game trong một môi trường chuyên nghiệp, em có dự định là

sẽ thực tập trong hè Vì vậy, em quyết định chọn Gameloft - một môi trường lý tưởng, hiệnđại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này

Trang 4

LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty TNHH Công nghệ Sum Việt đã tạo điều kiện cho

em có cơ hội được thực tập tại công ty

Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer,nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm đượcmột web server Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thờigian,công sức để hướng dẫn chúng em hoàn thành đợt thực tập này

Đặc biệt cảm ơn anh Trần Quốc Khánh, đã training nodejs, hướng dẫn, giúp đỡ cho

chúng em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quenvới môi trường mới

Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạođiều kiện em làm bài báo cáo này

Chung Nguyễn Trường DuyTpHCM, ngày 1 tháng 1 năm 2021

Trang 5

NHẬN XÉT CỦA KHOA

Trang 6

MỤC LỤC Chương 2: Nội dung thực tập 8 TÀI LIỆU THAM KHẢO 23

Trang 7

Chương 1: Giới thiêu công ty thực tập

1 Giới thiệu công ty Sum Việt

Tiền thân là công ty phát triển truyền thông quảng cáo Codosa

với các lĩnh vực kinh doanh: lập trình ứng dụng công nghệ, truyền thông & quảng

Với tâm huyết muốn phát triển & ứng dụng công nghệ 4.0 vào phục

vụ đời sống, nâng cao chất lượng dịch vụ, lợi ích đến người tiêu dùng, đồng thờigiải quyết vấn đề kết nối thương mại cho doanh nghiệp Ban lãnh đạo công ty đãchuyển đổi & phát triển công ty Codosa Holding trở thành một công ty đầu tư &phát triển công nghệ thông minh 4.0: Big Data, AI - Trí thông minh nhân tạo,Blockchain, nhận diện khuôn mặt,

2 Sản phẩm của công ty

Sum Việt hiện tại đã và đang cung cấp các sản phẩm công nghệ từ website (Thươngmại điện tử, Fintech, … ), ứng dụng di động (Ví điện tử, … ) đến game, sàn trade dựa trêncác nền tảng như Binary Option, MT4 & MT6 Platform, trade Forex, Crypto, …

Trang 8

Chương 2: Nội dung thực tập

Đợt thực tập với chủ đề “Lập trình backend server với Nodejs” nhằm mục đích giúpsinh viên thực tập được đào tạo toàn diện về lập trình server website, đồng thời rèn luyệnnhững kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơhội được học tập, khám phá và làm việc trong một môi trường chuyên nghiệp

1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty

Thời gian : 1 ngày

Nội dung : Giới thiệu về công ty, cách tổ chức của công ty

Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và pháttriên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổchức của công ty

Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công tynhư thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong côngviệc…

2 Nghiên cứu kỹ thuật

2.1 Giới thiệu gitlab

Hình 2.1: Logo gitlab.com

Gitlab là hệ thống self-hosted mã nguồn mở dựa trên hệ thống máy chủ Git dùng

để quản lý mã nguồn của bạn Gitlab cung cấp giải pháp server một cách hoàn hảo và nhận

sự đánh giá cao từ cộng đồng

Những đặc điểm cần biết của Gitlab gồm:

- Phiên bản Gitlab: Hiện nay gitlab hỗ trợ 3 phiên bản là: Gitlab community edition (CE) là phiên bản cộng động, mã nguồn mở, cung cấp qua Git từ kho

lưu trữ chứa Gitlab Bản mới nhất của Gitlab được các nhà phát triển release

tại các nhánh stable và nhánh master Gitlab enterprise edition (EE) là gitlab

Trang 9

phiên bản doanh nghiệp, có sẵn không lâu sau khi phát hành CE, được cungcấp từ kho lưu trữ Khi một doanh nghiệp đăng ký Gitlab sẽ nhận được support

của Gitlab khi gặp khó khăn trong quá trình cài đặt Gitlab continuous integration (CI) là một giải pháp tích hợp được thực hiện bởi nhóm phát triển

Gitlab

- Protected branches: Cho phép đọc hoặc ghi vào repository và các branches.

Protected branches cấp quyền cho những người được phép commit và pushingcode Một protected branch gồm 3 điều cơ bản Một là ngăn chặn việc push từtất cả mọi người trừ user và master Hai là ngăn chặn việc push code lênbranch từ những người không có quyền truy cập Ba là ngăn chặn bất kỳ ai

thực hiện xóa branch Master branch được mặc định là protected branch User

cần được cấp it nhất một quyền từ master branch để bảo mật branch

- Tầng vật lý của Gitlab:

Kho lưu trữ: là nơi xử lý các dự án trong Gitlab, các dự án hoặc sản phẩm có

thể được lưu tại kho

Nginx có cách thực hoạt động giống như front-desk: người dùng đến Nginx

và yêu cầu hành động được thực hiện bởi worker trong văn phòng

Gitlab-shell: là loại thứ ba của worker, thực hiện nhiệm vụ tạo các đơn đặt

hàng từ một máy fax (SSH) thay vì front-desk (HTTP) Gitlab-shell giao tiếpvới Sidekiq qua redis và hỏi những câu hỏi nhanh của Unicorn worker hoặctrực tiếp hoặc qua front-desk

Gitlab enterprise edition: là tập hợp các quy trình và hoạt động kinh doanh

được điều hành bởi office

- System layout: Khi nói đến git trong hình ảnh có thể hiểu thư mục home của

người dùng git là /home/git Repositories bare trong đường dẫn/home/git/repositories Gitlab là một ứng dụng được viết bằng ngôn ngữ ruby

on rails Do đó, để biết rõ các hoạt động bên trong bạn có thể tìm hiểu về hoạtđộng của ruby on rails

- Components:

Trang 10

Hình 2.2: Sơ đồ kiến trúc components của gitlab

Những lý do chọn gitlab:

- Mang lại sự tiện lợi cho các lập trình viên khi cần lưu trữ, tải lên, tải xuốngcode

- Kiểm soát các thay đổi trong code nhanh chóng, chính xác

- Hỗ trợ việc quản lý, phân phối công việc trong dự án lập trình hiệu quả hơn

2.2 Giới thiệu Visual Studio Code

Hình 2.3: Chương trình Visual Studio Code Visual Studio Code là sản phẩm của Microsoft, ra mắt vào tháng 4 năm 2015 ở hội

nghị Build Đặc điểm nổi bật là đơn giản, gọn nhẹ, dễ dàng cài đặt

Visual Studio Code có thể cài đặt được trên cả Windows, Linux và Mac OS và hỗ trợ

nhiều ngôn ngữ khác nhau

Trang 11

Visual Studio Code là một trình biên tập mã Nó hỗ trợ nhiều ngôn ngữ và chức năng

tùy vào ngôn ngữ sử dụng theo như trong bảng sau Nhiều chức năng của Visual Studio Codekhông hiển thị ra trong các menu tùy chọn hay giao diện người dùng Thay vào đó, chúngđược gọi thông qua khung nhập lệnh hoặc qua một tập tin json (ví dụ như tập tin tùy chỉnhcủa người dùng) Khung nhập lệnh là một giao diện theo dòng lệnh Tuy nhiên, nó biến mấtkhi người dùng nhấp bất cứ nơi nào khác, hoặc nhấn tổ hợp phím để tương tác với một cái gì

đó ở bên ngoài đó Tương tự như vậy với những dòng lệnh tốn nhiều thời gian để xử lý Khithực hiện những điều trên thì quá trình xử lý dòng lệnh đó sẽ bị hủy

2.3 Giới thiệu redmind

Hình 2.4: Logo redmind.org

Redmind là một công cụ được tạo ra nhằm mục đích theo dõi các vấn đề xẩy ra của một dự án và quản lý dự án đó Redmind hoạt động trên web miễn phí và mã nguồn mở đểngười dùng dễ dàng sử dụng Đây là phần mềm hỗ trợ cho người sử dụng quản lý nhiều dự

án cùng một lúc hoặc các tiểu dự án có liên quan đến nhau và liên quan đến dự án chính.Redmind có tính năng cho mỗi một dự án khác nhay và diễn đàn khác nhau Redmind giúptheo dõi thời gian, kiểm soát các truy cập với vai trò linh hoạt của nó trong từng dự án

Quản lý dự án Redmine sẽ giúp bạn dễ dàng hơn trong việc quản lý các vấn đề của dự

án web và được viết bằng Ruby on Rails Với việc sử dụng miễn phí phần mềm này đã giúpbạn quản lý dự án hiệu quả và khoa học hơn

2.4 Tìm hiểu về RESTful API

API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo

đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác.API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biếnnhư JSON hay XML

REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu,

một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếpgiữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng,REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu

Trang 12

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng

web để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụngphổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau

REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ

sử dụng những phương thức HTTP riêng

• GET (SELECT): Trả về một Resource hoặc một danh sách Resource

• POST (CREATE): Tạo mới một Resource

• PUT (UPDATE): Cập nhật thông tin cho Resource

• DELETE (DELETE): Xoá một Resource

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với

Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa

2.5 Tìm hiểu cở sở dữ liệu mongoDb

cố định (hay còn gọi là Big Data)

Một số đặc điểm của MongoDb:

- Kho lưu định hướng Document: Dữ liệu được lưu trong các tài liệu kiểu JSON

- Lập chỉ mục trên bất kỳ thuộc tính nào

- Các truy vấn đa dạng

Trang 13

2.6 Tìm hiểu về Nodejs

Hình 2.6 Logo Nodejs NodeJs là một nền tảng dựa vào Chrome Javascript runtime để xây dựng các ứng dụng nhanh, có độ lớn NodeJS sử dụng các phần phát sinh các sự kiện (event-driven), mô

hình non-blocking I/O để tạo ra các ứng dụng nhẹ và hiệu quả cho các ứng dụng về dữ liệuthời gian thực chạy trên các thiết bị phân tán

NodeJs là một mã nguồn mở, đa nền tảng cho phát triển các ứng dụng phía Server

và cácCác dự án theo quy trình Waterfall thường cần define cụ thể yêu cầu của dự án, trongkhi các yêu cầu trong các dự án Agile có thể thay đổi và phát triển

Trong các dự án Waterfall, bạn không thể thay đổi những thứ bạn đã làm trong nhữngcông đoạn trước, tuy nhiên Agile rất phù hợp và có thể đáp ứng được các thay đổi

2.7 Lập trình Typescript + một số thư viện hỗ trợ

Trang 14

Hình 2.7: Logo Typescript

Typescript là một dự án mã nguồn mở được Microsoft phát triển, được xem là mộtphiên bản nâng cao của Javascript

TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript

TypeScript thêm các namespace, class và module tùy chọn vào JavaScript TypeScript

hỗ trợ các công cụ cho các ứng dụng JavaScript quy mô lớn cho bất kỳ trình duyệt nào, chobất kỳ máy chủ nào, trên bất kỳ hệ điều hành nào

Ưu điểm của Typescript:

- Dễ dàng hơn trong phát triển các dự án lớn, được hỗ trợ bởi các JavascriptFramework lớn

- Hỗ trợ OOP mạnh: Hầu hết các cú pháp hướng đối tượng đều được hỗ trợ bởi Typescript như kế thừa, đóng gói, constructor, abstract, interface, implement, override v.v

- Cách tổ chức code rõ ràng hơn bởi được hỗ trợ các kỹ thuật mới nhất và hỗ trợlập trình hướng đối tượng: Hỗ trợ cơ chế giúp kiến trúc hệ thống code hướng

Trang 15

module, hỗ trợ namespace, giúp xây dựng các hệ thống lớn nơi mà nhiều dev

có thể làm việc cùng nhau một cách dễ dàng hơn

- Hỗ trợ các tính năng mới nhất của Javascript

- Một lợi thế của Typescript nữa là mã nguồn mở vì vậy nó miễn phí và có cộng đồng hỗ trợ rất lớn

Typescript đang được sử dụng ở các Framework Front-end phổ biến như

Angular 2, Ionic cũng như Nền tảng cho back-end như Node-js bởi những ưu điểm củamình

3 Thực hiện project

Sau gần một tháng được training và thực hành, thực tập sinh đã nắm được những kiếnthực cơ bản về mongoDb, nodejs, typescript Trong tháng thứ hai, trainer đã hướngdẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project productcủa công ty

Chi tiết dự án sẽ được nói ở phần sau

 Học cách trao đổi, làm việc qua slack

Anh Nguyễn Vĩnh Khiêm

1  Học tập ôn lại các kiến thức cũ, nắm chắc

những gì cơ bản đã học

Anh Trần Quốc Khánh

Trang 16

 Tìm hiểu, ôn tập về Typescript, NodeJS,MongoDB

2  Tìm hiểu Typescript

3-7

 Tham gia vào dự án PawnVn

 Tìm hiểu cấu trúc project

 Viết bắt đầu viết api

8 trở đi

 Viết document và Swageer

 Viết Unit test cho hệ thống

 Tham gia các hoạt động nghiên cứu, cuộc thitại công ty

Trang 17

Chương 3: Chi tiết về project

Theo quy chế đối với thực tập sinh, trích dẫn:

Điều 5: Bảo mật thông tin

Phần a.Thông tin của khách hàng: … Bảo mật thông tin khách hàng ( họ tên, địa chỉ,điện thoại, sản phẩm, doanh thu, dữ liệu, …)

Phần b.Thông tin của công ty: … Đảm bảo an toàn thông tin về sản phẩm, dự án đangtrong giai đoạn kế hoạch, phát triển sản phẩm hoặc chưa được phép công bố

Nên phần này sẽ mô tả giới hạn về quá trình thực tập

3.1 Giới thiệu về PawnVn

a Giới thiệu

PawnVn là ứng dụng thương mại điện tử theo hình thức P2P kết hợp với mall

từ đối tác hoặc sở hữu của công ty Ứng dụng cho phép người dùng giao dịch trực tiếp thôngqua ứng dụng dưới sự kiểm duyệt sản phẩm từ cửa hàng và các chuyên gia kiểm định nhằmđem lại sản phẩm đúng và an toàn với người mua và người bán

Trang 18

- Bcrypt: BCrypt là một thuật toán mã hóa mật khẩu được thiết kế bởi NielsProvos and David Mazières BCrypt được đánh giá là bảo mật và an toàn hơn

so với MD5 và SHA bởi mỗi lần thực hiện băm nó lại cho một giá trị khácnhau, việc này khiến cho việc dò tìm mật khẩu trở nên khó hơn

- Jsonwebtoken: JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON.Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào “chữ ký” của

nó Phần chữ ký của JWT sẽ được mã hóa lại bằng HMAC hoặc RSA

- Swagger-ui-express: Swagger UI là một tool cho phép bất kỳ ai - từ developerscho đến end users - có thể hình dung và tương tác với các tài nguyên API của

dự án Tool này sẽ tự động generates ra API documents từ file config Swagger,với cái nhìn trực quan và việc triển khai trở nên dễ dàng hơn cho phía client

- Axios: Axios là một HTTP Client được viết dựa trên Promise, được dùng choviệc hỗ trợ xây dựng các ứng dụng API, nó có thể sử dụng trong React, Vue,Angular…

- Cors: CORS là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts,Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác vớidomain của trang đó CORS là viết tắt của từ Cross-origin resource sharing

Trang 19

- Helmet: Helmet là một package được viêt để giúp bạn bảo vệ ứng dụng củamình khỏi những lỗ hổng đã biết bằng cách thiết lập các Http headers một cáchphù hợp Thực tế thì Helmet chỉ là một tập hợp các Middleware nhỏ làm nhiệm

vụ thiết lập các Http headers liên quan đến bảo mật

- PM2: pm2 là một trình quản lý các process (tiến trình) dành cho các ứng dụngNodejs Nó được viết bằng chính Nodejs và Shell PM2 cũng được tích hợp bộcân bằng tải (load balancer) Bạn có thể giữ cho các process của server cònsống và reload/restart với zero downtime

- Nginx: là một phần mềm web server mã nguồn mở nỗi tiếng Ban đầu nó dùng

để phục vụ web HTTP Tuy nhiên, ngày nay nó cũng được dùng làm reverseproxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP

c Một số giao diện:

Một sô màn hình giao diện hệ thống và màn hình giao diện swagger

Ngày đăng: 05/09/2021, 21:08

TỪ KHÓA LIÊN QUAN

w