西门子WinCC Unified 中全局模块
主要内容:
1、导出export
2、导入import
3、WinCC Unified 中全局模块
测试环境:
WINCC Unified v17 update4
ECMAScript规范从第 6 版ES2015开始,在语言标准的层面上实现了模块功能。添加了 import 和 export 关键字。使用模块,可以将一个大程序拆分成多个文件,每个文件都是一个模块,再用简单的方法拼装起来。
ES6 模块中的代码自动应用严格模式,不用显式在模块头部加上 use strict。模块中定义的常量、变量、对象、函数、类对这个模块而言都是局部的,不会污染全局作用域。需要显式的导出才可以被其他文件使用。
1
导出export
要从ES6模块导出对象,只要在声明前加上export关键字即可。
示例:模块module1.js
export let a;
export function add(x,y){return x+y;};
或者,声明时不加export,在文件末尾使用一个export统一导出
let a;
function add(x,y){return x+y;};
export {a,add};
注意使用export的常规导出只对有名字的声明有效。
export (x,y)=>x+y;
如上面的语法是错误的,无法使用export导出一个没有名称的箭头函数。
一个模块如果只需导出一个对象,通常可以使用export default而不是export。export default还可以导出没有名称的对象。
export default (x,y)=>x+y;
合并导出,意思就是在一个模块中可以导出其他模块的已导出对象,相当于自己的导出。
示例:
export * from "./module1.js"
export * from "./module2.js"
这样可以将多个子模块聚合到一个父模块,其他文件只要导入此父模块即可,简化了语法。
2
导入import
导入其他模块导出的对象使用import关键字。
如导入上面module1.js模块导出的对象
import {a,add} from "./module1.js"
使用 import,然后是被大括号包围的用逗号分隔的需要导入的对象的名称列表,然后是关键字 from,然后是模块文件的路径。模块文件路径是一个以“/”开头的绝对路径,或者是一个以“./”或“../”开头的相对路径,又或者是一个带有协议及主机名的完整URL。
通常从定义了很多导出的模块导入时,可以像下面这样以一条import语句轻松的导入所有对象:
import * as m1 from "./module1.js"
这样一条语句创建了m1对象,模块导出对象的名字作为这个对象的属性名。使用导出的对象时始终以 m1 为前缀如m1.add。这也可以很好的解决,导入的不同模块的导出对象存在相同名称的冲突问题。
3
WinCC Unified 中全局模块
WinCC Unified提供了全局模块方法,模块可供画面脚本、计划任务、其他模块使用。符合ES6规范。
如点击“添加新全局模块”新建一个名称为m1的全局模块,打开“全局定义区域”,添加一个默认导出的函数

在画面中使用此模块:
画面添加一按钮在“单击鼠标左键”事件中调用模块的函数
在事件的“全局定义”中导入模块,在WinCC Unified中模块路径是直接使用模块名。

然后点击上面工具栏“脚本函数”,切换到事件脚本的编辑窗口编写脚本

通过module_m1.default使用模块导出的默认函数。
以上就是全局模块的基本使用方法。