Less.js: خصائص مكررة عندimporting عدة مرات (متداخلةimport)

تم إنشاؤها على ٢٥ يونيو ٢٠١٠  ·  49تعليقات  ·  مصدر: less/less.js

Masterimports A & B ،
ب imports أ

عند استخدام mixin من A في الملف الرئيسي ، يتم تكرار الخصائص

انظر اختبار الوحدة لمزيد من المعلومات

التكوين: lessc cli الإصدار 1.0.21 على أوبونتو 10.04

ال 49 كومينتر

أعتقد أن المشكلة هي أن الملف يتم استيراده مرتين ، وهذا هو السلوك الصحيح لخلطات.

هل تعتقد أنه يجب استيراد الملف مرتين؟ إذا لم يكن الأمر كذلك ، فيجب أن تأخذ في الاعتبار عناوين url النسبية. على سبيل المثال

// in main.less
<strong i="6">@import</strong>: imports/import1.less;
<strong i="7">@import</strong>: imports/import2.less;

// in imports/import1.less
<strong i="8">@import</strong>: import2.less; // don't import this
<strong i="9">@import</strong>: imports/import2.less; // do import this

هممم ، أتساءل عما إذا كانت هناك طريقة أسهل للتحقق مما إذا كان الملف يساوي ملفًا آخر. ربما شيء ما في الرؤوس.

حجم الملف هو مؤشر رخيص ومن المرجح أن يكون فريدًا في أي مجموعة معينة من ملفات المصدر. ومع ذلك ، فمن الممكن أن يكون لديك ملفان بنفس الحجم.

وبالمثل مع تاريخ التعديل.

إذا قام الخادم بتعيين رأس ETag ، فيمكنك / يجب عليك استخدام ذلك.

نحن نستخدم تجزئة MD5 لمحتويات الملف كمفتاح عند التخزين المؤقت لكنني شخصياً أعتقد أن هذا مبالغة.

حسنًا ، المشكلة هي أن جافا سكريبت لا تحتوي على MD5 أصلي ، أو سأستخدم ذلك ..
قد يكون ETag مثاليًا ، لكن بعض الخوادم لا تقوم بتعيينه. سآخذ للتفكير في هذا.

يبدو أننا نتفق على عدم استيراد الملفات مرتين. ومع ذلك ، هل هذا صحيح دائما؟ (على سبيل المثال ، بمساعدة النطاق ، قد يكون الاستيراد في مزيج على ما يرام - يمكنك الرد على Cloudhead بشكل أفضل مني في هذا).

لقد قامت العديد من اللغات بالفعل بحل هذه المشكلة بطرق مختلفة:

  • C -> #ifndef / #define / #endif
  • PHP -> include_once()

قد يكون تنفيذ "طريقة C" أصعب قليلاً ولكن الشروط قد توفر إمكانيات كبيرة أخرى.

إذا تم اختيار "طريقة PHP" فإننا نحتاج إلى اختيار طريقة للتمييز بين الملفات. يبدو أن عنوان URL المطلق اختيارًا جيدًا (لدينا إما مباشرة أو عبر document.location + URL النسبي) - أعتقد أنه أفضل من الحجم / الطول / MD5 لأنه لا يستهلك طلب HTTP.
ومع ذلك ، قد لا يكون ذلك كافيًا: يتم تعيين كل عنوان URL إلى ملف واحد ولكن قد يتم تعيين كل ملف إلى عدة عناوين URL. في مثل هذه الحالة ، قد يساعد إدخال كلمة رئيسية جديدة @<strong i="16">@name</strong>: <unique name> .

سيكون الخيارimport_once حينئذٍ: إذا لم يتم استيراد عنوان URL المطلق بالفعل ، فاحصل على الملفات والتحقق مما إذا كان

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

التحقق من تغييرات الملف هو مسألة أخرى.

أعتقد أنه يجب علينا الاحتفاظ بـ import import عدة مرات لأن هذه هي الطريقة التي يعمل بها import الأصلي ،

أحب حل php الذي import_once ، أحب شيئًا أفضل في "التعليق" لذلك لا يزال متوافقًا مع بناء جملة css الأصلي.

هل يمكننا إضافة شيء مثل هذا أعلى الملف .less:
/ _! يتطلب: url (./abc.less)_/

أنا أواجه هذه المشكلة أيضًا. يحتوي مشروعي على تسلسل هرمي لملفات LESS التي يتم تجميعها في ملف .css واحد. يوجد ملف فائدة واحد LESS مضمن في عدة ملفات ، وفي النتيجة النهائية ، يتم تكرار جميع عمليات المزج بنفس عدد المرات التي تم فيها استيراد ملف الأداة المساعدة هذا.

import_once ، أو ربما import : مرة واحدة url ('url') ؛ من شأنه أن يحل هذه المشكلة.

نحن نواجه نفس المشكلة مثل NielsJanssen في مشروعنا ، أي فكرة بحلول متى سيتم إصلاح هذه المشكلة ؟؟

أيضا الوقوع في هذه القضية. أي شخص يجد حلا؟

وجود نفس المشكلة هنا. تعذر العثور على حل بسيط ، انتهى الأمر بإعادة ترتيب الواردات حتى لا يتم استيرادها مرتين.

أقترح حقًا التحقق من Stylus إذا كنت تستخدم node.js. لقد استخدمت LESS لفترة من الوقت ، شعرت بالإحباط بسبب افتقارها الكامل للتطوير ، وتحولت إلى SASS ثم أخيرًا إلى Stylus. إنه يمسك الميزات حقًا ، وبناء الجملة اختياري (وأنا أستخدم الوسط) ، وهو قوي جدًا ، و TJ هو مطور سريع الاستجابة له حقًا.

إذا كنت لا تستخدم node.js ، فلا يزال بإمكانك استخدام Stylus مع الياقوت والتجميع على جهازك. وإذا كنت لا تحب Stylus لأي سبب من الأسباب ، فإن SASS / SCSS هو أيضًا بديل جيد ويمكن القيام به بنفس الطريقة.

قصة قصيرة طويلة: LESS ليس جيدًا على المدى الطويل.

رجل موقف سيء للغاية.

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

بالطبع لا.

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

لا يتعلق الأمر بالمعايير التي يمكنني الحصول عليها أو لا يمكنني الحصول عليها. يتعلق الأمر بتوجيه تحذير للأشخاص ، عندما تكون هناك بدائل أفضل.

لذلك أقف إلى جانب "BS" وأتمنى أن يجد الناس التحذير مفيدًا.

ianstormtaylor : القول بأن المشروع "ليس جيدًا على المدى الطويل" هو حالة هستيرية بعض الشيء.

تواجه نفس المشكلة أيضًا.

foo.less

<strong i="7">@import</strong> "bar.less";
<strong i="8">@import</strong> "baz.less";

شريط

<strong i="12">@import</strong> "mixins.less";
.bar {
  .mixer
}

باز بلا

<strong i="16">@import</strong> "mixins.less";
.baz {
  .mixer
}

الخلطات

.mixer {
  color: 000;
  border: 2px solid #fff;
}
$ lessc foo.less
.mixer {
  color: 000;
  border: 2px solid #fff;
}
.bar {
  color: 000;
  border: 2px solid #fff;
  color: 000;
  border: 2px solid #fff;
}
.mixer {
  color: 000;
  border: 2px solid #fff;
}
.baz {
  color: 000;
  border: 2px solid #fff;
  color: 000;
  border: 2px solid #fff;
}

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

لدي انطباع بأن cloudhead يتجاهل في الغالب أي تعليقات أدلي بها (ربما أكون مخطئًا بشأن هذا) ولكن سيكون من الأفضل سماع "أنا مشغول" أو "لا أريد إصلاح ذلك" أو حتى شيء أكثر قسوة بدلاً من عدم تلقي أي رد على الإطلاق.

لديك _could_ فقط ملف main.less يحتوي على جميع وارداتك. انظر إلى Twitter bootstrap للحصول على مثال (الملف الرئيسي هو bootstrap.less ).

تتم كتابة بعض الملفات الأقل التي أستوردها (من مكتبة خارجية) لتكون قادرًا على تجميعها بشكل مستقل بحيث يتضمن كل منها variables.less وتحدث المشكلة التي أراها لأنني استورد كل منها أقل من الملفات في ملف رئيسي واحد ثم تجميع هذا الملف يطبق كل mixin عدة مرات كما يتم تضمين mixins (مرة واحدة لكل ملف أقوم بتضمينه من المكتبة الخارجية).

أنت على حق - يمكنني أن أفعل شيئًا مثل ما اقترحته وأنا أفعل شيئًا من هذا القبيل في الكود لدي سيطرة كاملة عليه ولكن هذا لا يعني أن الجميع يفعل ذلك على هذا النحو.

أيضًا ، الحل البديل (_ فقط_ إذا لم أكن أستخدم مكتبة تابعة لجهة خارجية) لا يغير من أن هذا خطأ. لقد أصبحت على دراية كاملة بكيفية حل المشكلات مع أقل ولكن من المحبط أن مثل هذه الأخطاء كانت مفتوحة لما يقرب من 18 شهرًا. ( wlangstroth ، أدرك أن هذا ليس خطأك _)

لأي شخص مهتم ، لقد حصلت على إصلاح القوة الغاشمة (لم يتم اختباره مقابل اختبار vicb ولكن يجب أن يعمل) قمت بلصقه في تعليق على # 431. سأحاول إيجاد حل أفضل إذا حصلت على مزيد من الوقت.

تواجه نفس المشكلة

واجهت أيضًا هذه المشكلة ، ولكن تم إصلاحها عن طريق استيراد مكتبات mixin الخاصة بي إلى bootstrap.less الخاص بي. لم أكن أدرك أن الواردات اللاحقة ستتمكن من الوصول إليها ، لكن هذا منطقي.

fyi # 431 هو طلب سحب يعمل على إصلاح هذه المشكلة

cloudhead هل ستتمكن من تطبيق إصلاح لهذا. ربما تكون هذه إحدى أقدم المشكلات التي لا تزال مفتوحة. سيكون من الجيد رؤيتها تم حلها.

نفس المشكلة :- (

كاقتراح لأي شخص لديه مشاكل مع هذه المشكلة ، أوصي بإسقاط رسالة Alexis على Twitter. قال Alexis سابقًا في العديد من التذاكر أنه لا يمكنه مراقبة جميع المشكلات ويصلح حقًا فقط عندما يتم إعلامه بخطورتها. أعتبر أن هذه مشكلة خطيرة ولكن لم أتمكن من لفت انتباه Alexis إليها على Twitter.

ربما شخص آخر قد يكون لديه المزيد من الحظ.

تويتر: https://twitter.com/#!/cloudhead

وقم بإسقاط رابط لهذه المشكلة: https://github.com/cloudhead/less.js/issues/49

Kalyse إذا لم يتمكن cloudhead من مراقبة مشكلات هذا المشروع بشكل كافٍ ،

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

نظام إشعارات github عديم الفائدة تمامًا - أحصل على حوالي 70 إلى 100 إشعار يوميًا ، لذلك أفضل تجاهلها فقط.

سأبحث في هذا ..

حسنًا ، لقد أضفت توجيهًا @import-once - إنه أمر بدائي جدًا ، لأنه يتحقق فقط من تطابق المسارات - ولكن يجب أن يغطي معظم حالات الاستخدام.

cloudhead سعيد لأنك

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

أيها الناس السهل! إذا كان لدى أي شخص مشروع بهذا الشهرة ، فسيكون في نفس القارب. لقد قام cloudhead بعمل رائع وربما يحتاج إلى إضافة عدد قليل من الأشخاص الموثوق بهم كمسؤولين. لكن المشكلات المتعلقة بطلبات السحب والاختبارات مفيدة أكثر بكثير من المشكلات وحدها. ربما أصلح بعض المشكلات أثناء الاسترخاء.

لقد أصلح الأشخاص الكثير من المشكلات ، منذ سنوات أحيانًا. اذهب للتحقق من واحد من 74 طلب سحب معلقة بدون استجابة. على سبيل المثال ، تحتوي هذه المشكلة بالذات على العديد من المغفلين الذين يعودون إلى عامين (مثل # 324 # 71). إليك طلب سحب كان من شأنه أن يحل هذه المشكلة بكل بساطة: https://github.com/cloudhead/less.js/pull/431 طلب المسؤول تقديم التعليقات ، وقوبل بالصمت ، ثم استسلم في النهاية.

cloudhead - أليكسيس ، هذا مشروع رائع جدًا لدرجة أنه لا يمكن إصلاحه. عندما يرى الناس نوع الشيء المذكور أعلاه ، فإنه يترك لهم انطباعًا بأن المشروع غير جدير بالثقة أو غير موثوق به. وهذا غير ضروري! سحر جيثب هو أنه يمكنك بسهولة العثور على بعض الأشخاص الذين يكتبون كودًا رائعًا ويهتمون بالالتزام بالمشروع. اسأل هؤلاء الأشخاص الطيبين عما إذا كانوا سيساعدون في تعديل المشكلات وسحب الطلبات.

كلنا نحب عملك. المجتمع يريد المساعدة. دعنا نساعد!

jeremyricketts نقطة جيدة.

أتفق مع jeremyricketts - في شركة أعمل بها ، انتهى بنا الأمر بعدم الذهاب مع LESS (ذهبنا إلى مسار SASS) بسبب نقص التحديثات / إصلاحات الأخطاء في هذا الريبو.

cloudhead يبدو أن @import-once لا يعمل ، هذه هي حالة الاختبار الخاصة بي.

// a.less
.gain-bfc() {
  overflow: hidden;
  *zoom: 1;
}

// b.less
@import-once "a.less";

// c.less
@import-once "a.less";
@import-once "b.less";

div {
  .gain-bfc();
}

بعد تجميع c.less ، يجب أن تكون النتيجة المتوقعة

div {
  overflow: hidden;
  *zoom: 1;
}

لكنني حصلت على الخصائص المكررة

div {
  overflow: hidden;
  *zoom: 1;
  overflow: hidden;
  *zoom: 1;
}

+1 جيريمريكيتس

هناك حاجة إلى شخص لديه بعض قطع البرمجة الفعلية. عالمي هو PSD وقلم رصاص وورقة و html CSS و light jQuery work.

هناك حاجة إلى شخصين فقط لفرز المشكلات وسحب الطلبات ،
قم بتقليم التكرارات ، وتأكد من وجود حالات اختبار للأخطاء ، وما إلى ذلك. أود ذلك
للتطوع للمساعدة في ذلك على أقل تقدير ، وربما يمكنني المساعدة
أغلق الحشرات الصغيرة أيضًا.
في 23 آذار (مارس) 2012 ، الساعة 1:28 مساءً ، "جيريمي ريكيتس" <
[email protected]>
كتب:

هناك حاجة إلى شخص لديه بعض قطع البرمجة الفعلية. عالمي هو PSD ،
قلم رصاص وورقة و html CSS و light jQuery work.


قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/cloudhead/less.js/issues/49#issuecomment -4667283

cloudhead فقط في حال كنت تكافح من أجل التفكير في حل جيد لهذا ، يجب عليك إلقاء نظرة على دقة neonstalwart منذ فترة.

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

ما رأيك في هذا الحلcloudhead
يبدو أن الطريق إلى الأمام؟

عدم إصلاح هذا يعني:

1) الملفات أكبر مما يجب أن تكون عليه.
2) يصبح نشر CSS الخاص بك عبر ملفات متعددة واستيراد الكثير أمرًا غير مرغوب فيه لأنه في كل مرة تقوم فيها بتضمين ملف إضافي يتضمن أيضًا عمليات المزج ، فأنت تضيف قيم هذا المزيج مرة أخرى. ربما لدي 80 نمطًا أقل من أنماط CSS ، وهذا يعني أنه عندما يكون لدي مزج متدرج. background () ، ينتج عنه 80 * 6 أنماط إضافية لكل محدد. (6 لدعم جميع المتصفحات المختلفة).
3) يؤدي أيضًا إلى إبطاء عرض الصفحة. تنخفض عمليات السحب / التحديث الخاصة بي في الثانية بشكل كبير بسبب الأنماط الإضافية.

أفكار cloudhead ؟
هتافات.

cloudhead إذا قدمنا ​​طلب سحب لهذه المشكلة من الالتزام الأخير ، فهل ستنظر في الدمج؟

Kalyse هل يمكنك مراسلتي عبر البريد الإلكتروني؟ [email protected]

هتافات

ربما ما هو مطلوب هو بعض المطورين الموثوق بهم الذين يمكنهم الموافقة على طلبات السحب؟

cloudhead أستخدم WinLess لتجميع كود LESS الخاص بي ... يأتي WinLess مع أحدث توزيعة أقل. ) إلى أحدث إصدار؟

شكرا (لمنتج رائع).

لذا ، إيه أه ... كيف نفعل على هذا؟

jreading أعتقد أنه تم إصلاحه في git مع الالتزام cb7893

يبدو أنه تم إصلاحه (أو على الأقل المشكلة الأصلية) وإذا لم يكن الأمر كذلك ، فأنا متأكد من وجود خطأ آخر لتغطية هذا.

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