Πλαίσιο JavaScript
JavaScript Πλαίσιο
Η στρώση σεναρίων παρέχει ένα ελεγχόμενο JavaScript πλαίσιο αξιολόγησης για έγγραφα που το χρειάζονται. Είναι σκόπιμα καθοδηγούμενη από πολιτικές: η επίλυση μονάδων είναι ρητή, και οι αποτυχίες εμφανίζονται ως τυποποιημένες εξαιρέσεις.
Το Πλαίσιο Αξιολόγησης
JSContext φιλοξενεί την αξιολόγηση σεναρίου. Τα σφάλματα που προκύπτουν κατά την αξιολόγηση εμφανίζονται ως JSEvaluationError, διατηρώντας τις αποτυχίες σεναρίου ξεχωριστές από τα σφάλματα στην πλευρά του Python-side errors.
Φόρτωση Μονάδας
Η επίλυση μονάδων διέπεται από το ModuleRegistry, το οποίο αντιστοιχίζει τους προσδιοριστές μονάδων σε υλοποιήσεις. Οι ελλιπείς μονάδες προκαλούν ModuleNotFoundError (το δικό της τυποποιημένο σφάλμα της βιβλιοθήκης) αντί να επιστρέφουν σιωπηρά υποδείγματα.
Πολιτικές Φόρτωσης
ModuleLoadPolicy ελέγχει τι επιτρέπεται να φορτώσει ένα context — ο μηχανισμός απομόνωσης της συμπεριφοράς του script στην επεξεργασία από την πλευρά του διακομιστή, όπου η αυθαίρετη πρόσβαση σε μονάδες δεν επιθυμείται.
Συμβουλές και Καλύτερες Πρακτικές
- Καταχωρίστε μόνο τις μονάδες που χρειάζεται το σενάριο επεξεργασίας σας· ένα μικρό μητρώο είναι η άκρη απομόνωσης.
- Αντιμετωπίστε το
JSEvaluationErrorξεχωριστά από τις γενικές εξαιρέσεις για να διακρίνετε τα σφάλματα του script από τα σφάλματα της γραμμής επεξεργασίας. - Αντιμετωπίστε το
ModuleNotFoundErrorως σήμα πολιτικής, όχι ως μοιραία κατάσταση — συχνά σημαίνει ότι η είσοδος αναμένει ένα API του προγράμματος περιήγησης που έχετε επιλέξει να μην παρέχετε.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
ModuleNotFoundError κατά την αξιολόγηση | Η μονάδα δεν είναι εγγεγραμμένη | Προσθέστε το στο ModuleRegistry ή προσαρμόστε την πολιτική |
| Η αποτυχία του script καταρρέει τη γραμμή επεξεργασίας | JSEvaluationError δεν εντοπίστηκε | Διαχειριστείτε το στο όριο αξιολόγησης |
| Αναπάντεχη πρόσβαση μονάδας | Πολιτική υπερβολικά επιτρεπτική | Σφίξτε ModuleLoadPolicy |
FAQ
Απαιτείται η αξιολόγηση του script για την ανάλυση;
Όχι — η ανάλυση, το CSSOM και η διάταξη λειτουργούν χωρίς κανένα πλαίσιο script.
Πώς ελέγχω τι scripts μπορούν να εισάγουν;
Μέσω του ModuleRegistry (τι που υπάρχει) και του ModuleLoadPolicy (τι που μπορεί να φορτωθεί).
Πώς εμφανίζονται τα σφάλματα script;
Ως εξαιρέσεις JSEvaluationError στην πλευρά του Python.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
JSContext | JavaScript πλαίσιο αξιολόγησης |
ModuleRegistry | Καταχωρητής προσδιοριστών μονάδων |
ModuleLoadPolicy | Έλεγχος πολιτικής φόρτωσης μονάδας |
JSEvaluationError | Αποτυχία αξιολόγησης script με τύπους |
ModuleNotFoundError | Αποτυχία τύπου λόγω έλλειψης μονάδας |