การวิเคราะห์ขนาดชุดรวม
วิเคราะห์และลดขนาดชุดรวม JavaScript ของแอปพลิเคชัน เพื่อให้หน้าเว็บโหลดครั้งแรกได้เร็วขึ้นและมีประสิทธิภาพดียิ่งขึ้น
การวิเคราะห์ขนาดชุดรวม เป็นบทเรียน Next.js 15 Fullstack (App Router + Server Actions) ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Next.js 15 Fullstack (App Router + Server Actions) และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Next.js 15 Fullstack (App Router + Server Actions) มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
What is a JavaScript Bundle?
When you build a Next.js application for production, all your JavaScript code – your components, libraries, and Next.js itself – gets combined and optimized into one or more files called "bundles".
These bundles are what the user's browser downloads to run your application.
Impact on Performance
The larger your JavaScript bundles are, the longer it takes for a user's browser to download, parse, and execute them.
- Slower Load Times: Users wait longer for your app to become interactive.
- Higher Data Usage: Especially important for mobile users on limited data plans.
- Worse User Experience: Can lead to frustration and users abandoning your site.
Analyzing Your Build Output
Next.js provides useful information when you run next build. It shows the size of each page's JavaScript bundle.
However, for a deeper look into what's inside those bundles, you need specialized tools.
next buildVisualizing Bundles with Analyzer
The @next/bundle-analyzer package is a powerful tool. It creates an interactive treemap visualization of your bundles.
This visual map helps you quickly identify large modules or third-party libraries that contribute significantly to your bundle size.
Configuring the Analyzer
First, install the package:
npm install --save-dev @next/bundle-analyzer
Then, update your next.config.js to enable it conditionally:
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
openAnalyzer: false,
});
module.exports = withBundleAnalyzer({});Generating the Bundle Report
To generate the report, you need to set the ANALYZE environment variable and then run your Next.js build command.
This will create HTML files in your .next/analyze folder that you can open in your browser.
ANALYZE=true npm run buildWhat Makes Bundles Large?
Several factors can lead to an oversized bundle:
- Large Libraries: Importing an entire library when you only use a small part.
- Duplicate Code: Different parts of your app importing the same module.
- Unused Code: Code that's included but never executed (dead code).
- Heavy Assets: Inline SVG or base64 images directly in JS files.
Splitting Code for Efficiency
Code splitting is a technique that breaks your code into smaller "chunks" that can be loaded on demand. Next.js does this automatically for pages.
For components within a page, you can use dynamic imports to load them only when needed, reducing the initial bundle size.
Lazily Loading Components
Use next/dynamic to import components only when they are rendered. This is perfect for components that aren't critical for the initial page load, like modals or admin panels.
import dynamic from 'next/dynamic';
const LazyComponent = dynamic(() => import('../components/HeavyComponent'), {
loading: () => <p>Loading...</p>,
});
function MyPage() {
return (
<div>
<h1>My Page</h1>
<LazyComponent />
</div>
);
}Quick Check: Bundle Optimization
Consider a Next.js application that has grown significantly. Which of the following strategies are effective for reducing the initial JavaScript bundle size?
Summary of Bundle Optimization
Great job! You've learned how to analyze your Next.js application's JavaScript bundle size and implement key optimization techniques.
- Use
@next/bundle-analyzerto visualize your bundles. - Implement dynamic imports for non-critical components.
- Be mindful of large third-party libraries and ensure tree-shaking is effective.
Optimizing bundle size is crucial for delivering a fast and responsive user experience.
เรียนรู้ TypeScript ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 22
- บทเรียน
- 88
คำถามที่พบบ่อย
บทเรียน “การวิเคราะห์ขนาดชุดรวม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การวิเคราะห์ขนาดชุดรวม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Next.js 15 Fullstack (App Router + Server Actions) ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Next.js 15 Fullstack (App Router + Server Actions) มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การวิเคราะห์ขนาดชุดรวม”
วิเคราะห์และลดขนาดชุดรวม JavaScript ของแอปพลิเคชัน เพื่อให้หน้าเว็บโหลดครั้งแรกได้เร็วขึ้นและมีประสิทธิภาพดียิ่งขึ้น คุณปฏิบัติ Next.js 15 Fullstack (App Router + Server Actions) ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Next.js 15 Fullstack (App Router + Server Actions) หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Next.js 15 Fullstack (App Router + Server Actions) บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การวิเคราะห์ขนาดชุดรวม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Next.js 15 Fullstack (App Router + Server Actions) นี้ได้ไหม
ได้ บทเรียน Next.js 15 Fullstack (App Router + Server Actions) ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การปรับแต่งรูปภาพและแบบอักษร
- การวิเคราะห์ขนาดชุดรวม
- กลยุทธ์การแคชชั้นสูง
- การสตรีมส่วนติดต่อผู้ใช้ด้วย Suspense และสถานะการโหลด