KoaJS একটি লঘু এবং কাস্টমাইজযোগ্য ফ্রেমওয়ার্ক, যা Node.js পরিবেশে ব্যবহৃত হয়। তবে KoaJS নিজে স্ট্যাটিক ফাইল সার্ভ করার জন্য কোনো বিল্ট-ইন সমাধান সরবরাহ করে না। তবে, আপনি সহজেই koa-static প্যাকেজটি ব্যবহার করে স্ট্যাটিক ফাইল সার্ভ করতে পারেন। এটি মূলত কনফিগারযোগ্য একটি মিডলওয়্যার, যা নির্দিষ্ট ডিরেক্টরি থেকে স্ট্যাটিক ফাইল (যেমন HTML, CSS, JavaScript, ইমেজ ইত্যাদি) ক্লায়েন্টে সরবরাহ করতে সাহায্য করে।
koa-static প্যাকেজ ইনস্টল করা
প্রথমে আপনাকে koa-static প্যাকেজটি ইনস্টল করতে হবে। এটি আপনার KoaJS অ্যাপ্লিকেশনকে স্ট্যাটিক ফাইল সরবরাহ করতে সহায়তা করবে।
ইনস্টলেশন:
npm install koa-static
koa-static ব্যবহার করে স্ট্যাটিক ফাইল সার্ভ করা
koa-static প্যাকেজটি ব্যবহার করার জন্য আপনাকে এই মিডলওয়্যারটি আপনার KoaJS অ্যাপ্লিকেশনে যুক্ত করতে হবে এবং যে ডিরেক্টরি থেকে ফাইলগুলি সার্ভ করতে চান, তার পথ নির্দিষ্ট করতে হবে।
উদাহরণ:
ধরা যাক, আপনার স্ট্যাটিক ফাইলগুলি public নামক একটি ডিরেক্টরিতে রয়েছে। আপনি যদি public ডিরেক্টরি থেকে ফাইলগুলো সার্ভ করতে চান, তাহলে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।
const Koa = require('koa');
const path = require('path');
const serve = require('koa-static');
const app = new Koa();
// স্ট্যাটিক ফাইলগুলির জন্য 'public' ডিরেক্টরি ব্যবহার করা
const staticPath = path.join(__dirname, 'public');
app.use(serve(staticPath));
// অ্যাপ চালু করা
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
এখানে, koa-static মিডলওয়্যারটি public ডিরেক্টরিটি সার্ভ করছে, এবং আপনি যখন http://localhost:3000/yourfile.html রিকোয়েস্ট করবেন, তখন এটি public/yourfile.html ফাইলটি ক্লায়েন্টে পাঠাবে।
স্ট্যাটিক ফাইল স্ট্রাকচার:
project-folder/
│
├── public/
│ ├── index.html
│ ├── style.css
│ └── script.js
│
└── app.js
এখানে public/index.html ফাইলটি আপনি http://localhost:3000/index.html এ অ্যাক্সেস করতে পারবেন।
কাস্টম রুট দিয়ে স্ট্যাটিক ফাইল সার্ভ করা
আপনি যদি চান যে স্ট্যাটিক ফাইলগুলির জন্য একটি কাস্টম রুট ব্যবহার করতে, তাহলে koa-static এর মাধ্যমে এটি কাস্টমাইজ করা সম্ভব।
app.use(serve(staticPath, {
prefix: '/static', // স্ট্যাটিক ফাইলের জন্য কাস্টম রুট
}));
// এখন আপনি স্ট্যাটিক ফাইল অ্যাক্সেস করতে পারবেন এই রকম: http://localhost:3000/static/index.html
এখানে, prefix: '/static' ব্যবহার করে আপনি public ফোল্ডারে থাকা ফাইলগুলির জন্য একটি কাস্টম রুট /static তৈরি করেছেন।
নির্দিষ্ট ফাইল এক্সটেনশনের জন্য কাস্টম হেডার সেট করা
koa-static এর মাধ্যমে আপনি নির্দিষ্ট ফাইল এক্সটেনশনের জন্য কাস্টম HTTP হেডার সেট করতে পারেন, যেমন মিমে টাইপ বা কন্টেন্ট টাইপ।
app.use(serve(staticPath, {
setHeaders: (res, path) => {
if (path.endsWith('.html')) {
res.setHeader('Cache-Control', 'public, max-age=3600');
}
}
}));
এখানে, .html ফাইলের জন্য একটি কাস্টম Cache-Control হেডার সেট করা হয়েছে, যা সার্ভার থেকে ক্লায়েন্টে .html ফাইলের ক্যাশিং নিয়ন্ত্রণ করবে।
Error Handling for Static Files
যদি স্ট্যাটিক ফাইল পাওয়া না যায়, তাহলে আপনি একটি কাস্টম ত্রুটি হ্যান্ডলিং মিডলওয়্যার যোগ করতে পারেন, যাতে ফাইল না পাওয়া গেলে একটি 404 ত্রুটি রেসপন্স করা হয়।
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
if (err.code === 'ENOENT') {
ctx.status = 404;
ctx.body = 'File Not Found';
} else {
throw err;
}
}
});
এখানে, যদি স্ট্যাটিক ফাইল না পাওয়া যায়, তাহলে ENOENT ত্রুটি ক্যাচ হবে এবং 404 ত্রুটি রেসপন্স করা হবে।
সারাংশ
KoaJS-এ koa-static ব্যবহার করে সহজেই স্ট্যাটিক ফাইল সার্ভ করা সম্ভব। এই মিডলওয়্যারটি স্ট্যাটিক ফাইল সার্ভিংয়ের জন্য একটি সোজা ও কার্যকরী সমাধান প্রদান করে, যেখানে আপনি স্ট্যাটিক ফাইলের জন্য কাস্টম রুট, ক্যাশ কন্ট্রোল, বা মিমে টাইপ হেডার সেট করতে পারেন। এটি একটি অত্যন্ত প্রয়োজনীয় টুল, বিশেষ করে যখন আপনি আপনার KoaJS অ্যাপ্লিকেশনে ফাইল সঠিকভাবে পরিবেশন করতে চান।
Read more