كيفية التنقل في كود المصدر الأساسي لـ Grails لفهم إطار العمل بشكل أفضل؟

StackOverflow https://stackoverflow.com//questions/21048435

سؤال

عادةً في مشروع Spring Source Tool Suite IDE أو Eclipse Maven، إذا كنت أرغب في رؤية ما تفعله طريقة إطار العمل/المكتبة خلف الكواليس، فيمكنني الضغط على ctrl + النقر على اسم الطريقة وسيأخذني إلى الكود المصدري.أدرك أن الكثير من أساليب Grails تتم إضافتها ديناميكيًا في وقت التشغيل، لذلك ليس من الممكن دائمًا أن يعرف IDE كيفية الوصول إليها.وإلا يمكنني البحث عن الفصل حسب الحزمة على وثائق Google أو Github أو API.ما هي أفضل طريقة للقيام بذلك باستخدام مصدر Grails الأساسي لفهم إطار العمل بشكل أفضل؟

على سبيل المثال، أريد أن أرى كيف تبدو طريقة الاستجابة في وحدة التحكم وكيف تعيد معلمة تسمى "clubInstanceList" إلى النادي/الفهرس gsp الخاص بي عندما تبدو طريقة الفهرس كما يلي:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond clubService.list(params), model:[clubInstanceCount: clubService.count()]
}

لا يعمل ctrl + click في IDE حيث تتم إضافة هذه الطريقة في وقت التشغيل.لقد بحثت في مصدر Grails الأساسي على github، لكن لا أعرف بنية الحزمة لطريقة الاستجابة هذه على وحدة التحكم.

هل كانت مفيدة؟

المحلول

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

طرق التشغيل الديناميكية

عندما أحتاج إلى العثور على بعض الوظائف غير الواضحة، أبدأ بمحاولة العثور على المكون الإضافي الداخلي المسؤول عن ذلك.في STS أفعل ctrl shift T والبحث عن *GrailsPlugin*.يمكنك التحقق من تغييرات وقت التشغيل في ملف doWithDynamicMethods إغلاق البرنامج المساعد.

على سبيل المثال، لدى Grails ControllersGrailsPlugin فئة تضيف ميزات ربط البيانات لفئات وحدة التحكم الخاصة بك.

البحث عن طرق

حيث أنني لم أجد أي شيء يتعلق بالموضوع respond الطريقة في واصف البرنامج المساعد هذا، ربما يتم ذلك عن طريق التجميع.يمكنك استخدام ctrl H, وقم بإجراء بحث Java ووضع العلامات method في مربع "البحث عن".في ال scope علامة workspace وسوف تبحث STS عن فئات Grails أيضًا.

الاجابة

إذن الجواب على سؤالك هو ControllersRestApi فئة، ولقد وجدت ذلك باستخدام نهج "طريقة البحث".

نصائح أخرى

كان لدي نفس السؤال ووجدت إجابة سيرجيو مفيدة للغاية، ولكن إليك طريقة أخرى:قم بتحميل مصحح الأخطاء وانتقل إلى استخدام F5.الآن، يمكن أن يكون هذا مرهقًا ما لم تقم بتمكين مرشحات الخطوة (راجع تعليمات GGTS/STS/Eclipse).على وجه الخصوص، أوصي بالتصفية org.springsource.loaded.*, بالإضافة إلى الباقات المحددة مسبقاً.يؤدي ذلك إلى التخلص من الكثير من الأجزاء الانعكاسية والديناميكية التي - على الأقل في مثل هذه الحالات - التي لا تهتم بها.

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

https://jira.grails.org/browse/GRAILS-10721

لذلك نحن لسنا الوحيدين الذين يخدشون رؤوسنا في هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top