Tải bản đầy đủ (.docx) (21 trang)

Báo cáo thực tập lập trình WEB BACKEND với NODEJS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.39 MB, 21 trang )

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 WEB BACKEND VỚI
NODEJS

Cơng ty thực tập

: Công ty cổ phần công nghệ Eduteck

Người phụ trách

: Nguyễn Thanh Nhàn

Thực tập sinh

: Nguyễn Thanh Thọ

TP. Hồ Chí Minh, tháng 12 năm 2020


LỜI MỞ ĐẦU
Ngày nay công nghệ thông tin là một phần không thể thiếu đối với cuộc
sống của chúng ta. Nhờ sự phát triển của dịch vụ internet, nó đã làm cho việc lướt
web diễn ra hàng ngày. Công nghệ web trở thành một phần không thể thiếu trong
chúng ta.
NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình
thơng dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơn
giản và dễ dàng mở rộng. Nó là 1 hệ thống phần mềm được thiết kế để viết các ứng


dụng web, đặc biệt là máy chủ web.Việc sữ dụng kỹ thuật điều khiển sự kiện của
javascript, việc tối thiểu nhập xuất bất đồng bộ để tối thiểu tổng chi phí và tối đa
khả năng mở rộng giúp chúng ta dễ dàng quản lý ứng dụng. Đó là lý do em quyết
định chọn nodejs và javascript đồng hành với sự nghiệp của bản thân.
Theo khảo sát của Stack Overflow về các framework, nền tảng được sử dụng
nhiều nhất năm 2019, NodeJS đã giành vị trí số 1 với số lượng người dùng lên đến
gần 50%. Điều đó cho thấy nếu học NodeJS, cơ hội việc làm của bạn sẽ vô cùng
rộng mở.

2


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn đến anh Nguyễn Thanh Nhàn của công ty Edutek đã
tạo điều kiện để em được học hỏi kinh nghiệm thực tế ở cơng ty.
Với sự chân thành và nhiệt tình từ phía anh Nhàn và anh Tâm em đã giúp em
mở rộng tầm hiểu biết, giúp em có cái nhìn khái qt hơn về mặt cơng nghệ thơng tin.
Ngồi ra mọi người còn giúp đỡ em trong những kỹ năng năng mềm trong vấn đề tiếp
cận công nghệ mới và quản lý team.
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.
Nguyễn Thanh Thọ
TPHCM, ngày 30 tháng 12 năm 2020

3


NHẬN XÉT CỦA KHOA
……………………………………………………………………………………

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

4


Mục lục
Mục lục

5


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

6

Chương 2: Nội dung thực tập
7
Hướng dẫn những quy tắc cơ bản khi làm việc nhóm và những quy định của cơng
ty
7
Nghiên cứu kỹ thuật
7
Tìm hiểu về javascript và những thay đổi của ES6 trong javascript
7
Tìm hiểu về reactjs và những framework liên quan
8
Tìm hiểu về expressjs và những framework liên quan
8
Thực hiện project
9
Lịch làm việc
9
Chương 3: Chi tiết về project
Giới thiệu về dự án Igen let’s speaking
Mục đích
Các API phục vụ cho hệ thống Igen
Thực hiện
Kế hoạch

11

11
11
11
17
18

TÀI LIỆU THAM KHẢO

22

TỔNG KẾT

23

5


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

Sáng lập bởi anh Nguyễn Trung Tâm, công ty Edutek là công ty con của công
ty cổ phần giáo dục Tesse. Công ty chuyên cung cấp những giải pháp công nghệ phục
vụ cho nền tảng giáo dục cho khách hàng, ngồi ra cơng ty còn chuyên cung dịch vụ,
tư vấn, giải pháp cho các ứng dụng ERP, Blockchain,...Ngồi ra cơng ty cịn cung cấp
hệ thống học trực tuyến Tesse Online Classroom, một nền tảng học trực tuyến thế hệ
mới do chính người Việt tạo ra.

6


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

Đợt thực tập ứng dụng mơ hình làm việc Scrum và sinh viên thực tập được đào
tạo cơ bản về lập trình web sử dụng Ruby on Rails và React, đồng thời rèn luyện
những kỹ năng mềm như làm việc nhóm theo Scrum, thuyết trình, giao tiếp, sử dụng
công cụ quản lý công việc như Jira. 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 startup năng động.
Sinh viên khi thực tập ở công ty sẽ được tham gia khoá học đào tạo javascript
cơ bản, reactjs cơ bản, expressjs cơ bản. Sau khi hoàn thành các khoá học cơ bản sinh
viên sẽ nhận được lời khuyên về định hướng phát triển về khả năng bản thân như:
front-end, back-end, devops. Ngồi việc học về cơng nghệ sinh viên còn được hướng
dẫn những kỹ năng mềm về làm việc teamwork, cách sữ dụng git và mơ hình hoá dữ
liệu.

2.1.
Hướng dẫn những quy tắc cơ bản khi làm việc nhóm và
những quy định của cơng ty
Thời gian : 1 ngày
Nội dung :
- Giới thiệu về hệ thống nhân sự và lịch sử phát triển của công ty.
- Hướng dẫn những quy định của công ty và những yêu cầu cơ bản khi
làm việc nhóm.
- Giới thiệu những dự án hiện tại của cơng ty và những chính sách của
công ty với nhân viên.
Kết quả :
- Hiếu được những khó khăn khi trở thành startup cơng nghệ.
- Hiểu được sứ mệnh và hướng phát triển của công ty.
- Hiểu được cách thức làm việc của quy trình chuyên nghiệp.

2.2.

Nghiên cứu kỹ thuật


2.2.1.
Tìm hiểu về javascript và những thay đổi của ES6 trong
javascript
❖ Thời gian: 1 tuần.
❖ Nội dung:

7


➢ Học những nội dung cơ bản về javascript như: biến, kiểu dữ liệu,
xử lý mảng đối tượng, các phép tính, cách dùng hàm, các hàm
thường dùng (map, filter, find, reduce,...), các mệnh đề điều
khiển, callback, promise,... và cuối ngày sẽ có bài tập review về
nội dung được học.
➢ Học những kiến thức từ ES6 về sau và so sánh những thay đổi
mang lại hiệu quả cao cho javascript.
➢ Tìm hiểu về nodejs và những framework có liên quan.
❖ Kết quả:
➢ Có cái nhìn vừa tổng quan vừa sâu sắc trong javascript.
➢ Nắm được những nội dung cốt lõi của javascript.

2.2.2.

Tìm hiểu về reactjs và những framework liên quan

❖ Thời gian: 1 tuần.
❖ Nội dung:
➢ Học những khái niệm cơ bản về reactjs như: element, jsx, props,
lifecycle, condition, event handler, cách dùng form.

➢ Kết hợp reactjs với một số thư viện như bootstrap, ant design,
material ui,...
➢ Học về hook trong reactjs. Kiến trúc redux, redux-thunk, reactrouter,.. để xây dựng một single page application.
❖ Kết quả:
➢ Nắm được những nội dung cơ bản về reactjs.
➢ Ngồi ra trong q trình học còn được tham gia sửa chữa những
lỗi cơ bản từ những dự án của công ty tạo ra môi trường vừa học
vừa làm cho sinh viên.

2.2.3.

Tìm hiểu về expressjs và những framework liên quan

❖ Thời gian: 1 tuần.
❖ Nội dung:
➢ Học những khái niệm cơ bản về expressjs như: router, xử lý bất
đồng bộ với async await, kiến thức về REST API.
➢ Kết hợp với một số thư viện như mongoose để điều khiển trong
việc kết nối với mongodb.
➢ Kết hợp với thư viện JWT để tạo ra token phục vụ cho
RESTFUL API.
➢ Học các kiến thức cơ bản về typescript, nestjs
❖ Kết quả:
➢ Nắm được những nội dung cơ bản về server-side.
➢ Học được cách thiết kế api theo chuẩn RestFul API.
8


2.3. Thực hiện project
Sau thời gian 3 tuần tiếp cận với javascript dưới sự chỉ dạy tận tình

thơng quan các buổi seminar và được tiếp cận với những dự án thực tế. Các anh
đã giúp em nhận ra hướng phát triển và mơi trường thích hợp với bản thân là
server-side.
Trong thời gian 3 tuần tiếp theo em đã có thể đóng góp kiến thức của
mình để giúp các anh tiếp tục hồn thành dự án cơng cơng igen với vị trí backend. Link document api />
2.4. Lịch làm việc
Tuần

1
2
3
4

5

6

7

8

Cơng việc
● Hướng dẫn quy tắc cơng ty
qui tắc làm việc nhóm.
● Hướng dẫn đào tạo kiến
thức căn bản javascript.
● Hướng dẫn đào tạo kiến
thức căn bản reactjs.
● Hướng dẫn đào tạo kiến
thức expressjs và nestjs

● Hướng dẫn đào tạo kiến
thức expressjs và nestjs.
● Hướng dẫn khái niệm về
NOSQL và các phương
thức về restful api.
● Tham gia dự án viết api
quản lý sản phẩm cho cửa
hàng.
● Tham gia dự án igen. Viết
api quản lý các speaker của
dự án.
● Học cách dùng swagger để
viết document api
● Viết api quản lý các topic
và lesson cho nhiều đối
tượng được phần cấp trong
hệ thống.
● Viết api quản lý lịch học và
đăng ký lesson mới từ hệ
thống.

Người hướng dẫn
Anh Tâm,
Nhàn.

Mức độ
hoàn
thành

Nhận xét của

người hướng
dẫn

anh

Anh Nhàn.
Anh Nhàn.
Anh Nhàn.
Anh Tâm.

Anh Nhàn.

Anh Nhàn.

Anh Nhàn.

9


10


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

Giới thiệu về dự án Igen let’s speaking

Igen là một cộng đồng người học thích tiếng anh thuộc câu lạc bộ của
trường đại học kinh tế luật. Ở đây họ giúp cho những người học tiếng anh có
thể được giao lưu trực tiếp với những người nước ngồi để có thể trao đổi văn

hố, kiến thức với nhau.

3.1.1. Mục đích
Dự án đóng vai trị cầu nối cho các sinh viên đăng ký những buổi học
được tạo ra từ các speaker. Hệ thống còn giúp nhắc nhở thông báo cho người
dùng khi đến thời gian học. Thông qua dự án người dùng sẽ được học trực
tuyến trên các nền tảng như zoom, google meet và hệ thống của công ty mẹ là
tesse.
Giúp cho những người quản lý dự án có thể bỏ ít cơng sức hơn nhưng
làm việc hiệu quả hơn là việc đăng các bài viết lên mạng xã hội, quản lý thông
tin user, speaker của hệ thống thông qua những file excel hoặc không đảm bảo
được thơng tin an tồn.

3.1.2. Các API phục vụ cho hệ thống Igen
➢ APIs quản lý speaker:
○ Yêu cầu tài khoản đăng nhập với quyền admin hoặc srm mới có
thể gọi được các api như hình 3.1.
○ Với phương thức GET /speaker sẽ giúp ra các speaker được
quản lý bởi tài khoản người gọi. Những cài đặt khi gửi lên và giá
trị nhận về khi gọi api tương tự như hình 3.2 và hình 3.3.
○ Với phương thức POST /speaker sẽ giúp người lập trình frontend xác định những giá trị mà server có thể nhận và lưu vào
database và dữ liệu được trả về sao khi lưu hình
○ Với PUT /speaker DELETE /speaker tương tự như phương
thức POST.
Hình 3.1. Danh sách các api trong quản lý speaker

11


Hình 3.2. Mơ tả chi tiết về api get all speaker


Hình 3.3. Dữ liệu trả về khi lấy danh sách speaker

12


Hình 3.4. Schema cho phương thức POST

➢ APIs quản lý tài khoản như hình 3.5:
○ Với phương GET /getInfo giúp lấy ra thông tin cơ bản
của người dùng.
○ Với phương thức POST /changePassword giúp kiểm tra
khẩu cũ và thay đổi mật khẩu mới cho tài khoản.
○ Với phương thức POST /getCode giúp kiểm tra email tài
khoản và nhận lại mã áp dụng cho việc reset password.
○ Với phương thức POST /resetPassword giúp kiểm tra mã
được cấp trong quá trình get code cịn hạn sử dụng hay
khơng và sau đó thay đổi password.

13


Hình 3.5. Quản lý tài khoản.
➢ APIs xác thực người dùng như hình 3.6:
○ Với phương thức POST /auth/register dùng để đăng ký
tài khoản trên hệ thống ngồi ra có thể đăng ký bằng
google, facebook thông qua POST /auth/userRegister.
○ Với phương thức POST /auth/login dùng để đăng nhập
bằng tài khoản đã được đăng ký trên hệ thống. Với những
tài khoản đăng nhập bằng google hoặc facebook thì sẽ

được đăng nhập bằng POST /auth/loginWithOther .
○ Với phương thức POST /auth/activeUser đối với những
tài khoản tạo trên hệ thống thì phải thực hiện xác nhận
thơng qua gmail để được kích hoạt.

Hình 3.6. Xác thực người dùng.
➢ APIs quản lý lesson cho người dùng hệ thống hình 3.7
○ Với phương thức GET /lesson chỉ hỗ trợ cho tài khoản là
admin để lấy ra danh sách tất cả các lesson của các
speaker.
○ Với phương thức GET /lesson/mySpeaker chỉ hỗ trợ cho
tài khoản là srm để lấy ra danh sách tất cả các lesson của
cách speaker thuộc sự quản lý của họ.
○ Với phương thức GET /lesson/myLesson giúp cho những
tài khoản speaker lấy ra những lesson hiện tại của mình.
○ Với phương thức POST /lesson hỗ trợ cho tài khoản có
14


role khác user để tạo ra các lesson.
○ Với phương thức PUT /lesson hỗ trợ cho tài khoản có role
khác user để cập nhật thông tin cho các lesson, với những
lesson đã có người đăng ký học thì sẽ khơng đc thay đổi
thông.
○ Với phương thức DELETE /lesson hỗ trợ cho tài khoản
có role là admin. Khi thực hiện chức năng xố sẽ sẽ thực
hiện gửi mail đến tồn bộ những tài khoản đã đăng ký
lesson và speaker của lesson.

Hình 3.7. Quản lý lesson cho người quản lý hệ thống

➢ APIs cho tài khoản user đăng ký lesson của các topic trên hệ
thống hình 3.8:
○ Với phương thức GET /topics/getAllTopicByDay lấy ra
danh sách các topic đang diễn ra lesson theo ngày hiện tại
về sau.
○ Với phương thức POST /topics/book-topic giúp kiểm tra
tài khoản user có được phép đăng ký lesson thuộc topic đó
hay khơng.
○ Với phương thức POST /topics/join-topic khi đến thời
gian user có thể tham gia lớp học ở các nền tảng như
zoom, google meeting.
○ Với phương thức GET /topics/getMyHistory lấy ra danh
sách các topic đã đăng ký.

15


Hình 3.8. Quản lý lesson
➢ APIs quản lý user của admin
○ Với phương thức GET /users/getAllUser giúp lấy ra tất
cả user từ hệ thống.
○ Với phương thức GET /users/getAllUserBlock giúp lấy
ra tất cả user bị khoá từ hệ thống.
○ Với phương thức POST /users/createUser giúp các tài
khoản với role là admin có thể thêm mới các tài khoản
khác.
○ Với phương thức PUT /user/updateUser giúp các tài
khoản admin có thẻ chỉnh lại role, type account, name,
phone cho các tài khoản khác.
○ Với phương thức POST /users/sendMailFeedback giúp

các admin có thể nhắn tin trực tiếp từ hệ thống đến các
user khác mà không cần vào email.
○ Với phương thức POST /users/verifyAccountSuccess
giúp admin có thể verify các tài khoản hợp lệ được phép
sử dụng hệ thống.

Hình 3.8. Quản lý users
➢ APIs quản lý nhóm speaker
○ Với phương thức GET /room lấy ra danh sách các kênh
hiện tại. Mỗi kênh thì sẽ có một Host, một deputy và nhiều
speaker khách.
○ Với phương thức POST /room cho phép admin tạo ra
những kênh khác nhau để cho các srm trong hệ thống dễ
dàng quản lý các speaker.
○ Với phương thức PUT /room cho phép admin thay đổi
cập nhật các speaker và các srm trong kênh.
○ Với phương thức DELETE /room cho phép admin xóa
kênh và gửi mail đến toàn bộ những speaker đang ở trong
kênh.
16


3.2.

Thực hiện

Các thành viên của team internship:
❖ Nguyễn Thanh Thọ
❖ Bùi Bình
Và sự giúp đỡ tận tình của anh Tâm, anh Nhàn.


3.3.

Kế hoạch
❖ Sprint:
➢ Phân tích yêu cầu từ phía khách hàng.
➢ Mơ hình hóa chức năng thơng quan sơ đồ Usecase diagram,
Activity diagram, Class diagram.
➢ Viết api xử lý dữ liệu phía server.
❖ Kết quả :
➢ Hồn thành mơ hình hố dữ liệu:
■ Sơ đồ usecase.

17


18


■ Sơ đồ class diagram.

19


TÀI LIỆU THAM KHẢO
Javascript
/>ReactJS
/>NodeJS
/>NestJS
/>Mongoose

/>
20


TỔNG KẾT
Trong thời gian 2 tháng làm việc trong môi trường chuyên nghiệp. Em đã nhận
được sự giúp đỡ của các anh. Học được khả năng suy nghĩ độc lập, phân tích và giải
quyết vấn đề, nâng cao khả năng tự học. Học được những kiến thức căn bản về
javascript và phát triển khả năng tư duy server-side của bản thân.
Chân thành cảm ơn thầy cô và các anh chị của công ty Edutek đã tạo điều kiện
và môi trường để những sinh viên như tụi em chuẩn bị hành trang trong chặn đường
dài sắp tới.

21



×