Cách nhanh nhất để trở thành lập trình viên giỏi là thực hành. Và một cách tuyệt vời để thực hành đó là làm càng nhiều project đơn giản, dễ làm quen càng tốt. Bởi vì mỗi project này chỉ đưa ra và giải quyết một bài toán duy nhất. Do đó, bạn càng làm được nhiều thì bạn càng thu được nhiều kiến thức hơn. Hãy coi mỗi project mà bạn đã hoàn thành như một huy chương mà bạn kiếm được trong hành trình trở thành một lập trình viên giỏi.
Trong danh sách dưới đây, mình đã đưa ra một số dự án yêu thích của mình dành cho người mới. Trên thực tế, đây là những dự án mà mình đã làm khi mới chập chững học JavaScript. Hy vọng rằng, bạn có thể học hỏi từ họ như mình đã từng. Nếu bạn gặp khó khăn, đừng lo lắng, mình sẽ đưa kèm video hướng dẫn bên cạnh mỗi project để chỉ cho bạn cách giải quyết từng bước.
Trước khi xem phuơng pháp giải quyết vấn đề, mình khuyến khích các bạn nên thử suy nghĩ và thử giải quyết nó trước. Đây là chìa khóa để trở thành một lập trình viên tốt. Trong việc học lập trình, không có đường tắt nào cả vì vậy nếu bạn không tự thực hiện công việc, bạn sẽ không thấy cải thiện cho dù bạn xem bao nhiêu hướng dẫn đi chăng nữa. Nếu bạn cảm thấy có quá nhiều kiến thức để tiếp thu, hãy nghỉ ngơi và thư giãn. Hãy nhớ rằng, ai cũng bắt đầu từ con số không, và những lập trình viên top đầu cũng phải bỏ ra rất nhiều thời gian để làm chủ đựoc các kỹ năng của họ.
Mình cũng để phần "try it before you built it" bên cạnh mỗi project. Mỗi project đều được host free bơi Github nên sau khi hoàn thành project đầu tiên, hãy học luôn các để host project bằng cách đọc và làm theo bài hướng dẫn siêu đơn giản này.
Cuối cùng, mình đã thực hiện các cải tiến cho từng project kể từ khi viết các bài hướng dẫn, vì vậy project (phiên bản mới nhất) có thể hơi khác so với project trong video (mặc dù hầu hết chúng đều giống nhau). Nếu bạn muốn có phiên bản mới nhất của các project, hãy check qua GitHub này.
1. Hex colors
https://www.youtube.com/watch?v=4nCH8EA55js
Dự án này sẽ làm gì
Làm cho trang web đẹp hơn một chút với ứng dụng hex colors đơn giản này. Ứng dụng này thay đổi màu nền và hiển thị mã hex của màu đó trên màn hình chỉ bằng cách nhấp vào nút.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Data structures
- Functions
Nhận được gì từ project này
Xây dựng project này đã dạy mình cách sử dụng onclick, thứ được sử dụng để đính kèm một chức năng vào một nút. Trong trường hợp này, hàm tạo ra một màu hex ngẫu nhiên và làm cho nó trở thành màu nền. Học điều này rất hữu ích vì hầu hết mọi ứng dụng web hiện đại đều sử dụng nút. Mình có cảm giác đây là một kỹ thuật mà mình sẽ sử dụng nhiều lần trong tuơng lai.
2. Random Quotes
https://www.youtube.com/watch?v=LdzcRuMnlvs
Dự án này sẽ làm gì
Nếu điều bạn cần một chút động lực, mình sẽ giúp bạn. Trong project này, chúng ta sẽ tạo một hàm tạo những câu quote ngẫu nhiên mà phần lớn là những câu qoute giúp cải thiện động lực.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Objects
- Functions
Nhận được gì từ project này
Ứng dụng này có thể được tạo theo nhiều cách khác nhau nhưng thật thú vị khi thấy nó được giải quyết bằng cách sử dụng một object, một cấu trúc dữ liệu thường chưa được sử dụng. Mình cũng đã học được một thuật toán đơn giản đảm nhận trách nhiệm tạo ta một câu quote ngẫu nhiên mỗi khi người dùng nhấp vào nút.
3. Sliders Image
https://www.youtube.com/watch?v=-5yNF2J0Coc
Dự án này sẽ làm gì
Cần một ứng dụng để hiển thị tất cả các bức ảnh thú vị của bạn? Trong project thứ 3 này, chúng ta sẽ tạo một ứng dụng cho phép chúng ta tạo một danh sách các hình ảnh và điều hướng nó bằng cách nhấp vào nút trái phải. Trong lập trình, nó thường được gọi là image sliders hoặc photo carousels.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Control structures
- Functions
Nhận được gì từ project này
Khá là thú vị khi tìm hiểu cách thức thực hiện loại project kiểu này. Lúc đầu, chúng ta sử dụng CSS để chặn tất cả các hình ảnh khỏi xuất hiện trên màn hình. Sau đó, chúng ta sử dụng JavaScript để điều khiển kiểu CSS để hiển thị một hình ảnh tại một thời điểm. Trước khi hoàn thành project này, mình không chắc liệu có thể thay đổi kiểu CSS trực tiếp bằng JavaScript hay không, hóa ra là có thể.
4. Đồng hồ
https://www.youtube.com/watch?v=QxfQJlEBdNI
Dự án này sẽ làm gì
Bạn đang nghĩ đến việc mua một cái đồng hồ kỹ thuật số? Không còn cần thiết nữa, trong project này, bạn sẽ được học cách tạo một cái đồng hồ của riêng mình.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Data structures
- Functions
- Objects
Nhận được gì từ project này
Trong quá trìnhthực hiện project này, mình đã học được rằng với JavaScript, chúng ta có thể tạo một đối tượng tích hợp sẵn và truy xuất thời gian từ đối tượng đó bằng cách sử dụng các hàm được tích hợp sẵn. Điều này thật tuyệt vì nó giúp loại bỏ việc phải bao gồm một thư viện bổ sung, giống như chúng ta làm trong Python hoặc C ++. Mình cũng đã tìm hiểu về một hàm tích hợp được gọi là setTimeout, được sử dụng để gọi lặp đi lặp lại một hàm khác. Đối với project này, ta cần phải sử dụng setTimeout để đảm bảo rằng thời gian của chúng ta được cập nhật đúng cách.
5. Máy tính
https://www.youtube.com/watch?v=kaq9w0MUInc
Dự án này sẽ làm gì
Một cái máy tính. Một danh sách project JavaScript dành cho người mới bắt đầu sẽ không hoàn chỉnh nếu không có nó và danh sách của chúng ta cũng không phải là ngoại lệ.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
Nhận được gì từ project này
Project này đựoc xây dựng theo một cách đơn giản đến mức khó tin. Trước khi thực hiện, mình đã nghĩ rằng mỗi biểu thức cần được giải quyết thủ công với một số loại hàm phức tạp. Hóa ra có một hàm JavaScript được tích hợp sẵn có tên là eval đảm nhiệm việc này cho chúng ta. Mình thực sự cảm thấy thích thú khi thực hiện project này và thậm chí đã thay đổi phong cách của nó để tạo cho nó một chút hương vị của riêng mình.
6. Shopping list
https://www.youtube.com/watch?v=8I5UCTlMa34
Dự án này sẽ làm gì
Cảm thấy đói? Hãy xách ví lên và đi chợ với ứng dụng shopping app nào.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
- Control structures
- Event listeners
Nhận được gì từ project này
Đây là một ứng dụng thực sự hấp dẫn và là dự án đầu tiên trong danh sách mà chúng ta sử dụng Event listeners. Thật vậy, chúng ta đã sử dụng một Event listeners để thêm một mặt hàng mới vào danh sách bất cứ khi nào người dùng nhấp vào phím “enter” và một Event listeners khác để xóa một mặt hàng khỏi danh sách khi họ nhấp vào mặt hàng cụ thể đó. Việc tìm xem bằng cách nào một hàm chịu trách nhiệm xóa tất cả các phần tử trong một div đựoc viết là rất hữu ích. Trong trường hợp này, hàm này đã xóa tất cả các mặt hàng trong danh sách đi chợ của chúng ta.
7. Tip Calculator
https://www.youtube.com/watch?v=I4tNOpNIU5Q
Dự án này sẽ làm gì
Bạn sẽ không cần nhìn quanh để tìm bồi bàn để tính tiền tip vì đã có ứng dụng này.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
Nhận được gì từ project này
Việc phát triển chức năng xác định số tiền tip của mỗi người khá dễ dàng. Có lẽ thách thức lớn nhất ở đây là sử dụng CSS để bắt chước thiết kế của ứng dụng. Nó có một thiết kế khá đơn giản nhưng thực sự có một chút khó khăn nếu thực hiện mà không xem hướng dẫn trước.
8. To-do List
https://www.youtube.com/watch?v=H5tuwAO-_Kg
Dự án này sẽ làm gì
Hãy tận dụng tối đa thời gian trong ngày của chúng ta với ứng dụng to-do list tuyệt vời này.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Control structures
- Data structures
- Functions
Nhận được gì từ project này
Giải pháp cho vấn đề này rất giống với ứng dụng Shopping list.Chính mình cũng đã xem lại code của ứng dụng đó để giúp mình giải quyết vấn đề này. Tuy nhiên, có một điều khác biệt là chức năng thay đổi màu nền của từng mục trong danh sách. Mình nghĩ đó là một sự bổ sung rất tốt cho project, vì nó làm cho project của chúng ta trông đẹp hơn rất nhiều. Nhìn chung, mình có thể nói rằng đây là một project dạng review nhiều hơn nhưng dù sao nó vẫn là một bài tập thực hành tuyệt vời.
9. Flashcards (với local storage)
https://www.youtube.com/watch?v=wtqbOFYivxw
Dự án này sẽ làm gì
Đây là một ứng dụng cho phép bạn tạo các flashcard, vì vậy hãy bỏ những flashcard giấy đó đi vì chúng ta đã có một sự thay thế hoàn hảo ở đây.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
- Control structures
Nhận được gì từ project này
Trước hết đây là một ứng dụng tuyệt vời. Nó có thể giúp sinh viên học tập và giúp họ tiết kiệm khoản tiền đáng ra phải chi trả cho các flascard bằng giấy. Đây là project đầu tiên trong danh sách mà chúng ta sử dụng flexbox nên ban đầu nó sẽ có chút khó khăn. Tuy nhiên, khi ta đã hiểu về nó, nó thực sự rất dễ sử dụng và nó làm cho dự án linh động hơn rất nhiều. Đặc biệt, mình thực sự thích các tùy chọn align-item, flex-wrap và justify-content vì chúng làm cho các thẻ flashcards có thể responsive.
10. Sticky Notes
https://www.youtube.com/watch?v=_B-54mvPup4
Dự án này sẽ làm gì
Hãy tạo một ứng dụng sticky notes. Và đúng r, bạn có thể vứt hết những tập giấy nhớ trên bàn đi ngay bây giờ.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
- Event listeners
- Data structures
Nhận được gì từ project này
Mã code để xây dựng project này có nét tuơng tự với project flashcards nhưng điều đó không thành vấn đề vì ta vẫn cần thực hành. Thật vậy, nếu mình không có mã cho dự án đó để backup, mình sẽ phải xem lại video hướng dẫn về Flashcards để kiểm tra xem mình có làm đúng hay không. Tất nhiên, dự án này có một số tính năng độc đáo nên việc tìm ra cách viết những phần đó là một sự thách thức. Nhìn chung, mình đã học được rất nhiều điều từ project này kể từ khi nó được xây dựng bằng cách sử dụng kết hợp tất cả những gì chúng ta đã học được cho đến nay.
11. Timer
https://www.youtube.com/watch?v=_bvutuhUxHY
Dự án này sẽ làm gì
Đơn giản chỉ làm tạo một cái đồng hồ bấm giờ thôi.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Functions
- Event listeners
- Objects
Nhận được gì từ project này
Hóa ra việc xây dựng một bộ đếm thời gian đơn giản khó hơn chúng ta tưởng tượng. Người ta sẽ nghĩ rằng việc sử dụng cùng một hàm setInterval từ dự án Đồng hồ bên trên sẽ là đủ để hiển thị thời gian chính xác. Thật ra kỹ thuật đơn giản không hoạt động trong trường hợp này. Đối với project này, chúng ta tạo các biến để chứa các thông tin khác nhau về thời gian, chẳng hạn như thời điểm bắt đầu, thời điểm dừng và thời gian dừng trong bao lâu. Nếu không có các biến này và các phép tính chúng ta thực hiện với chúng, đồng hồ của chúng ta sẽ không thể hiển thị chính xác thời gian đã trôi qua.
12. Cùng làm toán (Math 4 kids)
https://www.youtube.com/watch?v=Uw9wc5wm_mw&feature=emb_imp_woyt
Dự án này sẽ làm gì
Một ứng dụng dạy toán cho trẻ nhỏ khá là cool.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Event listeners
- Control structures
- Data structures
Nhận được gì từ project này
Trong project này, mình đã học cách chuyển từ trang web này sang trang web khác và cách phát một tệp âm thanh. Hóa ra cả hai nhiệm vụ này đều khá đơn giản để thực hiện. Phần khó nhất là tìm cách đặt ngẫu nhiên các câu trả lời vào các ô khác nhau để câu trả lời đúng không phải lúc nào cũng ở cùng một vị trí. Mình đã cố gắng hết sức để tự mình tìm ra giải pháp nhưng cuối cùng vẫn phải xem hướng dẫn để tìm giải pháp.
13. Unsplash API ( Image Generator )
https://www.youtube.com/watch?v=7QQkl0NLxBQ
Dự án này sẽ làm gì
Cần một số ảnh cho trang web của bạn? Hãy tạo một ứng dụng tạo ảnh
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Event listeners
- Control structures
- Promises
- Functions
- Fetch
Nhận được gì từ project này
Hoàn thành project này đã dạy mình cách sử dụng tính năng fetch có sẵn của JavaScript để thực hiện các yêu cầu API. Trước khi xây dựng project này, mình hoàn toàn không biết rằng API Unsplash tồn tại. Thật thú vị khi biết rằng nhiều công ty đã tích hợp API này vào trang web của họ. Thật tuyệt khi có một trình tạo hình ảnh cho bất cứ khi nào ta cần một hình nền mới trên màn hình của mình.
14. Quotes API ( Typewriter )
https://www.youtube.com/watch?v=3rDEQYg8UWU&feature=emb_imp_woyt
Dự án này sẽ làm gì
Một ứng dụng fetch một quote ngẫu nhiên từ API và hiển thị nó trên màn hình.
Try it before you built it
JavaScript sử dụng
- DOM manipulation
- Event listeners
- Control structures
- Promises
- Functions
- Fetch
Nhận được gì từ project này
Học cách viết script của typewriter thật tuyệt vời. Mình thực sự đã thấy hiệu ứng này được triển khai trong các trò chơi điện tử. Bây giờ ta có thể sử dụng nó khi chúng ta xây dựng trò chơi của riêng mình. Liên quan đến code, thật thú vị khi biết rằng không phải lúc nào chúng ta cũng cần CSS để tạo ra các hoạt ảnh thú vị. Trong project này, chúng ta đã sử dụng hàm substring JavaScript có sẵn để tạo hiệu ứng typewriter.
15. Square Cards ( Template )
https://www.youtube.com/watch?v=MvgiPlVF0Tg&feature=emb_imp_woyt
Dự án này sẽ làm gì
Một cách để hiển thị dữ liệu hoặc đơn giản là một thẻ vuông khá phong cách.
Try it before you built it
JavaScript sử dụng
- Event listeners
- Functions
Nhận được gì từ project này
Trong project này, mình đã học cách mở video YouTube và các bài báo trên trang web trực tiếp từ JavaScript. Đây là một sự bổ sung tuyệt vời cho kho công cụ mà mình đã giới thiệu (nhờ 15 dự ántrên đây!) cho một web developer.