What is code splitting and how does `dynamic()` help in Next.js? | LetsGit.IT