facebook - ما هو shebang / hashbang (#!) في الفيسبوك وعناوين جديدة لتويتر؟




3 Answers

علامة octothorpe / number-sign / hashmark لها أهمية خاصة في عنوان URL ، وعادةً ما تقوم بتعريف اسم قسم من الوثيقة. المصطلح الدقيق هو أن النص الذي يتبع التجزئة هو جزء الارتساء في عنوان URL. إذا كنت تستخدم Wikipedia ، سترى أن معظم الصفحات تحتوي على جدول محتويات ويمكنك الانتقال إلى أقسام داخل المستند مع نقطة ارتساء ، مثل:

https://en.wikipedia.org/wiki/Alan_Turing#Early_computers_and_the_Turing_test

https://en.wikipedia.org/wiki/Alan_Turing يعرّف الصفحة و Early_computers_and_the_Turing_test هي المرساة. السبب وراء استخدام Facebook والتطبيقات الأخرى التي تعتمد على Javascript (مثل My Wood & Stones ) الخاصة بالمراسي هو أنهم يريدون جعل الصفحات قابلة للحفظ (كما هو مقترح من خلال تعليق على هذه الإجابة) أو دعم زر الرجوع دون إعادة تحميل الصفحة بالكامل من الخادم .

لدعم وضع إشارة مرجعية وزر للخلف ، يجب عليك تغيير عنوان URL. ومع ذلك ، إذا قمت بتغيير جزء الصفحة (مع شيء مثل window.location = 'http://raganwald.com'; ) إلى عنوان URL مختلف أو بدون تحديد نقطة ارتساء ، فسيقوم المتصفح بتحميل الصفحة بأكملها من عنوان URL. جرب ذلك في Firebug أو Safari's Javascript console. قم بتحميل http://minimal-github.gilesb.com/raganwald . الآن في لوحة تحكم جافا سكريبت ، اكتب:

window.location = 'http://minimal-github.gilesb.com/raganwald';

سترى تحديث الصفحة من الخادم. الآن اكتب:

window.location = 'http://minimal-github.gilesb.com/raganwald#try_this';

آها! لا تحديث الصفحة! اكتب:

window.location = 'http://minimal-github.gilesb.com/raganwald#and_this';

لا يوجد حتى الآن تحديث. استخدم زر الرجوع لمعرفة أن عناوين URL هذه موجودة في سجل المتصفح. يلاحظ المتصفح أننا على نفس الصفحة ولكننا فقط نغير الرابط ، لذا لا يتم إعادة تحميله. وبفضل هذا السلوك ، يمكن أن يكون لدينا تطبيق واحد لجافا سكريبت يظهر على المتصفح ليكون على "صفحة" واحدة ، ولكن لدينا العديد من الأقسام التي تحمل إشارة مرجعية والتي تحترم الزر الخلفي. يجب أن يقوم التطبيق بتغيير نقطة الارتساء عندما يقوم المستخدم بإدخال "حالات" مختلفة ، وبالمثل إذا كان المستخدم يستخدم زر الرجوع أو إشارة مرجعية أو رابط لتحميل التطبيق مع مرساة مضمنة ، يجب أن يقوم التطبيق باستعادة الحالة المناسبة.

لذا ، يوجد لديك: توفر شركة Anchors مبرمجي جافا سكريبت بآلية لجعل التطبيقات القابلة للكتابة والقابلية للفهرسة والتوافق مع الأزرار الخلفية. هذه التقنية لها اسم: إنها واجهة صفحة واحدة .

ملاحظة: هناك فائدة رابعة لهذا الأسلوب: تحميل محتوى الصفحة عبر AJAX ثم إدخاله في DOM الحالي يمكن أن يكون أسرع بكثير من تحميل صفحة جديدة. بالإضافة إلى زيادة السرعة ، يمكن إجراء مزيد من الحيل مثل تحميل أجزاء معينة في الخلفية تحت سيطرة المبرمج.

وبالنظر إلى كل ذلك ، فإن علامة "الاختراق" أو علامة التعجب هي تلميح آخر لزاحف الويب من Google أنه يمكن تحميل الصفحة نفسها تمامًا من الخادم على عنوان URL مختلف قليلاً. انظر اياكس الزحف . أسلوب آخر هو جعل كل رابط يشير إلى عنوان URL يمكن الوصول إليه بواسطة الخادم ، ثم استخدم جافا سكريبت غير مزعجة لتغييره إلى SPI مع نقطة ارتساء.

إليك رابط المفتاح مرة أخرى: بيان واجهة الصفحة المفردة

facebook url twitter fragment-identifier hashbang

لقد لاحظت للتو أن عناوين URL طويلة وملتوية في Facebook التي اعتدنا عليها تبدو الآن كما يلي:

http://www.facebook.com/example.profile#!/pages/Another-Page/123456789012345

بقدر ما أستطيع أن أتذكر ، في وقت سابق من هذا العام كان مجرد سلسلة شبيهة URL-fragment (تبدأ ب # ) ، دون علامة التعجب. ولكن الآن هو shebang أو hashbang ( #! ) ، التي سبق لي فقط رأيته في مخطوطات قذيفة وسيناريو بيرل.

كما تتميز عناوين URL الجديدة الخاصة بـ Twitter الآن بـ #! حرف. على سبيل المثال ، يبدو عنوان URL لملف Twitter على هذا النحو:

http://twitter.com/#!/BoltClock

لا #! تلعب الآن دورًا خاصًا في عناوين URL ، مثل إطار Ajax محدد أو شيء ما ، نظرًا لأن واجهات Facebook و Twitter الجديدة أصبحت الآن مجهولة إلى حد كبير؟ هل يفيد استخدام هذا في عناوين URL الخاصة بي في تطبيق الويب الخاص بي بأي طريقة؟




سأكون حذرا جدا إذا كنت تفكر في اعتماد هذا الميثاق hashbang.

بمجرد hashbang ، لا يمكنك العودة. ربما هذه هي القضية اللاذعة. وقد طرحت خدمة "بن" النقطة التي مفادها أنه عندما يتم اعتماد pushState على نطاق أوسع ، يمكننا ترك hashbangs خلفنا والعودة إلى عناوين URL التقليدية. حسنا ، الحقيقة هي ، لا يمكنك ذلك. ذكرت في وقت سابق أن عناوين URL هي إلى الأبد ، يتم فهرستها وأرشفتها ويتم الاحتفاظ بها عمومًا. للإضافة إلى ذلك ، لا تتغير عناوين URL الرائعة. لا نريد فصل أنفسنا عن جميع الروابط القيمة لمحتواينا. إذا كنت قد نفذت عناوين URL hashbang في أي نقطة ثم تريد تغييرها دون قطع الروابط ، فالطريقة الوحيدة التي يمكنك القيام بها هي عن طريق تشغيل بعض JavaScript على مستند الجذر الخاص بنطاقك. إلى الأبد. انها في أي حال من الأحوال مؤقتة ، كنت عالقة معها.

كنت حقا تريد استخدام pushState بدلا من hashbangs ، لأن جعل عناوين المواقع الخاصة بك قبيحة وربما كسر - إلى الأبد - هو الهبوط الهائل ودائم ل hashbangs.




افترضت دائما ! أشار للتو إلى أن جزء التجزئة الذي يتبعه يتوافق مع عنوان URL ، مع ! أخذ مكان جذر الموقع أو المجال. يمكن أن يكون أي شيء ، من الناحية النظرية ، ولكن يبدو أن واجهة برمجة تطبيقات الزحف من Google AJAX تحبه بهذه الطريقة.

تجزئة ، بالطبع ، تشير فقط إلى أنه لا توجد إعادة تحميل الصفحة الحقيقية ، لذلك نعم ، هو لأغراض AJAX. تحرير: Raganwald يقوم بعمل جميل يشرح ذلك بمزيد من التفصيل.




Related