דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה בחלוקת קובץ node js למספר קבצים נפרדים

עזרה בחלוקת קובץ node js למספר קבצים נפרדים

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 251 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מוטי מןמ מנותק
    מוטי מןמ מנותק
    מוטי מן
    כתב ב נערך לאחרונה על ידי
    #1

    שלום, יש לי קובץ node js שמכיל מספר פונקציות, ואני רוצה לפצל כל פונקציה (היינו כל פעילות מסויימת) לקובץ נפרד בשביל שיהיה מסודר, וכן להעביר את הראוטרים לקובץ אחד, שממנו יופעלו כל הקבצים,

    חלק מהפונקציות נקראות באמצעות הדפדפן, וחלק מימות המשיח עם הספריה, והסתבכתי בענין.

    אני מצרף קטע עם דוגמה בכדי שיהיה קל להבין למה אני מתכוון,

    הראוטרים של chk וShare הם מודולי API של ימות שמשתמשים בספרייה, והראוטר הכללי וYemotLogin משמשים לגישה דרך הדפדפן.

    בנוסף, אני רוצה להיות מסוגל לקרוא לפונקציה שנקראת licenseVerification מכל הקבצים ללא שאצטרך להעתיק אותה לכל אחד.

    אשמח לעזרה והסבר מה אני צריך להשאיר בקובץ הראשי של הראוטרים, ומה אני צריך לכלול בכל קובץ שמשתמש בספרייה לימות המשיח, ומה בפונקציות הרגילות.

    import { YemotRouter } from 'yemot-router2';
    import express from 'express';
    import axios from 'axios';
    import fs from 'fs';
    import { promises as fsPromises } from 'fs';
    export const app = express();
    
    export const router = YemotRouter({
        printLog: true,
        uncaughtErrorHandler: (error, call) => {
            console.log(`Uncaught error from ${call.phone}. error stack: ${error.stack}`);
            return call.id_list_message([{ type: 'text', data: 'השרת נתקל בשגיאה פנה למנהל' }]);
        }
    });
    
    router.post('/chk', callHandler);
    router.post('/Share', sharing);
    app.get('/YemotLogin', (req, res) => yemotLogin(req, res));
    
    app.get('/', function (req, res) {
        res.send('אין גישה');
    });
    
    app.use(express.urlencoded({ extended: true }));
    app.use(router);
    
    const port = 3000;
    app.listen(port, () => console.log(`The express server is now running and listening on port ${port}`));
    
    
    const url_yemot_api = 'https://www.call2all.co.il/ym/api/';
    
    async function yemotLogin(req, res) {
        console.log('yemotLogin');
        res.send('Blocked');
    }
    
    function licenseVerification(apiDID) {
        if (apiDID) {
            console.log('status: ', 'true');
            return true;
        } else {
            console.log('status: ', 'blocked');
            return false;
        }
    }
    
    async function sharing(call) {
        await call.id_list_message([{
            type: 'text',
            data: 'הפעולה הושלמה'
        }]);
    }
    
    async function callHandler(call) {
        if (await licenseVerification(call.ApiDID) === true) {
            return call.id_list_message([{
                type: 'text',
                data: 'גישה מאופשרת'
            }]);
        } else {
            return call.id_list_message([{
                type: 'text',
                data: 'המספר שלכם חסום לגישה'
            }]);
        }
    }
    
    צדיק תמיםצ תגובה 1 תגובה אחרונה
    1
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב למוטי מן ב נערך לאחרונה על ידי צדיק תמים
      #2

      @מוטי-מן קודם כל אני ממליץ לך בחום ומנסיון כשהייתי בשלב שלך בזמנו, לעבור על סדרת הסרטונים הזאת, נראה לי שזה יכסה לך דברים בסיסיים (לדוגמה את השאלה הנוכחית).

      אני ממליץ על מבנה כזה:
      app.js
      תקיית src:
      utils.js
      תקיית api בתוך src:
      router.js
      controller.js
      תקיית ivr בתוך src:
      controller.js
      router.js

      כך קובץ utils.js ייצא את פונקציית הבדיקה:

      export function licenseVerification(apiDID) {
          if (apiDID) {
              console.log('status: ', 'true');
              return true;
          } else {
              console.log('status: ', 'blocked');
              return false;
          }
      }
      

      קובץ controller.js תחת ivr - מייצא פונקציות של הלוגיקת שיחה עצמה:

      import { licenseVerification } '../utils.js';
      
      export async function sharing(call) {
          await call.id_list_message([{
              type: 'text',
              data: 'הפעולה הושלמה'
          }]);
      }
       
      export async function callHandler(call) {
          if (await licenseVerification(call.ApiDID) === true) {
              return call.id_list_message([{
                  type: 'text',
                  data: 'גישה מאופשרת'
              }]);
          } else {
              return call.id_list_message([{
                  type: 'text',
                  data: 'המספר שלכם חסום לגישה'
              }]);
          }
      }
      

      קובץ src/ivr/router.js:

      import { YemotRouter } from 'yemot-router2';
      import { callHandler } from './controller.js';
       
      const router = YemotRouter({
          printLog: true,
          uncaughtErrorHandler: (error, call) => {
              console.log(`Uncaught error from ${call.phone}. error stack: ${error.stack}`);
              return call.id_list_message([{ type: 'text', data: 'השרת נתקל בשגיאה פנה למנהל' }]);
          }
      });
      
      router.get('/call', callHandler);
      
      export default router;
      

      קובץ src/api/controller.js:

      import { licenseVerification } '../utils.js';
      
      export async function yemotLogin(req, res) {
          // licenseVerification(...)
          console.log('yemotLogin');
          res.send('Blocked');
      }
      

      קובץ src/api/router.js:

      import { Router } from 'express';
      import { yemotLogin } from './controller.js';
      
      const router = Router();
      
      router.get('/page', yemotLogin);
      
      export default router;
      

      קובץ app.js - אחראי רק על רמת השרת/אקספרס, ומייבא את הראוטרים ו"מפעיל" אותם באמצעות app.use:

      import express from 'express';
      const app = express();
      import ivrRouter from './src/ivr/router.js';
      import apiRouter from './src/api/router.js';
      
      app.use(express.urlencoded({ extended: true }));
      
      app.use(apiRouter);
      app.use('/ivr', ivrRouter);
       
      const port = 3000;
      app.listen(port, () => console.log(`The express server is now running and listening on port ${port}`));
      

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      מוטי מןמ תגובה 1 תגובה אחרונה
      6
      • מוטי מןמ מנותק
        מוטי מןמ מנותק
        מוטי מן
        השיב לצדיק תמים ב נערך לאחרונה על ידי
        #3

        @צדיק-תמים לא ממש הבנתי את זה מלמעלה, בעז"ה היום בערב אני אנסה לעשות את זה כפי שהסברת ואעדכן, תודה רבה.

        תגובה 1 תגובה אחרונה
        1

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום