云服务器内容精选
-
模型视图 标准页面是通过数据模型驱动的,页面所有的逻辑都是围绕数据模型展开的。在将模型与前台页面组件或者后台逻辑绑定后,开发者只需要关注模型数据的实例化和处理,不需要关注页面的渲染和展示。 在页面底部,单击“模型视图”,即可从“设计视图”切换到“模型视图”,在模型视图下,可以查看、编辑以及管理数据模型,如图6所示。 图6 模型视图 模型定义 标准页面支持表1中四类模型,每类模型都包含参数定义和方法定义。方法是在模型上定义的API,通常会在前端组件关联的事件脚本(例如页面加载事件、鼠标单击事件)中调用这些API,以实现一定的逻辑。 表1 模型说明 模型分类 模型说明 模型参数的定义 模型方法的定义 API调用方法 自定义模型 自定义模型是由开发者自由定义的模型。 参数由开发者自定义,可以添加子节点。 开发者自定义方法。 $model.ref("modelName").actionName(); 对象模型 对象模型是直接与Object对象表映射生成的。 系统自动获取Object所有的字段,开发者可以从中选择部分字段作为参数。 平台自动生成查询、保存、删除和统计4个方法。 $model.ref("modelName").query(param); $model.ref("modelName").save(); $model.ref("modelName").delete(); $model.ref("modelName").count(); 服务模型 服务模型是与后台服务映射生成的,当前支持与服务编排或Script映射。 参数根据后台服务的入参、出参映射生成为inputParam和outputParam节点。 平台自动生成了run方法 ,用于执行模型关联的服务编排或者Script。 $model.ref("modelName").run(); 事件模型 事件模型是与后台事件的字段映射生成的,并且支持websocket刷新模型数据。 参数根据后台事件的字段映射生成。 平台自动生成了run方法 ,用于执行模型关联的服务编排或者Script。 $model.ref("modelName").run(); 除了在模型中定义的方法,AstroZero还提供了如下标准API: 获取模型数据:$model.ref("modelName").getData(); 设置模型数据:$model.ref("modelName").setData(); 设置模型字段值:$model.ref("modelName").setValue(key,value); 模型绑定 模型与前端组件的绑定分为值绑定和属性绑定,绑定会在指定组件上创建双向数据绑定。 典型的值绑定场景有:表单、表格、列表视图对应的model绑定,以及输入框、下拉框等基础组件对应的value绑定,类似Vue的v-model。 典型的属性绑定场景有:下拉框的选项值、步骤条的步骤值等,类似Vue的v-bind。 如图7所示的例子中,实现了表格DataGrid组件与值的绑定。 图7 数据绑定
-
设计视图 标准页面中预置了多种组件,在开发页面时,可以直接从左侧组件区域,将这些组件拖拽到右侧“页面内容”中。 图1 标准页面编辑界面(UI Builder) 配置组件属性 了解组件使用场景及配置方法 在配置使用组件前,可以将光标放在每个组件上后,组件右上角将显示帮助信息的问号图标。单击问号图标,即可进入该组件介绍页面,了解并学习AstroZero预置前端组件的使用场景及参数配置方法。 图2 组件帮助信息入口 选中组件,查看组件属性 在“设计视图”中,选中一个页面组件,可以在右侧“属性”页签,设置该组件的绑定数据、样式等属性,如图3所示。在设计视图中选中一个文本框,可以在右侧修改这个文本框的标签名、样式、绑定的数据模型等。 图3 设置组件的属性 页面及组件的事件代码 在“设计视图”中,选中任意组件,可以在右侧“事件”页签,设置组件的关联事件。例如,可以选择一个“按钮”,然后在按钮的“点击”事件中,添加相应的事件代码,实现在单击按钮后将界面输入保存到数据库中。 图4 编辑组件的关联事件 利用组件导航,快速选中组件 当选中某个组件时,页面上方会在组件导航上显示它的html标签层级。因此,在组件数量比较多,位置较为紧密时,可以直接单击标签层级,快速选择组件,也可以快速切换组件。例如,在上图的组件导航中单击“页面”,可以直接选中页面上的最外层页面组件。 利用组件树,快速选中组件 在组件数量比较多,位置较为紧密时,也可以单击页面右下角的“组件树”,展开组件树,在组件树中,直接单击标签层级,快速选择组件,也可以快速切换组件。 图5 利用组件树快速选中组件
-
样例代码解读 通过下面详细的脚本代码内容解读,使您对脚本有一个更具体的认识。 一般情况下,编写脚本的大致流程为: 按需引入平台标准库。 图2 引入平台标准库 定义出参、入参结构。 图3 定义入参 图4 定义出参 定义方法以及使用的对象。 图5 定义方法及使用对象 进行数据库操作。 图6 数据库相关操作 下面通过解读以下脚本样例,了解一个脚本的总体结构框架、编写要求。 import * as decimal from 'decimal'; @action.object({type: "param"}) export class ActionInput { @action.param({type: 'String', required: true, label: 'your name', description: 'please input your name'}) name: string; @action.param({type: 'Number', required: true, min: 1, max: 100, message: 'age must during [1, 100]'}) age: decimal.Decimal; @action.param({type: 'Date', pattern: 'yyyy-MM-dd'}) birthday: Date; @action.param({type: 'String', isCollection: true}) schools: string[]; @action.param({type: 'Boolean'}) married: boolean; @action.param({type: 'MyObject'}) obj: MyObject; } @action.object({type: "param"}) export class MyObject { @action.param({type: 'String'}) something: string; @action.param({type: 'Number'}) otherthing: decimal.Decimal; } @action.object({type: "param"}) export class ActionOutput { @action.param({type: 'String', isCollection: true}) greets: string[]; } @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(inarg: ActionInput): ActionOutput { console.log('name = ', inarg.name); console.log('age = ', inarg.age); console.log('birthday = ', inarg.birthday); console.log('schools = ', inarg.schools); console.log('married = ', inarg.married); console.log('obj = ', inarg.obj); let out = new ActionOutput(); out.greets = ['hello', 'hi', 'how are you', 'how old are you', 'long time no see']; return out; } } 上述示例脚本包括三部分内容: 导入标准库或其他模块。 示例中第1行,表示将使用平台提供的decimal库。 import * as decimal from 'decimal'; 除了平台预置标准库,还可以声明对其他自定义模块的引用。例如,已经提前开发了一个脚本circle,可以用如下方式加载。 import * as circle from './circle'; 定义输入、输出变量。 脚本可以有多个输入、输出参数,也可以没有。所有的输入或输出参数必须封装在一个class中,作为实例成员。 本例中,脚本有6个输入参数,被封装为ActionInput。每个参数都必须定义其参数类型,同时还可以定义是否必填、标签、最大值、最小值等可选属性。 @action.object({type: "param"}) export class ActionInput { @action.param({type: 'String', required: true, label: 'your name', description: 'please input your name'}) name: string; @action.param({type: 'Number', required: true, min: 1, max: 100, message: 'age must during [1, 100]'}) age: decimal.Decimal; @action.param({type: 'Date', pattern: 'yyyy-MM-dd'}) birthday: Date; @action.param({type: 'String', isCollection: true}) schools: string[]; @action.param({type: 'Boolean'}) married: boolean; @action.param({type: 'MyObject'}) obj: MyObject; } 因为第6个输入参数“obj”的参数类型为自定义对象,所以还需要给出“MyObject”的定义。 @action.object({type: "param"}) export class MyObject { @action.param({type: 'String'}) something: string; @action.param({type: 'Number'}) otherthing: decimal.Decimal; } 脚本有1个输出参数,被封装为ActionOutput。 @action.object({type: "param"}) export class ActionOutput { @action.param({type: 'String', isCollection: true}) greets: string[]; } 定义方法。 样例中,ActionDemo是外部调用的class,使用export导出。ActionDemo定义了一个action method,使用action.method装饰,表明调用脚本时从此方法入口。greet是class的实例方法,其输入、输出参数就是前面定义的ActionInput和ActionOutput。 在一个脚本文件里面,action.method只能使用一次。 @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(inarg: ActionInput): ActionOutput { console.log('name = ', inarg.name); console.log('age = ', inarg.age); console.log('birthday = ', inarg.birthday); console.log('schools = ', inarg.schools); console.log('married = ', inarg.married); console.log('obj = ', inarg.obj); let out = new ActionOutput(); out.greets = ['hello', 'hi', 'how are you', 'how old are you', 'long time no see']; return out; } } 脚本编辑页面不支持单步调试,样例里的console.log可实现在日志里打印过程输出,方便代码调试。
-
公共接口 公共接口是对脚本、服务编排和对象进行再包装的一种方式。将创建的脚本、服务编排、对象包装成一个新公共服务,可以使得接口的URL地址的表达形式更规范,方便让前端页面或第三方系统进行调用。 因此,在创建完后台逻辑后(服务编排、脚本、对象),就需要先将此接口包装成标准的公共接口,才能被调用。本节中创建了2个业务脚本,因此需要对应创建2个公共接口,供前端页面调用。 创建公共接口的入口:在APP视图下,单击下方“服务”,即可进入公共接口创建页面。 图1 创建公共接口入口 图2 公共接口基本信息 图3 公共接口URL 父主题: 背景和原理
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格