ایچ ٹی ایم ایل نے ہمیشہ اسٹریمنگ کی حمایت کی ہے۔ سرور کو براؤزر کو بھیجنے سے پہلے پورے صفحے کو میموری میں بنانے کی ضرورت نہیں ہے۔ آپ پہلے ابتدائی HTML بھیج سکتے ہیں، پھر مزید ٹکڑے بھیج سکتے ہیں کیونکہ ہر ایک حصہ تیار ہے۔ براؤزر ان حصوں کو پارس کرتا ہے اور صفحات کو ترتیب سے دکھاتا ہے۔ ایچ ٹی ایم ایل کے تیز نظر آنے کی ایک وجہ یہ ہے۔
تاہم، روایتی HTML سٹریمنگ کے سخت اصول ہیں۔ HTML دستاویز کی ترتیب میں آتا ہے۔ اگر براؤزر کو پہلے ہیڈر، پھر سائڈبار، اور آخر میں مرکزی مواد ملتا ہے، تو یہ ان حصوں کو اس ترتیب میں پارس کر دے گا۔ اگر ایک سست ڈیٹا بیس استفسار ابتدائی طور پر کسی صفحے کے ایک حصے کو روکتا ہے، تو اگلے حصے کو اکثر سرور کے تیار ہونے کا انتظار کرنا پڑتا ہے۔
جاوا اسکرپٹ کے فریم ورک برسوں سے اس مسئلے کو حل کر رہے ہیں۔ سرور رینڈرنگ فریم ورک شیلز، سٹاپنگ باؤنڈری، لوڈنگ سٹیٹس، اور دیر سے مواد کی سٹریمنگ کو ہینڈل کرتا ہے۔ کچھ فریم ورک موجودہ DOM کو پیچ کرنے کے لیے ان لائن اسکرپٹس کا استعمال کرتے ہیں۔ ایچ ٹی ایم ایکس جیسی لائبریریاں ڈویلپرز کو سرور سے تیار کردہ HTML کے ساتھ صفحہ کے کچھ حصوں کو اپ ڈیٹ کرنے کی اجازت دیتی ہیں۔
تاہم، ان حلوں کے لیے کہیں جاوا اسکرپٹ کی ضرورت ہوتی ہے۔ اعلانیہ جزوی اپ ڈیٹس مختلف سوالات اٹھاتے ہیں۔ کیا ہوگا اگر HTML کے پاس چیزوں کے اظہار کا اپنا طریقہ ہو؟
جب ایسی کوئی چیز آتی ہے تو کیا آپ اسے وہاں رکھتے ہیں؟
کروم کے اعلانیہ جزوی اپ ڈیٹ کی تجویز کے پیچھے یہی خیال ہے۔
اس مضمون میں، آپ اس مسئلے کے بارے میں جانیں گے جسے اعلانیہ جزوی اپ ڈیٹس حل کرنے کی کوشش کر رہے ہیں، مجوزہ پلیس ہولڈر نحو کیسے کام کرتا ہے، کس طرح آؤٹ آف آرڈر ایچ ٹی ایم ایل اسٹریمنگ ریگولر اسٹریمنگ سے مختلف ہے، متعلقہ JavaScript HTML انجیکشن API کا اطلاق کیسے ہوتا ہے، اور اسے کیوں براؤزرز میں پروڈکشن HTML کے بجائے تجرباتی خصوصیت سمجھا جانا چاہیے۔
انڈیکس
جن مسائل کو ہم اعلانیہ جزوی اپ ڈیٹس کے ساتھ حل کرنے کی کوشش کر رہے ہیں۔
اپنے پروڈکٹ کے صفحات پر غور کریں۔ سرور کو صفحہ کا عنوان، نیویگیشن، فوٹر، اور پروڈکٹ کی تفصیلات پہلے سے ہی معلوم ہے۔ تاہم، سفارشات کے سیکشن میں سست ڈیٹا بیس سوالات کی ضرورت ہوتی ہے۔ روایتی سرور سے پیش کردہ HTML کے لیے دو عام اختیارات ہیں:
-
پہلے سرور ہر چیز کے تیار ہونے کا انتظار کرتا ہے اور پھر مکمل HTML جواب بھیجتا ہے۔ یہ کوڈ کو آسان رکھتا ہے، لیکن صارفین کسی بھی مفید چیز کو دیکھنے سے پہلے طویل انتظار کرتے ہیں۔
-
دوسرا، سرور HTML کو مراحل میں چلاتا ہے۔ پہلے صفحہ کا اوپری حصہ بھیجیں، پھر جب آپ تیار ہوں تو باقی بھیج دیں۔ ایسا لگتا ہے کہ اس سے کارکردگی بہتر ہوتی ہے کیونکہ براؤزر پورا جواب مکمل ہونے سے پہلے رینڈرنگ شروع کر دیتا ہے۔
لیکن تنہا اسٹریمنگ اس مسئلے کو مکمل طور پر حل نہیں کرتی ہے۔ براؤزر اب بھی HTML کو ترتیب وار تجزیہ کرتے ہیں۔ اگر آپ کے پاس اپنی دستاویز کے آغاز میں ایک سست ریفرل بلاک ہے، تو اس بلاک کے بعد کا مواد اس وقت تک انتظار کرے گا جب تک کہ آپ دستاویز کو دوبارہ ترتیب نہیں دیتے، JavaScript شامل نہیں کرتے، یا فریم ورک خلاصہ استعمال نہیں کرتے۔
WICG پیچ کی تفصیل روایتی HTML سٹریمنگ کی دو حدود کو بیان کرتی ہے:
-
HTML مواد کو DOM ترتیب میں نشر کیا جاتا ہے۔
-
ابتدائی دستاویز پارس کرنے کے مرحلے کے بعد، سلسلہ بندی پہلے کی طرح فعال نہیں رہی۔
اعلانیہ جزوی اپ ڈیٹس پہلی حد کو نرم کرنے کی کوشش کرتے ہیں۔ یہ سرور کو پہلے پلیس ہولڈر بھیجنے اور پھر جواب میں اصل مواد بھیجنے کی اجازت دیتا ہے۔ براؤزر اگلے مواد کو پچھلے پلیس ہولڈر پر لاگو کرتا ہے۔ اس پیچ کو حسب ضرورت کلائنٹ سائڈ DOM پیچ کوڈ کی ضرورت نہیں ہے۔
اوپر دیے گئے خاکے میں، سرور ترتیب سے HTML ٹکڑوں کو بھیجتا ہے۔ براؤزر جواب کے اختتام سے پہلے ابتدائی حصہ رینڈر کر سکتا ہے، لیکن جس ترتیب میں اسے رینڈر کیا گیا ہے وہ اب بھی جواب کی ترتیب پر عمل کرے گا۔
روایتی HTML سٹریمنگ کیسے کام کرتی ہے۔
کسی تجویز کا مطالعہ کرنے سے پہلے، آپ کو اس کی بنیادی ساخت کو سمجھنے کی ضرورت ہے۔ سرور HTTP رسپانس باڈی بھیجتا ہے۔ جسم HTML پر مشتمل ہے۔ براؤزر آتے ہی جواب پڑھتا ہے۔ پہلے ٹیگ کو پارس کرنے کے لیے پورے رسپانس باڈی کا انتظار کرنے کی ضرورت نہیں ہے۔
یہاں ایک چھوٹی Node.js مثال ہے:
import http from "node:http";
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const server = http.createServer(async (req, res) => {
res.writeHead(200, {
"Content-Type": "text/html; charset=utf-8",
});
res.write(`
Normal HTML Streaming
This part arrives first.
`);
await sleep(2000);
res.write(`
This part arrives after two seconds.
`);
await sleep(2000);
res.end(`
This part arrives after four seconds.
`);
});
server.listen(3000, () => {
console.log("Server running at http://localhost:3000");
});
اس مثال میں، ہم ایک چھوٹا HTTP سرور بنانے کے لیے نوڈ کی بلٹ ان خصوصیات کا استعمال کریں گے۔ http ماڈیول جب آپ کسی صفحہ پر جاتے ہیں تو سرور تین الگ الگ HTML حصوں میں جواب بھیجتا ہے۔
پہلے res.write() فوری طور پر دستاویز کا شیل، عنوان، اور پہلا پیراگراف بھیجیں۔ پھر sleep(2000) اگلے سرور سے پہلے سرور کو 2 سیکنڈ کے لیے روک دیں۔ res.write() دوسرا پیراگراف بھیجیں۔ ایک اور توقف کے بعد، res.end() آخری پیراگراف بھیجیں اور HTML دستاویز کو بند کریں۔
براؤزر پورے جواب کے مکمل ہونے سے پہلے پہلا حصہ پیش کرنا شروع کر دیتا ہے، پھر مزید HTML آنے کے بعد بعد کے پیراگراف شامل کرتا ہے۔
اس سے ظاہر ہوتا ہے کہ سادہ ایچ ٹی ایم ایل سٹریمنگ کام کرتی ہے، لیکن مواد اسی ترتیب سے ظاہر ہوتا ہے جو سرور اسے بھیجتا ہے۔
اب اس صفحہ کو اپنے براؤزر میں کھولیں۔
http://localhost:3000
پورے جواب کے مکمل ہونے سے پہلے صفحہ کا پہلا حصہ ظاہر ہوتا ہے۔ جیسا کہ سرور مزید ٹکڑوں کو بھیجتا ہے، براؤزر لوڈ ہوتا رہتا ہے۔
یہ رویہ پرانا اور فعال ہے۔ لیکن اس کی ساخت پر توجہ دینا. سرور پہلا پیراگراف، پھر دوسرا پیراگراف، اور پھر تیسرا پیراگراف لکھتا ہے۔ براؤزر انہیں اسی ترتیب میں وصول کرتا ہے۔ یہ انہیں اسی ترتیب میں DOM میں بھی رکھتا ہے۔
روایتی سلسلہ بندی آپ کو پہلے پرانا مواد بھیجنے کی اجازت دیتی ہے۔ لیکن یہ یہ کہنے کا کوئی مقامی طریقہ فراہم نہیں کرتا ہے کہ یہ اگلا حصہ پچھلے پلیس ہولڈر کے اندر ہوگا۔ اعلانیہ جزوی اپ ڈیٹس گمشدہ حصوں کو نشانہ بناتے ہیں۔
کیوں فریم ورک پہلے ہی اس مسئلے کو حل کرتے ہیں۔
جدید فریم ورک پہلے سے ہی ایک ایسا ماحول بنا رہے ہیں جہاں صفحہ کے کچھ حصے تیار ہونے کے بعد پیش کیے جاتے ہیں۔ ری ایکٹ سرور کے اجزاء اور سسپنس پر مبنی سرور رینڈرنگ عام مثالیں ہیں۔ فریم ورک پہلے شیل بھیج سکتا ہے، متبادل ڈسپلے کر سکتا ہے، اور پھر بعد میں پورے مواد کو سٹریم کر سکتا ہے۔
تاہم، براؤزر ری ایکٹ کی حدود کو مقامی HTML کے طور پر نہیں سمجھتے ہیں۔ فریم ورک کو اپنا پروٹوکول انکوڈ کرنا چاہیے۔ WICG پیچ کی تفصیل کے مطابق، React ان لائننگ کا استعمال کرتا ہے۔ {
const response = await fetch("/comments-stream")
response.body
.pipeThrough(new TextDecoderStream())
.pipeTo(comments.streamHTMLUnsafe())
})
]]>
`);
}
server.listen(3000, () => {
console.log("Server running at http://localhost:3000");
});
یہ فائل ایک بنیادی ڈیمو سرور بناتی ہے۔ نوڈ کی ہمت حاصل کریں۔ http ایک ماڈیول کی وضاحت کریں اور پھر ایک چھوٹا شامل کریں۔ sleep() موخر سٹریمنگ کے لیے ایک مددگار بنائیں اور پھر تین منصوبہ بند راستوں کے ساتھ ایک HTTP سرور بنائیں۔
اگر درخواست کا URL مماثل ہے۔ /normal-stream، /partial-updates-demoیا /stream-html-api-demoسرور درخواست کو مناسب فنکشن میں بھیج دیتا ہے۔ جب کوئی صارف روٹ پیج پر جاتا ہے تو سرور ایک سادہ HTML صفحہ لوٹاتا ہے جس میں تین ڈیمو کے لنکس ہوتے ہیں۔
آخر کار server.listen(3000) پورٹ پر سرور شروع کریں۔ 3000آپ اپنے براؤزر میں ڈیمو کھول سکتے ہیں۔ http://localhost:3000.
سرور چلائیں:
npm run dev
پھر اسے اپنے براؤزر میں کھولیں۔
http://localhost:3000
اب تین ڈیمو ہیں:
جنرل اسٹریمنگ پاتھ ٹیسٹ
یہ راستہ کھولیں:
http://localhost:3000/normal-stream
اپنے براؤزر پر ایک نظر ڈالیں۔
-
پہلا پیراگراف جلد ظاہر ہوتا ہے۔
-
دوسرا پیراگراف بعد میں ظاہر ہوتا ہے۔
-
تیسرا پیراگراف آخری نظر آتا ہے۔
یہ مفید ہے، لیکن یہ اب بھی ترتیب سے باہر ہے۔ براؤزر اسی ترتیب میں پیش کرتا ہے جو سرور بھیجتا ہے۔
اعلانیہ جزوی اپ ڈیٹ پاتھ ٹیسٹنگ
یہ راستہ کھولیں:
http://localhost:3000/partial-updates-demo
تجرباتی خصوصیت کو سپورٹ کرنے والے براؤزرز میں، صفحہ ابتدائی طور پر تین لوڈنگ ایریاز دکھائے گا۔
-
پروفائل ایریا 1 سیکنڈ میں اپ ڈیٹ ہو جائے گا۔
-
اطلاع کا علاقہ ایک لمحے میں اپ ڈیٹ ہو جائے گا۔
-
مزید 2 سیکنڈ کے بعد، نمایاں جگہ کو اپ ڈیٹ کر دیا جائے گا۔
آرڈر نوٹ کریں۔ دستاویز میں اطلاعات سے پہلے سفارشات کا سیکشن ظاہر ہوتا ہے۔ تاہم، سرور سفارشی ٹیمپلیٹس سے پہلے نوٹیفکیشن ٹیمپلیٹس بھیجتا ہے۔
یہی بات ہے۔ دستاویز کا ڈھانچہ اور اسٹریمنگ آرڈر اب ایک جیسا ہونے کی ضرورت نہیں ہے۔ براؤزر for ہر ایک وصف مشابہ پروسیسنگ انسٹرکشن پلیس ہولڈرز تلاش کرنے کے لیے:
یہ مثال آؤٹ آف آرڈر HTML اسٹریمنگ کے بنیادی خیال کو ظاہر کرتی ہے۔
ٹیسٹ اسٹریمنگ HTML API روٹ
یہ راستہ کھولیں:
http://localhost:3000/stream-html-api-demo
بٹن پر کلک کریں۔
-
براؤزر اسے حاصل کرتا ہے۔
/comments-stream. -
سرور تبصرہ کردہ HTML کو ٹکڑوں میں بھیجتا ہے۔
-
کلائنٹ کو سٹریمڈ رسپانس باڈی موصول ہوتی ہے۔
#commentsعنصر
یہ اعلانیہ پلیس ہولڈر پیچ سے مختلف ہے۔ یہاں جاوا اسکرپٹ درخواست شروع کرتا ہے اور ہدف کے عنصر کو منتخب کرتا ہے۔
ایک نیا API JavaScript کے اسٹریم شدہ HTML داخل کرنے کے طریقے کو بہتر بناتا ہے۔ پلیس ہولڈر نحو اس طرح کو بہتر بناتا ہے جس طرح HTML خود دستاویز کی سلسلہ بندی کے دوران تازہ ترین پیچ کا اعلان کرتا ہے۔ براہ کرم ان دونوں خیالات کو الگ رکھیں۔ اگرچہ وہ متعلقہ ہیں، وہ جزوی اپ ڈیٹ کی کہانی کے مختلف حصوں سے خطاب کرتے ہیں۔
براؤزر کی حمایت اور حیثیت
اعلانیہ جزوی اپ ڈیٹس تجرباتی ہیں۔ کروم کا کہنا ہے کہ یہ APIs تجرباتی ویب پلیٹ فارم فیچرز فلیگ کے ذریعے کروم 148 میں ڈویلپر کی جانچ کے لیے تیار ہیں۔
اس کا مطلب یہ ہے کہ اس تجویز کو ایک فعال پلیٹ فارم کے کام کے طور پر پڑھا جانا چاہیے، نہ کہ مستحکم پروڈکشن HTML کے طور پر۔
کروم میں ڈیفالٹ رویے کو جانچنے کے لیے اس پرچم کو فعال کریں۔
chrome://flags/#enable-experimental-web-platform-features
پھر اپنا براؤزر دوبارہ شروع کریں۔ بلنک ڈویلپر تھریڈ اس خصوصیت کو ترتیب میں ایچ ٹی ایم ایل مواد کو اسٹریم کرنے اور انکوڈ شدہ پیچ کے سلسلے کے ساتھ موجودہ دستاویز کو اپ ڈیٹ کرنے کے طور پر بیان کرتا ہے۔
تجویز میں WICG کی تفصیل اور WHATWG HTML پل کی درخواست بھی شامل ہے۔
یہ آپ کو بتاتا ہے کہ تجویز کہاں ہے۔
-
کروم کے پاس عمل درآمد کا ایک حقیقی راستہ ہے۔
-
WICG کے پاس ایک وضاحت ہے۔
-
WHATWG میں معیاری کاری کے بارے میں بحث ہے۔
-
یہ ابھی تک مکمل کراس براؤزر کا معیار نہیں ہے۔
لہذا، اعلانیہ جزوی اپڈیٹس مقامی HTML پیچنگ اور اسٹریمنگ کے لیے مجوزہ براؤزر APIs کا ایک سیٹ ہے۔ کروم نے اسے جھنڈے کے پیچھے ڈویلپر کی جانچ کے لیے دستیاب کرایا ہے۔
سیکورٹی، نسبندی اور تیز کناروں
ایک جزوی اپ ڈیٹ آسان لگ سکتا ہے۔ تاہم، کسی دستاویز میں ایچ ٹی ایم ایل کو شامل کرتے وقت ہمیشہ حفاظتی خطرہ ہوتا ہے۔
HTML صرف متن نہیں ہے۔ اس میں لنکس، فارمز، ایونٹ ہینڈلرز، اسکرپٹس، حسب ضرورت عناصر اور دیگر عناصر شامل ہوسکتے ہیں جن کی براؤزر نے تجزیہ کی ہے۔ لہذا، ایچ ٹی ایم ایل کا ذریعہ اہم ہے.
اگر سرور اپنے ٹیمپلیٹ سے تیار کردہ قابل اعتماد HTML کو اسٹریم کرتا ہے، تو خطرے کی قسم صارف کے تبصرے، پروفائل، یا چیٹ پیغام سے بھیجے گئے HTML کو شامل کرنے سے مختلف ہے۔
ٹیمپلیٹ کی حد
کروم کا مضمون اس حوالے سے اہم حدود کا ذکر کرتا ہے: . ٹیمپلیٹس صرف ایک ہی بنیادی عنصر کے اندر پروسیسنگ ہدایات کو اپ ڈیٹ کرتے ہیں۔ شامل کرنا براہ راست gives it access to the whole document, including the . That behavior is powerful, so you should understand the scope before designing around it.
The main point is simple: Don’t assume a late template should patch any placeholder anywhere without rules. The patch target is scoped for security and predictability.
Dynamic Insertion Has Different Behavior
There’s another sharp edge. If you insert a chunk of HTML dynamically using an API like setHTML() یا innerHTMLبراؤزر پہلے درمیانی ٹکڑے کے اندر متعلقہ HTML کو پارس کرتا ہے۔
اس کا مطلب یہ ہے کہ تجزیہ شدہ ٹکڑے کے اندر ایک اعلانیہ پیچ لگایا جاتا ہے۔ خودکار طور پر پوری موجودہ دستاویز کو تلاش کرتا ہے اور ٹکڑے سے باہر پرانے پلیس ہولڈرز کو اپ ڈیٹ نہیں کرتا ہے۔ یہ فرق اہم ہے کیونکہ دستاویز کی سلسلہ بندی اور متحرک HTML اندراج ایک ہی عمل نہیں ہیں۔
محفوظ اور غیر محفوظ HTML API
JavaScript انجیکشن API محفوظ اور نچلے درجے کے طریقوں میں بھی فرق کرتا ہے۔
MDN کا کہنا ہے کہ setHTML() اگر سپورٹ ہو تو اسے تقریباً ہمیشہ ترجیح دی جاتی ہے، کیونکہ یہ ہمیشہ XSS-غیر محفوظ HTML اداروں کو ختم کر دے گا۔
تو اصول سادہ ہیں۔
-
غیر بھروسہ مند مواد کے لیے محفوظ APIs استعمال کریں۔
-
غیر محفوظ APIs کو بھروسہ مند HTML یا احتیاط سے تیار کردہ HTML کے لیے جدید ٹولز سمجھیں۔
-
صفائی کی حکمت عملی کے بغیر صارف کے زیر کنٹرول HTML کو DOM میں اسٹریم کرنے سے گریز کریں۔
ویب ڈویلپرز کے لیے اس کا کیا مطلب ہے۔
اعلانیہ جزوی اپ ڈیٹس اہم ہیں کیونکہ وہ عام فریم ورک پیٹرن کو ویب پلیٹ فارم کے قریب لے جاتے ہیں۔ برسوں سے، ڈویلپر جاوا اسکرپٹ کا استعمال کرتے ہوئے جزوی اپ ڈیٹ سسٹم بنا رہے ہیں۔
فریم ورک اور لائبریریاں اس ورک فلو کو بہتر کرتی ہیں۔ لیکن براؤزرز میں اب بھی یہ کہنے کے لیے تھوڑی مقامی زبان کی کمی ہے: یہ جائزہ HTML پچھلے پلیس ہولڈر سے تعلق رکھتا ہے۔ اعلانیہ جزوی اپ ڈیٹ اس زبان کو فراہم کرتے ہیں۔
اس کا مطلب یہ نہیں ہے کہ جاوا اسکرپٹ ختم ہو رہا ہے۔ جاوا اسکرپٹ اب بھی تعامل، حالت، ایونٹ ہینڈلنگ، کلائنٹ سائڈ ڈیٹا فلو، اور ایپ کے مختلف رویوں کے لیے درکار ہے۔ اس کا مطلب یہ نہیں ہے کہ فریم ورک بھی ختم ہو رہا ہے۔ ری ایکٹ، ایچ ٹی ایم ایکس، ایسٹرو، اور اسی طرح کے ٹولز DOM پیچنگ سے بڑے مسائل کو حل کرتے ہیں۔
ایک زیادہ حقیقت پسندانہ نتیجہ یہ ہوگا:
-
فریم ورک اور سرور رینڈرنگ ٹولز آخر کار ان پرائمیٹوز کو اندرونی طور پر استعمال کر سکتے ہیں۔
-
سرور کے ذریعے فراہم کردہ چھوٹی ایپس کو براہ راست سادہ لوڈنگ ایریاز کے لیے استعمال کیا جا سکتا ہے۔
-
براؤزر کو ایچ ٹی ایم ایل کو صحیح جگہ پر چلانے کے لیے ایک صاف ستھرا، نچلی سطح کا طریقہ کار ملتا ہے۔ یہ اہم حصہ ہے۔
یہ تجویز HTML کو ایک مکمل ایپ فریم ورک نہیں بناتی ہے۔ یہ ایچ ٹی ایم ایل کے لیے بہتر اسٹریمنگ پیچ پرائمٹیو فراہم کرتا ہے۔
اگر آپ کو یہ مددگار لگتا ہے۔
اعلانیہ جزوی اپ ڈیٹس ان صفحات کے لیے موزوں ہیں جہاں سرور کو ترتیب کو جلد معلوم ہوتا ہے، لیکن کچھ حصے بعد میں مکمل کیے جاتے ہیں۔
ایک اچھی مثال یہ ہوگی:
-
یہ ایک پروڈکٹ کا صفحہ ہے جس میں سست ریفرل بلاک ہے۔
-
ڈیش بورڈ آزاد ڈیٹا کارڈز کے ساتھ۔
-
یہ ایک تلاش کا صفحہ ہے جہاں متعدد خدمات سے نتائج آتے ہیں۔
-
بہت ساری نیویگیشن یا مینو والی سائٹس کو دستاویز کریں۔
-
علیحدہ سرگرمی، اعداد و شمار اور اطلاع کے علاقوں کے ساتھ پروفائل کا صفحہ۔
-
سرور کی طرف سے پیش کردہ ایپس جو کلائنٹ سائیڈ پیچ اسکرپٹ کے بغیر لوڈ رہنا چاہتی ہیں۔
بہترین انتخاب سرور سے تیار کردہ HTML ہے۔ اگر آپ کی ایپ پہلے ہی کلائنٹ پر سب کچھ پیش کرتی ہے، تو یہ تجویز آپ کے فن تعمیر کو زیادہ تبدیل نہیں کرتی ہے۔
اگر آپ کی ایپ تیز رفتار فرسٹ رینڈرنگ، پروگریسو اسٹریمنگ، کم JavaScript اوور ہیڈ، اور سرور کے ذریعے فراہم کردہ UI پر زور دیتی ہے، تو یہ تجویز اور بھی دلکش ہے۔
آج کب سے بچنا ہے۔
اعلانیہ جزوی اپ ڈیٹس پر پیداوار کے انحصار کو فی الحال گریز کرنا چاہیے۔
اس کے لیے استعمال کریں:
ابھی اس راستے کو تنقیدی پروڈکشن UI کے واحد راستے کے طور پر استعمال نہ کریں۔ براؤزر سپورٹ ابھی کافی وسیع نہیں ہے۔ سفارشات تبدیلی کے تابع ہیں۔ ٹولنگ ابھی بالغ نہیں ہوئی ہے۔ زیادہ تر صارفین تجرباتی پرچم کو فعال نہیں چھوڑتے ہیں۔ اگر آپ تجربہ کر رہے ہیں تو متبادل بنائیں۔
مثال کے طور پر، پلیس ہولڈرز کو سرور کی طرف سے پیش کردہ صفحہ پر اب بھی احساس ہونا چاہیے چاہے وہ ڈیفالٹ کے ذریعے پیچ نہ کیے گئے ہوں۔ متبادل طور پر، آپ کی ایپ کو براؤزر سپورٹ بہتر ہونے تک ایک چھوٹا JavaScript فال بیک استعمال کرنا چاہیے۔
نتیجہ
HTML سلسلہ بندی پرانی ہے۔ آؤٹ آف آرڈر HTML پیچنگ ایک نیا آئیڈیا ہے۔ روایتی سٹریمنگ کے ساتھ، براؤزر آتے ہی ٹکڑوں کو پیش کرتا ہے، لیکن دستاویز اب بھی جواب کی ترتیب کی پیروی کرتی ہے۔
اعلانیہ جزوی اپ ڈیٹس بعد میں HTML کو پرانے پلیس ہولڈرز میں رکھنے کا ایک ترجیحی طریقہ تجویز کرتے ہیں۔
کلیدی جملہ چھوٹا ہے۔
Late content
کسی خطے کو لوڈ کرتے وقت، نحو ایک رینج کا استعمال کرتا ہے۔
Loading...
Real content
یہ HTML کے لیے براؤزر کا مقامی پیچنگ ماڈل فراہم کرتا ہے۔ مزید برآں، کچھ سرور کے ذریعے فراہم کردہ اسٹریمنگ انٹرفیس کم حسب ضرورت جاوا اسکرپٹ کے لیے دروازہ کھولتے ہیں۔ تاہم، یہ اب بھی تجرباتی ہے۔ اعلانیہ جزوی اپ ڈیٹس کے بارے میں سوچنے کا بہترین طریقہ یہ ہے کہ ایچ ٹی ایم ایل فریم ورک کا متبادل نہیں ہے۔
ایک بہتر طریقہ یہ ہو گا: ایچ ٹی ایم ایل نچلی سطح کی قدیم چیزوں کو حاصل کر رہا ہے جس کی فریم ورک اور سرور کے ذریعے فراہم کردہ ایپس کو برسوں سے ضرورت تھی۔
اگر تجویز آگے بڑھتی ہے تو، ویب ڈویلپرز کے پاس تیز رفتار، بتدریج پیش کیے جانے والے صفحات بنانے کا ایک صاف طریقہ ہوگا، ہر حصہ تیار ہوتے ہی سرورز کے مواد کو اسٹریم کرنے کے ساتھ۔
حتمی الفاظ
اگر آپ کو یہاں کی معلومات قیمتی لگتی ہیں، تو براہ کرم بلا جھجھک اسے دوسروں کے ساتھ شیئر کریں جو اس سے فائدہ اٹھا سکتے ہیں۔
ہم آپ کے تبصروں کی تہہ دل سے تعریف کرتے ہیں۔ X @sumit_analyzen یا Facebook @sumit.analyzen پر میرا ذکر کریں، میرے کوڈنگ ٹیوٹوریل دیکھیں، یا LinkedIn پر مجھ سے رابطہ کریں۔
میرے بارے میں مزید معلومات کے لیے، براہ کرم میری آفیشل ویب سائٹ www.sumitsaha.me دیکھیں۔