Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Klassen Import mit jQuery möglich?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    695

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Klassen Import mit jQuery möglich?

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 3 Kommentatoren 505 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W Offline
    W Offline
    WolfgangFB
    schrieb am zuletzt editiert von
    #1

    Ich möchte eine Klasse per requite importierern. Prinzpiell geht das, Beispiel:

    class MyClass{
      constructor(){this.Hallo = "Hallo"}
    }
    
    const MyClass = require('./MyClass.js');
    const MyInstance = new MyClass();
    log(MyInstance.Hallo); => "Hallo"
    

    Wenn aber in der Klasse ein jquery Operator verwendet wir,

    this.LichtDP = $('alias.0.Licht.*Zustand');
    

    Dann klappt das nicht mehr, Fehlermeldung:

    ReferenceError: $ is not defined
    

    Frage: Kann man Klassen die jquery verwenden exportieren und importieren?

    OliverIOO haus-automatisierungH 2 Antworten Letzte Antwort
    0
    • W WolfgangFB

      Ich möchte eine Klasse per requite importierern. Prinzpiell geht das, Beispiel:

      class MyClass{
        constructor(){this.Hallo = "Hallo"}
      }
      
      const MyClass = require('./MyClass.js');
      const MyInstance = new MyClass();
      log(MyInstance.Hallo); => "Hallo"
      

      Wenn aber in der Klasse ein jquery Operator verwendet wir,

      this.LichtDP = $('alias.0.Licht.*Zustand');
      

      Dann klappt das nicht mehr, Fehlermeldung:

      ReferenceError: $ is not defined
      

      Frage: Kann man Klassen die jquery verwenden exportieren und importieren?

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #2

      @wolfgangfb

      im Java Skript Adapter funktioniert jquery nicht.
      Jquery funktioniert nur in einem Browser
      im Java Skript Adapter arbeitest du aber mit Node in einer reinen Server Umgebung .
      Wenn du mit jquery ähnlichem Syntax in node arbeiten möchtest, musst du Cheerio laden
      https://www.npmjs.com/package/cheerio
      Bitte vorher immer checken, ob das von dir gewünschte auch unterstützt wird.
      Wie gesagt, alle direkten browserbezogenen Befehle stehen nicht zur Verfügung, da diese Objekte unter Node nicht zur Verfügung stehen

      Was deine Verwendung von jquery allerdings nun mit require und Klasse zu tun hat, hab ich noch nicht verstanden

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      W 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @wolfgangfb

        im Java Skript Adapter funktioniert jquery nicht.
        Jquery funktioniert nur in einem Browser
        im Java Skript Adapter arbeitest du aber mit Node in einer reinen Server Umgebung .
        Wenn du mit jquery ähnlichem Syntax in node arbeiten möchtest, musst du Cheerio laden
        https://www.npmjs.com/package/cheerio
        Bitte vorher immer checken, ob das von dir gewünschte auch unterstützt wird.
        Wie gesagt, alle direkten browserbezogenen Befehle stehen nicht zur Verfügung, da diese Objekte unter Node nicht zur Verfügung stehen

        Was deine Verwendung von jquery allerdings nun mit require und Klasse zu tun hat, hab ich noch nicht verstanden

        W Offline
        W Offline
        WolfgangFB
        schrieb am zuletzt editiert von
        #3

        @oliverio sagte in Klassen Import mit jQuery möglich?:

        @wolfgangfb

        Was deine Verwendung von jquery allerdings nun mit require und Klasse zu tun hat, hab ich noch nicht verstanden

        Ich möchte Klassen in unterschiedliche Dateien auslagern (um die Übersichtlichkeit zu erhöhen).
        Ich habe bisher keine andere Möglichkeit als "require" gefunden um Klassen aus unterschiedlichen Dateien in ein JS Skript einzubinden (ich nehme gerne bessere Ideen an). Dabei ist mir eben aufgefallen, dass das nur so lange gut geht wie die ausgelagerte Klasse keine jquery Methode verwendet.
        Oder anderst ausgedrückt: Wie kann man eine Klasse die über jqeury einen Satz an Datenpunkten ermittelt in ein JS Skript einbinden, das sich in einer anderen Datei befindet?

        OliverIOO 1 Antwort Letzte Antwort
        0
        • W WolfgangFB

          @oliverio sagte in Klassen Import mit jQuery möglich?:

          @wolfgangfb

          Was deine Verwendung von jquery allerdings nun mit require und Klasse zu tun hat, hab ich noch nicht verstanden

          Ich möchte Klassen in unterschiedliche Dateien auslagern (um die Übersichtlichkeit zu erhöhen).
          Ich habe bisher keine andere Möglichkeit als "require" gefunden um Klassen aus unterschiedlichen Dateien in ein JS Skript einzubinden (ich nehme gerne bessere Ideen an). Dabei ist mir eben aufgefallen, dass das nur so lange gut geht wie die ausgelagerte Klasse keine jquery Methode verwendet.
          Oder anderst ausgedrückt: Wie kann man eine Klasse die über jqeury einen Satz an Datenpunkten ermittelt in ein JS Skript einbinden, das sich in einer anderen Datei befindet?

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #4

          @wolfgangfb

          Wenn du etwas komplexeres programmieren möchtest, würde ich dir raten, deine Funktionalitäten in einen eigenständigen Adapter auszulagern.
          Eine Kommunikation zwischen einem Skript und einem Adapter kann dann entweder über datenpunkte oder über den sendto Befehl erfolgen.

          Wenn du dennoch diesen Weg weiter verfolgen willst, dann schaue dir den require Befehl an
          https://nodejs.org/docs/latest/api/modules.html#requireid
          Dort kann man Dateien entsprechend per Pfad oder Modul id laden

          Der Pfad aus der die Datei geladen wird, muss allerdings innerhalb der node hierarchie liegen.
          Da wir hier allerdings 2 Hierarchien untereinander haben (ioBroker und JavaScript Adapter) musst du ausprobieren, wo du den Pfad platzieren kannst. (Start einer Hierarchie ist immer der Ort wo die Datei package.json liegt und als eigenständiger Prozess gestartet wird.
          Also ganz sicher irgendwo unterhalb des Java Skript Adapters
          Idealerweise geht auch /opt/Iobroker/files
          Innerhalb des Java Skript Adapters ist halt unschön, da bei Aktualisierung diese Daten gelöscht werden.
          Leider hat node auch Probleme mit Dateisystem links.

          Die Möglichkeiten mit npm aus einem lokalen repository zu installieren lasse ich mal aus, da auch das bei einer Aktualisierung wieder weg wäre. In der Konfiguration des JavaScript einen lokalen Pfad einzutragen zu einem lokalen repo geht glaube ich nicht.

          Ich hoffe, dass ich dich mit diesen ganzen node details nicht verwirre.

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          haus-automatisierungH 1 Antwort Letzte Antwort
          0
          • W WolfgangFB

            Ich möchte eine Klasse per requite importierern. Prinzpiell geht das, Beispiel:

            class MyClass{
              constructor(){this.Hallo = "Hallo"}
            }
            
            const MyClass = require('./MyClass.js');
            const MyInstance = new MyClass();
            log(MyInstance.Hallo); => "Hallo"
            

            Wenn aber in der Klasse ein jquery Operator verwendet wir,

            this.LichtDP = $('alias.0.Licht.*Zustand');
            

            Dann klappt das nicht mehr, Fehlermeldung:

            ReferenceError: $ is not defined
            

            Frage: Kann man Klassen die jquery verwenden exportieren und importieren?

            haus-automatisierungH Online
            haus-automatisierungH Online
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @wolfgangfb sagte in Klassen Import mit jQuery möglich?:

            Wenn aber in der Klasse ein jquery Operator verwendet wir,

            1. Das ist in der JavaScript-Sandbox kein jQuery, sondern ein $-Selektor. Siehe https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#---selector
            2. Der Code ist also durchaus gültig, hat nur halt nichts mit jQuery zu tun
            3. Die Funktion mit dem Namen $ ist in der sandbox vom JavaScript-Adapter definiert. Möchtest Du diese in der Klasse verwenden, ist es wahrscheinlich am einfachsten diese per this im Constructor mitzunehmen.
            class MyClass{
              constructor(sandbox){
                this.sb = sandbox;
              }
            }
            
            const MyInstance = new MyClass(this);
            
            this.LichtDP = this.sb.$('alias.0.Licht.*Zustand');
            

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            W 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @wolfgangfb

              Wenn du etwas komplexeres programmieren möchtest, würde ich dir raten, deine Funktionalitäten in einen eigenständigen Adapter auszulagern.
              Eine Kommunikation zwischen einem Skript und einem Adapter kann dann entweder über datenpunkte oder über den sendto Befehl erfolgen.

              Wenn du dennoch diesen Weg weiter verfolgen willst, dann schaue dir den require Befehl an
              https://nodejs.org/docs/latest/api/modules.html#requireid
              Dort kann man Dateien entsprechend per Pfad oder Modul id laden

              Der Pfad aus der die Datei geladen wird, muss allerdings innerhalb der node hierarchie liegen.
              Da wir hier allerdings 2 Hierarchien untereinander haben (ioBroker und JavaScript Adapter) musst du ausprobieren, wo du den Pfad platzieren kannst. (Start einer Hierarchie ist immer der Ort wo die Datei package.json liegt und als eigenständiger Prozess gestartet wird.
              Also ganz sicher irgendwo unterhalb des Java Skript Adapters
              Idealerweise geht auch /opt/Iobroker/files
              Innerhalb des Java Skript Adapters ist halt unschön, da bei Aktualisierung diese Daten gelöscht werden.
              Leider hat node auch Probleme mit Dateisystem links.

              Die Möglichkeiten mit npm aus einem lokalen repository zu installieren lasse ich mal aus, da auch das bei einer Aktualisierung wieder weg wäre. In der Konfiguration des JavaScript einen lokalen Pfad einzutragen zu einem lokalen repo geht glaube ich nicht.

              Ich hoffe, dass ich dich mit diesen ganzen node details nicht verwirre.

              haus-automatisierungH Online
              haus-automatisierungH Online
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @oliverio sagte in Klassen Import mit jQuery möglich?:

              Idealerweise geht auch /opt/Iobroker/files

              Das ginge, aber dort bitte nicht per Dateisystem irgendwelche Daten hinkopieren, sondern nur mit den ioBroker-Funktionen. Also entweder über das Dateien-Tab im Admin oder über die CLI-Funktionen. Sonst fehlen dem ioBroker die Meta-Daten.

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              OliverIOO 1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                @oliverio sagte in Klassen Import mit jQuery möglich?:

                Idealerweise geht auch /opt/Iobroker/files

                Das ginge, aber dort bitte nicht per Dateisystem irgendwelche Daten hinkopieren, sondern nur mit den ioBroker-Funktionen. Also entweder über das Dateien-Tab im Admin oder über die CLI-Funktionen. Sonst fehlen dem ioBroker die Meta-Daten.

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #7

                @haus-automatisierung sagte in Klassen Import mit jQuery möglich?:

                Sonst fehlen dem ioBroker die Meta-Daten

                braucht man die nicht nur, wenn die datei über webserver abgerufen werden soll? node greift ja direkt über dateisystem zu.
                allerdings sollten die dateien für den user iobroker lesbar sein

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                1 Antwort Letzte Antwort
                0
                • haus-automatisierungH haus-automatisierung

                  @wolfgangfb sagte in Klassen Import mit jQuery möglich?:

                  Wenn aber in der Klasse ein jquery Operator verwendet wir,

                  1. Das ist in der JavaScript-Sandbox kein jQuery, sondern ein $-Selektor. Siehe https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#---selector
                  2. Der Code ist also durchaus gültig, hat nur halt nichts mit jQuery zu tun
                  3. Die Funktion mit dem Namen $ ist in der sandbox vom JavaScript-Adapter definiert. Möchtest Du diese in der Klasse verwenden, ist es wahrscheinlich am einfachsten diese per this im Constructor mitzunehmen.
                  class MyClass{
                    constructor(sandbox){
                      this.sb = sandbox;
                    }
                  }
                  
                  const MyInstance = new MyClass(this);
                  
                  this.LichtDP = this.sb.$('alias.0.Licht.*Zustand');
                  
                  W Offline
                  W Offline
                  WolfgangFB
                  schrieb am zuletzt editiert von
                  #8

                  @haus-automatisierung

                  Super, vielen Dank, das mit der Sandbox funktioniert. Was noch nicht funktioniert ist der Zugrif auf die im JS Adapter gespiegelten Dateien, da bekomme ich immer die Meldung "nicht gefunden". Relative Pfaddangaben bekomme ich auch nich hin. Besonders nervend ist, dass bei jeder Änderung einer zu importierenden Datei der JS Adapter neu gestartet werden muss weil sonst die Änderungen nicht übernommen werde, gibt es da eine Abhilfe?

                  haus-automatisierungH 1 Antwort Letzte Antwort
                  0
                  • W WolfgangFB

                    @haus-automatisierung

                    Super, vielen Dank, das mit der Sandbox funktioniert. Was noch nicht funktioniert ist der Zugrif auf die im JS Adapter gespiegelten Dateien, da bekomme ich immer die Meldung "nicht gefunden". Relative Pfaddangaben bekomme ich auch nich hin. Besonders nervend ist, dass bei jeder Änderung einer zu importierenden Datei der JS Adapter neu gestartet werden muss weil sonst die Änderungen nicht übernommen werde, gibt es da eine Abhilfe?

                    haus-automatisierungH Online
                    haus-automatisierungH Online
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von haus-automatisierung
                    #9

                    @wolfgangfb sagte in Klassen Import mit jQuery möglich?:

                    Besonders nervend ist, dass bei jeder Änderung einer zu importierenden Datei der JS Adapter neu gestartet werden muss weil sonst die Änderungen nicht übernommen werde, gibt es da eine Abhilfe?

                    Naja - das Vorgehen ist ja so auch irgendwo dokumentiert oder empfohlen. Eigentlich müsste es aber reichen, das entsprechende Script neuzustarten (dann wird ja das require() erneut ausgeführt).

                    Seit Version v7.11.1 gibt es defaultDataDir in der Sandbox. Das zeigt auf /opt/iobroker/iobroker-data/ (oder wo auch immer der ioBroker läuft). Damit könnte man den Pfad leichter zusammenbauen.

                    Aber wie gesagt: Alles, was Du da versuchst, ist nicht empfohlen oder offiziell unterstützt. Warum die Klassen nicht als eigenes Script in global ablegen und dann verwenden?

                    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                    📚 Meine inoffizielle ioBroker Dokumentation

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    760

                    Online

                    32.6k

                    Benutzer

                    82.0k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe