在众触开发应用无需编写传统代码,所有的数据与业务逻辑都是使用表达式expression来描述。它是专注于web应用的领域特定语言(Domain Specific Language,简称DSL)。
众触表达式简练、直观、容易上手,功能依然很强大,可以灵活表达各种业务需求,是快速创作应用的法宝,是众触应用平台的灵魂。
页面展示:用小括弧把表达式括起来在页面中展示动态数据
事件逻辑:在事件中使用表达式来操作页面元素、数值运算、操作数据库
后端服务:在后端服务器中使用表达式来认证用户权限、过滤非法操作、自定义服务,定时服务等
多个表达式通常分行写,一行一条。有时也会在同一行写,用;隔开。
通常表达式都是同步执行(按顺序执行)的,即一条表达执行完毕才会开始执行下一条,即使是耗时的网络请求/数据库操作也是如此(除了少量异步函数外)。
右键点击表达式编辑框可以全屏编辑,编辑体验更好。
内部表达式,当参数是多条表达式时的便利写法,只在当前组件/事件内有效,所以也称作事件内表达式
类似的还有内部对象$obj,内部数组$arr和内部代码$js
全局表达式,在整个应用中都可调用。类似的还有全局对象$OBJ,全局数组$ARR和全局代码$JS
由于它们是在整个应用中共享的,用户打开应用的第一个页面时就会加载它们,无论这个页面会不会用到它们。应节制使用,大量使用在整个应用中共享的资源会减慢用户首次打开应用的速度。
特别地,预设有如下事件钩子表达式:
$EXP.request:后端首次收到应用请求时(服务器端预渲染时)执行,适合获取全局必备的基础数据。
$EXP.init:应用初始化前端时执行,适合全局数据初始化。
$EXP.ready:应用首次加载完成后执行,适合全局数据库获取工作。
$EXP.login:取得登录用户数据后执行,适合获取用户相关数据。
$EXP.apiCall:每次调用API前执行,用来添加/调整参数。环境变量有表名table,接口名称api:get/find/count/update/insert/delete等;还有参数体body,包括find接口的Q和O,update的U,insert的x和upsert。
$EXP.apiData:每次调用API返回数据后执行,用来转换数据。除了上面的环境变量还有返回的数据data。
除了组件自身的事件里表达式(包括$exp)对此组件逻辑有直接影响外还有多个地方的表达式也会有间接影响,比如某个$v变量是从哪里来的?
父/祖先/兄弟挂载组件mount的挂载事件
根节点root和共享组件share的request/init/ready事件E
全局表达式里的request/init/ready/login事件