Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script in mehrere Scripts aufteilen, ein Object pro Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script in mehrere Scripts aufteilen, ein Object pro Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Martin 5 last edited by

      Hallo,
      ich möchte ein etwas umfangreicheres Script schreiben und der Übersicht wegen den Code auf mehrere Scripte aufteilen. Aus Java bin ich es gewöhnt für jedes Object eine Datei zu erzeugen. Geht das auch im ioBroker.
      Ich habe bei meiner Suche etwas von einem Global Ordner gefunden, finde ihn aber nicht im ioBroker.
      Kann man eigene Module erstellen und dann mit require einbinden?

      Vorab vielen Dank für Antworten.
      Grüße Martin

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Martin 5 last edited by paul53

        @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

        Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

        @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

        Kann man eigene Module erstellen und dann mit require einbinden?

        Kann man, wenn man weis, wie Module erstellt werden.
        Wenn die eigenen Module unter "iobroker-data/modules" liegen:

        const clock = require('../../../iobroker-data/modules/test.js');
        
        M U 2 Replies Last reply Reply Quote 1
        • M
          Martin 5 @paul53 last edited by

          @paul53 Danke.
          Den globalen Ordner habe ich nun gefunden. Ist ja auch keine Leistung. 😉
          Bei den Modulen bin ich nicht weiter gekommen. Ist aber auch nicht das was ich suche. Wenn man ein größeres Script schreiben möchte wird es schnell unübersichtlich.
          Beispiel:
          Ich erstelle eine Klasse aus der ich mehrere weitere Klassen ableite. In Java wird jede Klasse in eine Datei geschrieben wobei der Klassenname gleich dem Dateinamen ist. Alle Klassen in einem Verzeichnis sehen sich gegenseitig. Das ist recht praktisch und nach meinem Empfinden auch übersichtlich.
          Aber vielleicht sollen die Scripte auch gar nicht so groß werden.

          Grüße Martin

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Martin 5 last edited by

            @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

            Den globalen Ordner habe ich nun gefunden

            Globale Scripte haben - meiner bescheidenen Meinung nach - einen entscheidenden Nachteil: Sie werden in alle anderen Scripte "reinkopiert". Auch dort, wo man sie gar nicht benötigt.

            Ich würde @paul53's Vorschlag mit den Modulen verfolgen ...

            U 1 Reply Last reply Reply Quote 1
            • U
              uwe72 @Codierknecht last edited by uwe72

              @codierknecht Exakt, der Mechanismus der Global Scripte ist sehr gewöhnungsbedürftig, dass dies da einfach in die common reingeschrieben wird, ob sie dort gebraucht werden oder nicht. Dies übrigens noch Java-Script-Instanzen-übergreifend.

              Als ehemaliger Java-Entwickler wünscht man sich, dass man den Code den man öfters benötigt in einer "anderen Stelle" (externes File, Module,...) einmal schreibt und hinterlegt und dann in den common-Scripten per import/requires einzubindet.

              Vor einem halben Jahr war ich da schon sehr weit dies auszuprobieren, hatte am Ende aber aufgegeben. Da es glaub mit TypeScript dann noch schwieriger war. Kann mich generell nicht mehr erinnern, was das Problem war. Müsste hier auch Posts dazu geben zu diesem Thema.

              Hast Du das Thema mit den "externen Modulen" schon verfolgt?

              1 Reply Last reply Reply Quote 0
              • U
                uwe72 @paul53 last edited by

                @paul53 said in Script in mehrere Scripts aufteilen, ein Object pro Script:

                @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

                Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

                @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

                Kann man eigene Module erstellen und dann mit require einbinden?

                Kann man, wenn man weis, wie Module erstellt werden.
                Wenn die eigenen Module unter "iobroker-data/modules" liegen:

                const clock = require('../../../iobroker-data/modules/test.js');
                

                Kannst Du mir helfen. Habe eine Docker-Umgebung. Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?
                2d6cfbb1-3a4b-49b0-b373-88826ff00360-image.png

                paul53 U 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @uwe72 last edited by paul53

                  @uwe72 sagte: Docker-Umgebung.

                  Davon habe ich keine Ahnung.

                  @uwe72 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

                  Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?

                  Unter Linux unter /opt/iobroker/iobroker-data. Darunter das Verzeichnis "modules" erstellt und darin dann die Skripte (Node-Module). Daten unter "iobroker-data" werden beim Backup gesichert.

                  U 1 Reply Last reply Reply Quote 1
                  • U
                    uwe72 @paul53 last edited by

                    @paul53 Wie heißt denn bei dir der volle absolute Pfad zu "iobroker-data/modules"?

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • U
                      uwe72 @uwe72 last edited by uwe72

                      const clock = require('../../../iobroker-data/modules/test.js');
                      

                      Hast Du mir ein kleines Beispiel für den Inhalt von test.js, müssen da so Dinge wie export.... oder was rein? Und wie der Inhalt dann im common Script eingebunden wird bzw. verwendet wird? DANKE

                      T 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @uwe72 last edited by

                        @uwe72
                        Ah du hast diesen thread auch schon gefunden

                        1 Reply Last reply Reply Quote 1
                        • T
                          ticaki Developer @uwe72 last edited by

                          @uwe72

                          hab dir in deinem anderen Thread einen Link zu einem Beispiel von paul gepostet 😄

                          U 1 Reply Last reply Reply Quote 1
                          • U
                            uwe72 @ticaki last edited by

                            Habe für mich mal eine funktionierende Lösung in einem neuen Post aufgeschrieben:
                            https://forum.iobroker.net/topic/78632/info-auslagerung-von-scripte-aus-global-aufs-filesystem

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            539
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            6
                            12
                            522
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo