Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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
    17
    1
    3.6k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Klassen Import mit jQuery möglich?

Scheduled Pinned Locked Moved JavaScript
9 Posts 3 Posters 564 Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    WolfgangFB
    wrote on last edited by
    #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 Replies Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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 Offline
            haus-automatisierungH Offline
            haus-automatisierung
            Developer Most Active
            wrote on last edited by
            #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 Reply Last reply
            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 Offline
              haus-automatisierungH Offline
              haus-automatisierung
              Developer Most Active
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  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 Offline
                    haus-automatisierungH Offline
                    haus-automatisierung
                    Developer Most Active
                    wrote on last edited by 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 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    786

                    Online

                    32.7k

                    Users

                    82.4k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe