Gäller från version 2.25.10.11061
Vi har uppdaterat vår JINT-scriptmotor. Tidigare stödde vi ES5, men med den nya versionen är det ES6 som gäller. Detta ger nya möjligheter, men innebär också förändringar i hur befintliga skript hanteras.
Vad händer när ett projekt uppdateras?
-
När ett projekt uppdateras till version 2.25.10.11061 kommer alla befintliga skript att köras med den äldre skriptmotorn Legacy.
-
Du kan gradvis uppdatera skripten till den nya JINT motorn, vilket rekommenderas. Bakåtkompatibilitet kommer att tas bort i framtida versioner, vilket innebär att gamla Legacy skript kan sluta fungera.
Arbeta med befintliga skript
I skriptlistan finns en "Legacy"-kolumn som visar vilka skript som körs i Legacy-läge.
Detta ger en tydlig översikt över vilka skript som fortfarande använder den gamla Legacy-motorn.
OBS!
Att ändra skript-motorn i redigeringsläget påverkar endast hur skriptet testas — det ändrar inte vilken skript-motor systemet använder när skriptet körs.För att permanent byta skript-motorn måste du uppdatera inställningen i högermenyn
-
Öppna ett befintligt skript för redigering
-
Välj ett skript och öppna det i redigeringsläge.
-
Knappen "Legacy" är ifylld som standard, vilket indikerar att skriptet körs med gamla skriptmotorn (Legacy) vid testning av skriptet i redigeringsläget.
-
-
Testa nya JINT
-
Du kan inaktivera "Legacy" genom att klicka på knappen i redigeringsläget.
-
Det gör att du kan redigera skriptet och testa det i den nya JINT motorn.
-
Dina ändringar kommer inte att påverka originalskriptet, klicka på "Legacy"-knappen igen för att återgå till redigering i Legacy-läge.
-
-
Spara och avsluta redigering
-
Viktigt: När du sparar och lämnar redigeringsläget kommer skriptet att fortsätta att köras i Legacy om du inte inaktiverar det.
-
Så här får du skriptet att köras på den nya JINT motorn:
-
Klicka på skriptet i listan för att öppna högermenyn.
-
Avblockera "Legacy kodmotor" och spara.
-
-
Tips
Om ett skript inte fungerar kan det bero på att Moldeo.WebPortCommon inte längre är tillgänglig i skript i den nya Jint-motorn. Referenser till denna namnrymd måste därför tas bort.
Exempel på ändring:
// Tidigare (fungerar ej i nya motorn)
tags["TAG_NAME_PV"].ReadValue(Moldeo.WebPortCommon.ReadTypes.PRIORITY);
// Uppdaterat (rätt i nya motorn)
tags["TAG_NAME_PV"].ReadValue(ReadTypes.PRIORITY);
Nya skript
-
Nya skript som skapas körs alltid i nua JINT som standard.
- Blockly är inte tillgänglig i den nya JINT-skriptmotorn.
Skräddarsydda rapporter
-
Samma funktionalitet gäller för skräddarsydda rapporter:
-
Du kan arbeta med skriptet i Legacy-läge eller testa det i nya JINT
-
När du är redo att köra rapporten i den nya skriptmotorn:
-
Gå till Parametrar → Allmänna inställningar.
-
Avblockera "Legacy kodmotor" och spara.
-
-
Nya JINT – Best Practices & Tips
Vid körning av skript i nya JINT är det betydligt snabbare att använda vanliga JavaScript-objekt än att skapa eller hantera C# instanser som JArray och JObject.
För jämförelse visar ett test följande exekveringstider:
| Skript-motor | JavaScript-objekt | C#-objekt (JArray/JObject) |
| Legacy JINT | 27 ms | 40 ms |
| Nya JINT | 8 ms | 979 ms |
För bästa prestanda och underhåll, utför all logik och datahantering med ren JavaScript när möjligt.
Example:
const result = [];
const amount = 1000;
const first = benchmark("Pure JS objects", () => {
const items = [];
for (let i = 0; i < amount; i++) {
const item = {};
item.id = Number(i);
item.value = Number(i * 2);
items.push(item);
}
});
result.push(first);
const second = benchmark("C# JObjects", () => {
const JArray = Newtonsoft.Json.Linq.JArray;
const JObject = Newtonsoft.Json.Linq.JObject;
const JValue = Newtonsoft.Json.Linq.JValue;
const items = new JArray();
for (let i = 0; i < amount; i++) {
const item = new JObject();
item.Add("id", new JValue(Number(i)));
item.Add("value", new JValue(Number(i * 2)));
items.Add(item);
}
});
result.push(second);
return result.map(({ label, sw }) => `${label}: ${sw.ElapsedMilliseconds} ms`).join("<br>");
function benchmark(label, fn) {
const sw = new System.Diagnostics.Stopwatch();
sw.Start();
fn();
sw.Stop();
debug(`${label}: ${sw.ElapsedMilliseconds} ms`);
return { label, sw };
}
Info
Om du har frågor eller tips gällande migrering av funktioner till den nya JINT-motorn, kontakta oss på support.webport@kiona.com Din feedback hjälper oss att förbättra vår vägledning och våra verktyg.