Vue: باستخدام "whitespace: condense" ، يتم تحويل جميع & nbsps ؛ وحتى ذات المعنى إلى مسافات

تم إنشاؤها على ٢٩ يناير ٢٠٢٠  ·  5تعليقات  ·  مصدر: vuejs/vue

الإصدار

2.6.11

رابط الاستنساخ

https://gist.github.com/aimozg/c073eea5a55062e3dcd8f887a8567807

خطوات التكاثر

قم بتشغيل example.js في Node.

خطوات بديلة / شرح مفصل:

  1. قم بإعداد برنامج التحويل البرمجي لقالب Vue باستخدام whitespace: 'condense' . (هو الإعداد الافتراضي لـ vue-cli).
  2. عرض النموذج بكيان &nbsp; ، على سبيل المثال ، <p>a&nbsp;b</p>
  3. افحص القالب بحثًا عن حرف مسافة غير منقسمة

ما هو متوقع؟

&nbsp; تقديم الكيان

---- whitespace: condense
// code
NBSP FOUND

ما الذي يحدث بالفعل؟

يتم عرض الكيان &nbsp; كمساحة عادية ، يحتوي إخراج example.js

---- whitespace: condense
// code
NBSP NOT FOUND

يتم تجريد المسافة البيضاء بواسطة كود المترجم هذا:

if (!inPre && whitespaceOption === 'condense') {
  // condense consecutive whitespaces into single space
  text = text.replace(whitespaceRE, ' ')
}

و "&nbsp;" s تم استبدالها بـ "\xA0" s مع وحدة فك ترميز الكيان في وقت سابق.

القضايا ذات الصلة هي https://github.com/vuejs/vue/issues/10485

اقتراح :

مسافة أضيق بيضاء RE regexp ، مثل /[ \t\r\n]+/g .

bug compiler has PR

التعليق الأكثر فائدة

ألا يجب أن نلمس المساحات غير القابلة للكسر بشكل عام؟ هذا ما أتوقعه شخصيًا إذا استخدمت واحدًا في القالب الخاص بي. سيؤدي أيضًا إلى حل المشكلة التي ذكرتها

ال 5 كومينتر

ألا يجب أن نلمس المساحات غير القابلة للكسر بشكل عام؟ هذا ما أتوقعه شخصيًا إذا استخدمت واحدًا في القالب الخاص بي. سيؤدي أيضًا إلى حل المشكلة التي ذكرتها

إعداد مترجم قالب Vue بمسافة بيضاء: "تكثيف". (هو الإعداد الافتراضي لـ vue-cli) .

انتظر ، أنا محتار. هل condense الخيار الافتراضي حقًا؟ أرى العديد من الأشياء التي تدعي أن preserve هي القيمة الافتراضية بالفعل.

لقد كنت أكافح لمعرفة سبب عدم عمل أي من المساحات غير القابلة للكسر. كنت سأحاول فرض الحفظ ، لكن بعد ذلك رأيت:

يقول إيفان أن القيمة الافتراضية هي preserve https://github.com/vuejs/vue/issues/9208#issuecomment -450012518

ومستندات خيار المترجم التي تردد هذا البيان https://github.com/vuejs/vue/tree/dev/packages/vue-template-compiler#options

الآن بعد رؤية aimozg يقول أن condense هو افتراضي بالفعل ، تقدمت وقمت يدويًا بتعيين preserve وبالتأكيد كفى! كل شيء عاد إلى طبيعته!

هل المستندات / التنفيذ خاطئ؟

في كلتا الحالتين ، لماذا التكثيف يقضي على نبسب؟ سلوك غير متوقع للغاية. أوافق على عدم لمسهم.

يتم الاحتفاظ بالمسافات البيضاء في Vue core لضمان التوافق مع الإصدارات السابقة بينما في الإصدارات الأخيرة من Vue CLI نقوم بتكوين ذلك إلى condense افتراضيًا.

نفس الشيء مع علامة التبويب الهروب &#9;

يجعل من الصعب للغاية عرض الكود

في انتظار دمج هذا ..
الحل الحالي
استعمال

{{'\xa0'}}

بدلا من

&nbsp;
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات