سؤال

أرغب في تقسيم مشاهداتي في Grails إلى ملفين، ملف .gsp وملف .js حتى أحصل على فصل جافا سكريبت أكثر نظافة عن وجهات نظري.لذلك هنا مثال:

views/index.gsp
views/index.js
views/home/index.jsp
views/home/index.js

ولكن عندما أقوم ببساطة بإضافة مرجع البرنامج النصي Index.js مثل هذا:

<script src="index.js" type="text/javascript"></script>

كل ما أحصل عليه هو 404

هل يعرف أحد كيفية التعامل مع هذا؟

ستكون الفائدة الكبيرة هي القدرة على استخدام بيانات العرض داخل ملف Index.js لإنتاج المحتوى المطلوب.

ماتياس.

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

المحلول

في الواقع، ينبغي أن يكون من الممكن تماما لخدمة ملف JS (أو أي نوع ملف آخر) كما GSP من دليل grails-app/views/ الخاص بك. الشيء الوحيد الذي عليك القيام به هو تحديد تعيين URL مناسبة لأولئك سعر البيع الحكومي، منها مثلا:

"/javascript/home/index"(view:'/home/index.js')

مع هذا التعيين URL، يمكنك وضع كود JS الخاص بك إلى grails-app/views/home/index.js.gsp (لاحظ .gsp زائدة)، ويمكنك استخدام أي الكؤوس المقدسة العلامات في مصدر JS الخاص بك. للتأكد من أن لديك JS يتم تسليمها مع نوع المحتوى الصحيح، قد تريد أن تضع

<%@ page contentType="text/javascript"%>

وفي بداية GSP الخاص بك.

ومما يؤسف له، العلامة createLink لا يدعم رابط إعادة كتابة إلى جهات النظر، ولكن يجب أن يكون من السهل لكتابة الكود الخاص بك لإنشاء هذه الروابط.

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

نصائح أخرى

التحديث 2:

توفر Grails إمكانية الارتباط بدورة حياة البناء باستخدام الأحداث المخصصة.

يمكن كتابة معالج الأحداث الذي يقوم بمزامنة كافة ملفات جافا سكريبت ضمن grails-app/views مع المجلد الهدف من web-app/js.

ضع الكود المخصص في $PROJECT/scripts/Events.groovy.ال PackagingEnd هو هدف جيد للاستدعاء، لأنه يحدث بعد ذلك مباشرة web.xml تم إنشاؤه.

eventPackagingEnd = {  ->
     // for each js file under grails-app/views move to web-app/js
}

تحديث

إذا كنت تريد دمج ملفات جافا سكريبت معًا، فيمكنك القيام بذلك باستخدام الروابط الرمزية، على سبيل المثال:

Grails-app/views/view1/index.js -> webapp/js/view1/index.js

بقدر ما أعرف لا توجد طريقة لإجبار Grails على تقديم محتوى خارج تطبيق الويب مباشرة.

وبدلاً من ذلك، يمكنك تضمين جافا سكريبت الخاص بك، ولكن قد يكون لذلك آثار على الأداء.


ملفات جافا سكريبت تنتمي إلى web-app/js.

ثم يمكنك الرجوع إليها باستخدام <g:javascript src="index.js" />.

وفكرة جيدة، ولكن الكؤوس المقدسة لديه هذا بنية الدليل لسبب ما. ويهدف المجلد العرض للحصول على نوع الأداة معين (وجهات النظر) ..

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

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

لا أعتقد أنه مسموح لك بالوصول إلى js داخل طرق العرض/

إذا كنت بحاجة إلى القيام بذلك ...هنا هي الحيلة

  1. قم بإنشاء JS الخاص بك وأعد تسميته بـ myjs.gsp (استخدم "") iniside _myjs.gsp type you js
...أكتب لك JS هنا ...
  1. بداخلك نظام gsp (على سبيل المثال:index.gsp ، view.gsp ، etc) اكتب هذه العلامة لتحميلك js

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