Angular.js: كيف يمكنني إزالة التعليقات التي تم إنشاؤها بواسطة ng-if و ng-تكرار؟

تم إنشاؤها على ٢٢ أغسطس ٢٠١٤  ·  40تعليقات  ·  مصدر: angular/angular.js

هل توجد طريقة لمنع Angular من إنشاء تعليقات HTML "مساعدة"؟ فمثلا،

<div ng-include="myTemplate"></div>
سوف يتحول إلى شيء مثل

<!-- ngInclude: 'hurr-durr.html' -->
<div ng-include="myTemplate"></div>

كيف يمكنني التوقف عن هذا؟

$compile won't fix inconvenient

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

ستظهر التعليقات بعض منطق المنتج الذي لا أريده لأشخاص آخرين
نرى.

2014-08-26 7:05 GMT + 08: 00 Brian Ford [email protected] :

@ cc17 https://github.com/cc17 لماذا تريد التخلص منها
عناصر؟ من المحتمل أن تكون هناك طريقة أفضل لتحقيق هدفك.

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

ال 40 كومينتر

لا يمكنني إخبارك بكيفية عملها داخليًا ، لكن الزاوية تحتاج إلى هذه التعليقات لتتبع التوجيهات التي قد تحتوي أو لا تحتوي على عقد DOM فعلية كإخراج. على سبيل المثال ، عندما تكون ngIf خاطئة ، لا توجد عقدة DOM ، لكن المترجم الزاوي يحتاج إلى التعليق لمعرفة الموضع الذي يوجد فيه التوجيه في الشجرة. أنا متأكد من أن شخصًا آخر ، على سبيل المثال caitp يمكنه شرح ذلك بشكل أفضل.

@ cc17 لماذا تريد التخلص من هذه العناصر؟ من المحتمل أن تكون هناك طريقة أفضل لتحقيق هدفك.

ستظهر التعليقات بعض منطق المنتج الذي لا أريده لأشخاص آخرين
نرى.

2014-08-26 7:05 GMT + 08: 00 Brian Ford [email protected] :

@ cc17 https://github.com/cc17 لماذا تريد التخلص منها
عناصر؟ من المحتمل أن تكون هناك طريقة أفضل لتحقيق هدفك.

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

اتفقت مع @ cc17. حتى أنني أريد أن أحقق نفس الشيء.

@ cc17 أود أن أفهم هذا. يحتاج Angular إلى أن تكون عُقد التعليق هذه موجودة لأسباب خارج هذا الموضوع.
الآن ، قلت

ستعرض التعليقات بعض منطق المنتج الذي لا أريد أن يراه الآخرون

هل انت تقول هذا

  • هل ترغب في عدم إظهار عقد التعليق أي معلومات؟ أي إذا كانت هذه عُقد تعليق فارغة ، فسيكون ذلك على ما يرام
  • يجب ألا تكون عُقد التعليق موجودة على الإطلاق

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

تضمين التغريدة

هل ترغب في عدم إظهار عقد التعليق أي معلومات؟ أي إذا كانت هذه عُقد تعليق فارغة ، فسيكون ذلك على ما يرام

أستطيع أن أقول أن هذا سيكون خيارًا.

lgalfaso نعم الخيار الأول بخير. فضح جسم التعليق الأساسي الذي لن يخالف سلوك التوجيهات الحالية.

لقد جئت إلى هنا باحثًا عن نفس الإجابات لنفس المشكلة ، ولكن لأسباب مختلفة (لقد كان أمرًا مزعجًا حقًا تصحيح عناصر DOM مع وجود مليون تعليق في الطريق).

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

@ cc17
"ستُظهر التعليقات بعض منطق المنتج الذي لا أريد أن يراه الآخرون."
؟ لمشاهدة التعليقات يجب عليك فتح أدوات تطوير المتصفح.
هناك ، يتم عرض كل منطق المنتج الخاص بك (الجزء الأمامي)! html (الأصلي والحالي) ، جافا سكريبت ، طلبات الشبكة ...

seavor
"لقد كان أمرًا مزعجًا حقًا تصحيح أخطاء عناصر DOM مع وجود مليون تعليق في الطريق"
أتساءل عن الصفحة ذات الزاوية (بوقت استجابة مقبول ؛-)) يمكنك إنشاء "مليون تعليق"

+1

أود أن أرى خيارًا لإزالة التعليقات من HTML الحي أيضًا. بالنسبة لعيني ، إنه قبيح ومشتت. على عكس محرر النصوص الخاص بي ، فإن وحدة تحكم المطورين هي 1/3 من ارتفاع الصفحة ، وبالتالي فإن هذه التعليقات الإضافية خطأ حقًا.

هل هناك مزيد من التفاصيل حول سبب حاجتها إلى Angular بالضبط؟

القبيح والمشتت ليس سببًا قويًا للغاية. 😉
يتم استخدام التعليقات بواسطة الزاوي كعلامات للمحتوى الذي سيكون
تم إدخاله هناك. على سبيل المثال ، العناصر التي لم يتم عرضها تحتاج إلى ذلك.
لذلك لا أعتقد أن هناك فرصة واقعية لذلك
إزالة. يجب أن يكون للزاوية 2 نظريًا نفس المشكلة ولكن ربما تكون كذلك
مختلف هناك.
Am 10.02.2016 19:16 schrieb "Alistair G MacDonald" < [email protected]

:

+1

أود أن أرى خيارًا للتعليقات التي تمت إزالتها من HTML المباشر أيضًا.
بالنسبة لعيني ، إنه قبيح ومشتت.

هل هناك مزيد من التفاصيل حول سبب حاجتها إلى Angular بالضبط؟

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

نعم ، لدى ng2 تعليقات على التوجيهات الهيكلية أيضًا. (أعتقد أنهم كانوا يستخدمون عناصر <script> ، لكن انتقلوا إلى التعليقات في مرحلة ما ، لأن العناصر كانت تكسر محددات CSS iirc.)

نعم ، فهمت Narretz ، قد لا يكون القبح محفزًا بشكل كبير ، لكن من غير الواضح ما هي المقايضة الفعلية. هل يعمل بشكل أفضل باستخدام عقد DOM الموجودة؟ لا أستطيع أن أتخيل أن هذا سيحدث فرقًا كبيرًا (ربما أكون بعيدًا عن ذلك). أم أنه من الأسهل فقط التكرار من خلال عقد DOM بدلاً من إنشاء مصفوفة JavaScript؟

@ F1LT3R ، توجد عُقد التعليق كعلامات. إنها ضرورية للحالة التي لا يتم فيها عرض المحتويات (على سبيل المثال تعبير ngIf تقييمه إلى خطأ ، قيمة ngSwitchWhen غير مطابقة للتعبير الحالي ngSwitch إلخ). في هذه الحالة ، نحتاج إلى عنصر نائب في DOM لمعرفة مكان إدراج العناصر الفعلية لاحقًا (على سبيل المثال ، عند تقييم التعبير ngIf إلى true ، إلخ).

آمل أن يكون هناك خيار لذلك.

ترك تعليق مثل هذا أعتقد أنها ليست فكرة جيدة
<!-- ngIf: transaction.status==9 && transaction.status!==8 -->

codetrash ، إذا كانت لديك فكرة أفضل

codetrash لماذا ليست فكرة جيدة؟

Narretz لتطبيق حساس للغاية مثل الخدمات المصرفية وخدمة الدفع وما إلى ذلك ...

!-- ngIf: transaction.status==9 && transaction.status!==8 -->

يمكن أن يؤدي إلى موقف محفوف بالمخاطر.

gkalpak ربما تترك علامة مشفرة إلخ. هل لديك أي منها؟

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

شكرا gkalpak ، أمر منطقي. يمكنني أن أفهم لماذا قد تكون محاولة تتبع تغييرات DOM في JS غير عملية تمامًا للأداء وقابلية الصيانة. أفترض أنه إذا كان بإمكاننا قول "يتحكم Angular في كل الأشياء في DOM" ، فقد يكون ذلك ممكنًا إلى حد ما ، لكن Angular يميل إلى الاندماج مع جميع أنواع مكتبات الجهات الخارجية ، لذا ... إيه. أهون الشرين".

تضمين التغريدة
<يمكن أن يؤدي إلى موقف محفوف بالمخاطر >>
؟؟ هذا الرمز ليس أكثر مما يمكنك قراءته في html المرسل بنص واضح في المرحلة الأولى على أي حال ، لذلك ...

+1.

smurugavel يرجى عدم إجراء 1+ لهذه المشكلة. لا يوجد حتى الآن أي حجة مقنعة ضد هذه التعليقات ، لذا لن يؤدي إجراء 1+ ببساطة إلى جعلنا ننفذ ذلك.

Narretz ، مثل @ cc17 قال ، كان منطق العمل هو
من خلال استعراض الاقتراحات في هذا الموضوع ، كان الخيار الأول لـ lgalfaso مناسبًا لي.
بدلاً من ذلك ، هل يستطيع الفريق الزاوي تشفير هذه التعليقات التي لا يستطيع الإنسان قراءتها أو إضافة معرف فريد يمكن للزاوية تتبعه داخليًا؟ فقط افكاري ..

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

آمل أن يكون هناك خيار للإزالة والحصول على هذا مرة أخرى عند التصفية.

ترك تعليق مثل هذا أعتقد أنها ليست فكرة جيدة

ماذا لو اضطررت إلى تطبيق عامل التصفية واستخدام ul li مرة أخرى في هذا الوقت ، تظهر قيمة li المعلق عليها مرة أخرى.

ManishLSN ، لست متأكدًا مما li . مجرد تعليق HTML عادي.
ومع ذلك ، أعتقد أنه سيكون من المنطقي أن يكون لديك تعليقات فارغة عندما يتم تعطيل debug info (محتويات التعليقات لا تخدم أي غرض آخر غير "التصحيح").

WDYTNarretz ، lgalfaso ؟

مرة أخرى (بالنسبة للأشخاص الذين أثاروا هذا القلق) ، لن يكون لذلك أي تأثير على الأمن.

نحتاج إلى عقد التعليقات لتكون في DOM أو لن تعمل Angular ببساطة.
يمكننا تنفيذ فكرة إزالة نص التعليق إذا تم تعطيل debugInfo. هذا تغيير مباشر إلى حد ما. العلاقات العامة أي شخص؟

شكرا !!!

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

هذه حالة استخدام مثيرة للاهتمام أكونو. يمكنني تحديد سبب ذلك
محبط.

أعتقد أنه من الناحية العملية ، قد ترغب في تصفية بعض العناصر حتى في ملف
سيناريو غير الزاوي. إطارات ، تعليقات ، إلخ.

المزيد من العمل للتنفيذ ، نعم ، لكن خط أنابيب أنظف أكثر قابلية للتحكم
بين شكل وآخر فكرة جيدة.
في 25 آذار (مارس) 2016 ، الساعة 2:55 صباحًا ، كتب "akunno" [email protected] :

آمل أن أفهم هذا بشكل صحيح ، لأنني في قارب مماثل.

يحتوي موقع dom حاليًا على الكثير من التعليقات والصور مثل هذا:

عندما أتصل بـ innerHTML على والد العنصر ، ينتهي بي الأمر بشيء ما
مثله:

ng-src = "data: image / gif؛ base64، ....">

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

لقد حاولت إزالة التعليقات ، لكن ما زلت لا أستطيع إيجاد طريقة
لاستخراج HTML الذي تم تقديمه بدون توجيهات زاوية تلوثه.
من الناحية المثالية ، عندما أتصل بـ innerHTML ، كنت أرغب في رؤيته إذا كان
إذا كانت صحيحة أو لا شيء ، إذا تم إرجاع خطأ.

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

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

حالة استخدام أخرى: تخطي الأسطر الجديدة على الأقل عن طريق التكوين لـ css: فارغ زائف لبدء العمل https://css-tricks.com/almanac/selectors/e/empty/

mashpie صادف نفس حالة الاستخدام الآن ،

لا يضيف Angular أسطرًا جديدة حول تعليقات العلامة. راجع http://plnkr.co/edit/z1rJZd7yU0TYZmDAynTh؟p=preview

يمكنك القيام بذلك عن طريق استخدام.

app.config (['$ compileProvider'، function ($ compileProvider) {
// تعطيل معلومات التصحيح
$ compileProvider.debugInfoEnabled (خطأ) ؛
}]) ؛

RHanmant لا يؤدي هذا إلى إزالة التعليقات تمامًا ، بل يزيل فقط أسماء المتغيرات / الخصائص من التعليقات. التعليقات ضرورية.

لقد توصلت إلى تقرير المشكلة هذا عند محاولة استخدام قاعدة css مثل #mydiv > div:last-child و div الذي يجب أن يكون الطفل الأخير لم يكن بسبب التعليق angularjs بعد ذلك.

تتجاهل محددات CSS التعليقات ، لذا لا يمكن أن يحدث ما وصفته.

آمل أن يكون هناك خيار لذلك.

ترك تعليق مثل هذا أعتقد أنها ليست فكرة جيدة
<!-- ngIf: transaction.status==9 && transaction.status!==8 -->

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

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