איך ניתן לשתף קוד בין השרת לדפדפן
-
אתה שולח אותו מהשרת בבקשת AJAX, הדפדפן מקבל אותו סטרינג, אתה עורך אותו בדפדפן עם כמה ריפלייסים, ועושה לו eval
-
מתנצל על השטות שכתבתי, אם תעשה ריפלייסים לקוד יפטרו אותך במקום
תעשה require מינימליfunction require(code){ var exports = {} var module = {} eval(code) return module.exports || exports }
וכשאתה מקבל את המחרוזת של הקוד בדפדפן, תעביר אותו דרך הפונקציה הזו, לדוגמא
var ajaxResponse = 'module.exports = function(){}'; $scope.func = require(ajaxResponse)
-
@מנצפך
אני רוצה לכתוב פונקציה פעם אחת, ולהשתמש בו גם בשרת וגם בדפדפן.אפשרות אחת היא פשוט לייבא לדף
<script src="myScript.js"></script>
אבל אז אז זה מוצמד ל
global
, ואני רוצה א"ז מכומס בתוך הקונטרולר.אז אפשרות נוספת זה לקבל את הפונקציה כסטרינג באמצעות AJAX ולהפעילו באמצעות פונקצית
eval
, אבל זה לא נוח כי צריך למחוק את המעטפת:myFunc(){}
כי הפונקציה מקבלת רק סטרינג עם גוף הפונקציה להרצה
וכן הוא לא יכיר את המשתנהmodule.exports
שנמצא בכל מודול.עכשיו הפתרון מובן?