BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP NGÀNH
THIẾT KẾ TRANG RECENTLY VIEWED TRONG DỰ ÁN ABC TODO LIST
Công ty thực tập: ABC Software Solution Giảng viên hướng dẫn: Huỳnh Tuấn Anh Người phụ trách/Giám sát: Lâm Minh Thiện Sinh viên thực hiện: Lê Trường Giang Mã số sinh viên: 62133637
Khánh Hòa – 01/2023
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP NGÀNH
THIẾT KẾ TRANG RECENTLY VIEWED TRONG DỰ ÁN ABC TODO LIST
Công ty thực tập: ABC Software Solution Giảng viên hướng dẫn: Huỳnh Tuấn Anh Người phụ trách/Giám sát: Lâm Minh Thiện Sinh viên thực hiện: Lê Trường Giang Mã số sinh viên: 62133637
2
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
Khánh Hòa – 01/2023
3
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
NHẬN XÉT CỦA GIẢNG VIÊN …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… ……………………………………………………………………………………
LỜI CẢM ƠN Trước hết, em xin bày tỏ lịng biết ơn sâu sắc đến Khoa Cơng nghệ thông tin của Trường Đại học Nha Trang và đối tác cơng ty ABC Solutions (Nha Trang) vì đã tạo điều kiện cho em được thực tập tại công ty. Nhờ có cơ hội này, em đã có dịp tích lũy những kinh nghiệm quý báu và phát triển những kỹ năng cần thiết cho sự nghiệp trong tương lai. Trải qua 6 tuần thực tập, em đã có cơ hội tìm hiểu và áp dụng những kiến thức mới. Dù thời gian ngắn, nhưng nhờ vào sự hướng dẫn tận tình từ anh Lâm Minh Thiện và các đồng nghiệp trong bộ phận, em đã nắm bắt được những khái niệm quan trọng, từ đó phát triển kỹ năng lập trình và xây dựng giao diện trực quan. Họ cũng đã nhiệt tình hỗ trợ em trong cơng việc và giúp em thích nghi với mơi trường làm việc mới.
Đặc biệt, em xin gửi lời cảm ơn thầy Huỳnh Tuấn Anh đã nhiệt tình hỗ trợ, đồng hành cùng với em trong suốt q trình thực tập và hồn thành tốt bài báo cáo này. Vì kiến thức của em còn hạn chế, nên trong suốt q trình thực tập, em nhận thức rằng có một số thiếu sót. Em hiện đang rất mong muốn nhận được sự đóng góp ý kiến quý báu từ thầy cũng như từ đội ngũ của công ty, nhằm giúp bài báo cáo của em trở nên hoàn thiện hơn và chất lượng hơn. Mọi ý kiến đóng góp sẽ là nguồn động viên lớn, giúp em cải thiện và phát triển kỹ năng nghề nghiệp của mình. Em rất trân trọng mọi đóng góp tích cực từ phía thầy và cơng ty để bài báo cáo trở nên xuất sắc hơn.
Khánh Hòa, tháng 1 năm 2023 Sinh viên thực hiện Giang Lê Trường Giang
5
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
MỤC LỤC
NHẬN XÉT CỦA GIẢNG VIÊN...............................................................................4 PHIẾU ĐÁNH GIÁ THỰC TẬP................................................................................5 LỜI CẢM ƠN..............................................................................................................7 CHƯƠNG 1: BÁO CÁO TỔNG HỢP.....................................................................10
1.1. Giới thiệu về công ty.....................................................................................10 1.2. Nội dung thực tập.........................................................................................10
1.2.1. Giới thiệu.................................................................................................10 1.2.2. Lịch làm việc tại nơi thực tập..................................................................10 1.2.3. Nhật ký thực tập.......................................................................................11 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT.........................................................................14 2.1. Giới thiệu về React.......................................................................................14 2.1.1. Tổng quan về React.................................................................................14 2.1.2. Lý do nên dùng React...............................................................................14 2.1.3. Kết luận...................................................................................................14 2.2. Tổng quan về TypeScript.............................................................................15 2.3. Giới thiệu Next.js..........................................................................................16 2.4. Giới thiệu về TailwindUI.............................................................................17 2.5. Cài đặt next.js...............................................................................................18 CHƯƠNG 3: THỰC HIỆN PHẦN MỀM................................................................19 3.1. Công cụ sử dụng:..........................................................................................19 3.2. Bài tập cá nhân tại công ty...........................................................................19 3.2.1. Todo list cơ bản với json-server...............................................................19 3.2.2. Đăng nhập và đăng ký với json-server.....................................................24 3.3. Trang Recently viewed của dự án ABC Todo List.....................................30 CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.........................................34 4.1. Kết luận.........................................................................................................34 4.2. Hướng phát triển..........................................................................................34 TÀI LIỆU THAM KHẢO...........................................................................................35
6
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
CHƯƠNG 1: BÁO CÁO TỔNG HỢP
1.1. Giới thiệu về công ty
Tên công ty: ABC Software Solutions
Địa chỉ: 02 Đường Tố Hữu, Phước Hải, Nha Trang, Khánh Hòa 650000
Email: /
Website: /> Giới thiệu về công ty:
ABC Software Solutions là một công ty chuyên cung cấp các giải pháp kỹ
thuật số cho các vấn đề phức tạp. Công ty có trụ sở tại Nha Trang, Khánh Hịa
và được thành lập vào năm 2022 bởi Mai Văn Khánh. Công ty có quy mơ
khoảng 10-24 nhân viên và hoạt động trong lĩnh vực phần mềm CNTT/Dịch vụ
phần mềm. Cơng ty có một trang web chính thức và một trang Facebook để giới
thiệu về sản phẩm và dịch vụ của mình.
1.2. Nội dung thực tập
1.2.1. Giới thiệu
Họ và tên sinh viên: Lê Trường Giang Lớp: 62.CNTT-1
Giảng viên hướng dẫn: Huỳnh Tuấn Anh
Vị trí thực tập: Web developer
Tên đề tài: Thiết kế trang Recently viewed cho dự án ABC Todo-lfist
Thời gian thực tập: 27/11/2023 – 05/01/2024
Buổi thực tập: 2 ngày/tuần (thứ 3 và thứ 5), những ngày còn lại thực tập tại
nhà
Người hướng dẫn tại công ty: Lâm Minh Thiện
1.2.2. Lịch làm việc tại nơi thực tập
Sáng Chiều
Thứ 3 và thứ 5 8 giờ 00 đến 12 giờ 00 13 giờ 00 đến 17 giờ 00
Thứ 2, thứ 4 và thứ Thực tập tại nhà
6
7
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
1.2.3. Nhật ký thực tập
8
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
Tuần Tên công việc Thời gian Kết quả làm được 1 Ôn tập và làm Từ ngày : - Ôn lại kiến thức cơ bản về 2 các bài tập về 27/11/2023 JavaScript bằng cách đọc và làm JS tuterial, đến ngày: các bài tập trong JavaScript tutorial. 3 TypeScrip. 1/12/2023 - Nắm vững cú pháp và cách sử
dụng các tính năng JS.
- Làm các bài tập thực hành sử dụng
TypeScript để làm quen với cú pháp
và kiểu dữ liệu trong TypeScript.
- Hiểu cách tạo và sử dụng các kiểu
dữ liệu, interfaces và modules trong
TypeScript.
Học thư viện Từ ngày : - Tìm hiểu về React và các khái niệm cơ bản của nó như component, React. 04/12/2023 state, props. - Tạo một ứng dụng React đơn giản https://react.d đến ngày:
ev/learn 08/12/2023
và chạy thử thành công.
- Hiểu cách sử dụng JSX để viết mã
JSX trong React.
- Đọc và hiểu cách làm việc với các
thành phần React.
- Tìm hiểu về việc quản lý state
trong React và cách sử dụng hooks
(useState, useEffect).
Làm các bài Từ ngày : - Làm quen với việc xây dựng một ứng dụng Tic-Tac-Toe sử dụng cơ bản về 11/12/2023 React. - Hiểu cách tạo và sử dụng các React đến ngày: component trong React. - Viết mã JSX để tạo giao diện cho
- Hiểu cách quản lý state trong 9 React và cập nhật state thông qua
hooks (useState) và các hàm xử lý
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1. Giới thiệu về React
React là một thư viện JavaScript phổ biến được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web. Được phát triển bởi Facebook, React đã nhanh chóng trở thành một cơng cụ ưa thích trong cộng đồng phát triển web.
2.1.1. Tổng quan về React
React được thiết kế để tạo ra các giao diện người dùng linh hoạt và dễ bảo
trì. Một trong những đặc điểm nổi bật của React là sự sử dụng các "component", những phần tử độc lập có thể tái sử dụng, giúp tổ chức mã nguồn một cách hiệu quả. React cũng sử dụng Virtual DOM, một biểu diễn của DOM trong bộ nhớ, để tối ưu hóa hiệu suất của ứng dụng. CHƯƠNG 2: 2.1.
2.1.1. 2.1.2. Lý do nên dùng React
Có nhiều lý do mà các nhà phát triển lựa chọn sử dụng React trong các dự án của họ. Dưới đây là một số điểm chính: - Tái sử dụng component: React cho phép bạn xây dựng các component độc
lập, có thể tái sử dụng ở nhiều nơi trong ứng dụng hoặc giữa các dự án khác nhau. - Virtual DOM và hiệu suất: Sử dụng Virtual DOM giúp giảm thiểu số lượng các thay đổi trực tiếp trên DOM, điều này cải thiện hiệu suất của ứng dụng. - Học dễ dàng: React có một cộng đồng lớn và tài liệu phong phú, giúp người mới học và làm việc với nó dễ dàng hơn.
10
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
- Thư viện mạnh mẽ: React được kết hợp với các thư viện khác như Redux để quản lý trạng thái ứng dụng, tạo ra một hệ sinh thái phát triển mạnh mẽ.
2.1.3. Kết luận React khơng chỉ là một thư viện UI mà cịn là một triển khai hiệu quả cho
việc xây dựng ứng dụng web hiện đại. Sự linh hoạt, hiệu suất cao và cộng đồng lớn là những yếu tố giúp React trở thành một lựa chọn phổ biến trong cộng đồng phát triển web.
2.2. Tổng quan về TypeScript TypeScript là một ngơn ngữ lập trình được phát triển bởi Microsoft, là một
siêu set của JavaScript, nghĩa là nó là một mở rộng của JavaScript với thêm tính năng đặc biệt như kiểu dữ liệu tĩnh (static typing). TypeScript được thiết kế để giúp các nhà phát triển xây dựng ứng dụng lớn và dễ bảo trì hơn.
Một số đặc điểm chính của TypeScript: - Kiểu dữ liệu tĩnh: TypeScript hỗ trợ kiểu dữ liệu tĩnh, cho phép xác
định kiểu của biến, tham số hàm và giá trị trả về. Điều này giúp tránh được nhiều lỗi runtime và cung cấp hỗ trợ từ các trình biên dịch trong quá trình phát triển. - Tính năng lập trình hướng đối tượng (OOP): TypeScript hỗ trợ các tính năng của lập trình hướng đối tượng như class, interface, inheritance, và encapsulation, giúp tăng cường cấu trúc và tổ chức mã nguồn.
11
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
- Tương thích với JavaScript: Mọi mã nguồn JavaScript hợp lệ cũng là mã TypeScript hợp lệ. Điều này có nghĩa là bạn có thể chuyển từ JavaScript sang TypeScript một cách dễ dàng và thêm tính năng kiểu dữ liệu tĩnh theo từng phần.
- Tích hợp với các cơng cụ phát triển: TypeScript tích hợp tốt với nhiều công cụ phát triển như Visual Studio Code, Sublime Text, và các trình biên dịch JavaScript như Babel.
- Cộng đồng và hỗ trợ mạnh mẽ: TypeScript có một cộng đồng lớn và được Microsoft hỗ trợ chặt chẽ, đảm bảo rằng ngôn ngữ này luôn được cập nhật và phát triển.
- Mở rộng mã nguồn JavaScript: TypeScript cho phép sử dụng các tính năng mới của ECMAScript (ES6, ES7, ...) trước khi chúng được triển khai chính thức trong trình duyệt.
Tổng quan về TypeScript chỉ ra rằng nó là một lựa chọn mạnh mẽ cho các dự án phức tạp, đặc biệt là trong các ứng dụng lớn và đòi hỏi tính bảo trì cao. 2.3. Giới thiệu Next.js
Next.js là một framework React được sử dụng để xây dựng ứng dụng web React có hiệu suất cao và dễ bảo trì. Được phát triển bởi một đội ngũ tại Vercel, Next.js giúp đơn giản hóa quá trình phát triển ứng dụng React bằng cách cung cấp nhiều tính năng tích hợp sẵn và tối ưu hóa các khía cạnh như routing, tạo trang tĩnh, và quản lý trạng thái.
Dưới đây là một số đặc điểm quan trọng của Next.js: - Routing tự động: Next.js cung cấp một hệ thống routing tự động, giúp
tổ chức mã nguồn và tạo ra các đường dẫn (URL) intuitively dựa trên cấu trúc thư mục của dự án.
12
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
- Tạo trang tĩnh (Static Site Generation - SSG): Next.js cho phép tạo trang tĩnh trước (pre-render) các trang web, giúp cải thiện hiệu suất bằng cách giảm thời gian tải trang và tăng khả năng tương tác.
- Tích hợp Server-side Rendering (SSR): Next.js hỗ trợ SSR, cho phép render trang trên server trước khi gửi đến trình duyệt, giúp cải thiện hiệu suất và tối ưu hóa trải nghiệm người dùng.
- Quản lý trạng thái (State Management): Next.js không ép buộc sử dụng bất kỳ thư viện quản lý trạng thái cụ thể nào, nhưng nó tương thích tốt với các thư viện như Redux hoặc Context API để quản lý trạng thái của ứng dụng.
- Hỗ trợ TypeScript: Next.js hỗ trợ TypeScript natively, cho phép sử dụng kiểu dữ liệu tĩnh trong mã nguồn và tận dụng tính năng của TypeScript.
- Phát triển đồng thời (Hot Module Replacement - HMR): Next.js hỗ
trợ HMR, giúp phát triển nhanh chóng và thấy những thay đổi ngay lập tức mà không cần làm mới trang.
- Cộng đồng và tài liệu phong phú: Next.js có một cộng đồng lớn và năng động, đồng thời có tài liệu chi tiết giúp người phát triển dễ dàng tiếp cận và giải quyết vấn đề.
Next.js giúp đơn giản hóa nhiều khía cạnh của phát triển ứng dụng React và là một lựa chọn mạnh mẽ cho việc xây dựng ứng dụng web hiện đại.
2.4. Giới thiệu về TailwindUI Tailwind là Famework CSS để phát triển UI nhanh chóng. Nó cung cấp các
cơng cụ để phát triển nhanh chóng, đồng thời cho phép nhà phát triển maintain. Mặc dù khơng có giới hạn đối với trí trưởng tượng với Tailwind, thiết kế được cấu
13
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
trúc theo cách để nhà phát triển có thể tạo một quy tắt tăng size của CSS hoặc các thuộc tính lặp đi lặp lại.
Tailwind UI giúp tiết kiệm thời gian phát triển bằng cách cung cấp các thành phần giao diện người dùng đã được thiết kế sẵn và tương thích với Tailwind CSS. Thay vì phải xây dựng từ đầu mỗi thành phần, bạn có thể sử dụng các thành phần có sẵn và chỉnh sửa chúng theo ý muốn. Điều này giúp tăng tốc quá trình phát triển và đồng thời đảm bảo tính nhất quán về giao diện trong dự án của bạn.
2.5. Cài đặt next.js Mở terminal hoặc command prompt. Chạy lệnh sau để tạo một dự án Next.js mới:
npx create-next-app my-next-app Trong đó, `my-next-app` là tên của thư mục dự án mới. Bạn có thể thay đổi tên theo ý muốn.
Di chuyển vào thư mục dự án mới: cd my-next-app
Chạy ứng dụng Next.js: npm run dev Lệnh trên sẽ khởi chạy ứng dụng Next.js trong môi trường phát triển và tạo một
server phản hồi tức thì. Mở trình duyệt và truy cập địa chỉ [http://localhost:3000](http://localhost:3000) để xem ứng dụng.
14
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
CHƯƠNG 3: THỰC HIỆN PHẦN MỀM 3.1. Công cụ sử dụng:
1. Visual Studio Code (VSCode): Một trình soạn thảo mã nguồn mở và miễn phí, được phát triển bởi Microsoft, với nhiều tiện ích mở rộng hỗ trợ React
và TypeScript.
2. Figma : Figma là một công cụ thiết kế giao diện người dùng (UI) và tạo wireframe rất mạnh mẽ và phổ biến. Tích hợp Figma vào quy trình phát triển của mình khi làm việc với React và Next.js.
3. npx : là một công cụ đi kèm với Node.js, cho phép bạn chạy các ứng dụng hoặc công cụ npm mà khơng cần cài đặt chúng trên máy tính của bạn. Dưới đây là một số cách bạn có thể sử dụng npx trong quy trình làm việc của mình với React và Next.js.
4. Github: là một dịch vụ lưu trữ mã nguồn và hợp tác phổ biến giúp nhóm phát triển quản lý và theo dõi mã nguồn của dự án một cách hiệu quả.
5. Yarn và npm: là hai cơng cụ quản lý gói (package manager) phổ biến trong cộng đồng phát triển JavaScript. Cả hai công cụ này đều được sử dụng để quản lý các thư viện, gói, và phụ thuộc của dự án.
3.2. Bài tập cá nhân tại công ty 3.2.1. Todo list cơ bản với json-server
Giới thiệu:
15
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
Nền Tảng: Ứng dụng Todo List được phát triển sử dụng JSON Server nhằm
tạo ra một giao diện linh hoạt và dễ sử dụng cho việc quản lý danh sách công việc cá nhân.
Mục Tiêu: Xây dựng một hệ thống Todo List có khả năng thêm, sửa, xố nhiệm vụ để người dùng có trải nghiệm quản lý cơng việc linh hoạt.
Chức năng chính: Giao Diện Người Dùng: Thiết kế đơn giản nhưng thân thiện, tối ưu hóa để
tương tác nhanh chóng và dễ sử dụng.
Mã lệnh xử lý giao diện (path : `../src/app/page.tsx`) :
1. import { getAllTodos } from "../../api";
2. import { ITask } from "../../types/tasks";
3. import AddTask from "./components/tasks/AddTask";
4. import TodoList from "./components/tasks/TodoList";
5.
6. export default async function Home() {
7. const tasks = await getAllTodos();
8. return (
9. <main className="max-w-4xl mx-auto mt-4">
10.
11.
Todo list
app
12. <AddTask />
13. </div>
14. <TodoList tasks={tasks} />
15. </main>
16. )}
Thao tác với giao diện:
o Khi nhấn vào button Add new task sẽ hiển thị ra Modal với chức
className="btn btn-primary w-full">Add new task className='ml-2' size={18} />
26. </button>
17
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
27. setModelOpen={setModelOpen}>
28. <form onSubmit={handleSubmitNewToto}>
29.
Add
new task
30. <div className="modal-action">
31.
32. value={newTaskValue}
33. onChange={(e) =>
setNewTaskValue(e.target.value)}
34. required
35. className="input input-bordered
input-primary w-full" />
36. type="submit">Submit</button>
37. </div>
38. </form>
39. </Model>
40. </div>
41. )
42. }
43.
44. export default AddTask
6. Khi nhấn vào Icon chỉnh sửa, xoá sẽ hiện lên Modal với chức năng chỉnh
sửa và thông tin tên nhiệm vụ.
18
Downloaded by Quang Tran ()
lOMoARcPSD|10162138
Tương Tác với JSON Server: Các thao tác thêm, sửa, xoá nhiệm vụ được thực hiện thông qua giao tiếp với JSON Server, đảm bảo đồng bộ dữ liệu giữa client và server. (Đính kèm đoạn mã nguồn tương tác với JSON Server. + Mã lệnh các thao tác: