云服务器内容精选

  • 服务编排相关 初始化Flow API:context.flow(flowName) 入参:flowName表示Flow名称。 出参:Flow 示例: // 初始化Flow let _flow = context.flow("flowName") 设置Flow版本号 API:_flow.version(version: string) 入参:version表示flow版本号。 出参:Flow。 示例: // 设置Flow版本号 _flow.version("0.0.1") 运行Flow API:flow.run(params: Object) 入参:params,输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 适用于一次调用,Flow即完成的场景 // 运行Flow _flow.run({ param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 启动Flow API:_flow.start(params: Object) 入参:params,输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 以下适用于多步操作的业务场景 _flow.start({ param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 执行Flow下一步 API:_flow.next(interviewID: string, params: Object) 入参:interviewID为Flow运行实例ID,params为输入参数。 { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 下一步 _flow.next("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 返回Flow上一步 API:_flow.back(interviewID: string, params: Object) 入参:interviewID为Flow运行实例ID,params为输入参数。 { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 上一步 _flow.back("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 正常完成Flow API:_flow.finish(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 完成Flow _flow.finish("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 恢复Flow运行 API:_flow.resume(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 恢复Flow _flow.resume("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 删除Flow实例 API:_flow.terminate(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 删除Flow _flow.terminate("{{ interviewID }}", { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } }).then(function (res) { // TODO: Youre business logic })
  • 服务请求 调用服务的API API:context.service('{{url}}').run(_inputParams) 入参:“url”为服务接口的URL,在APP或者BO视图下单击“服务”,可查看到封装Flow、脚本或者对象操作接口的URL。“_inputParams”为输入参数。 示例: var _inputParams = {}; // 调用服务 context.service('{{ url }}').run(_inputParams).then(function(response) { // TODO: Your business logic });
  • BPM相关(原子级) context.$bp和context.$bpm的区别在于后者保证了操作的原子性。例如,调用context.$bp.submitTask (variables:object)数据提交成功时,会有弹框提示且点击“确定”按钮会自动关闭当前页面。而调用context.$bpm.submitTask (variables:object)提交时,只会提交任务而不会有后续的弹框提示等操作;并且当不在BPM上下文环境中提交任务时(即当BPM实例没有运行时提交任务),会有相关提示信息。 推荐使用context.$bpm。 获取参数信息 API:context.$bpm.loadVariables() 入参:无。 出参:参数对象。 示例: context.$bpm.loadVariables().then(function (data) { context.$model.ref("loanRequestData").setData(data.result.LoanRequestData); context.$model.ref("statusUpdates").setData(data.result.Status); context.$model.ref("negotiateCount").setData(data.result.NegotiateCount); }); 设置BPM中的变量 API:context.$bpm.putVariables (variables:object, instId: string) 入参:“variables”为参数对象,必选;“instId”为实例ID,可选。 出参:执行结果。 示例: context.$bpm.putVariables({ LoanRequest: "test" }); 数据提交到BPM API:context.$bpm.submitTask (variables:object) 入参:“variables”为参数对象,必选。 出参:无。 示例: var data = context.$model.ref("loanRequestData").getData(); context.$bpm.submitTask({ LoanRequest: data });
  • 模型相关 获取data model= model_1实例的数据。 API:$model.ref("model_1").getData() 设置data model= model_1实例的数据,入参data和model_1定义结构一致,当改变整个模型数据时使用。 API:$model.ref("model_1").setData(data) 设置data model= model_1实例的字段值,只改变已有模型数据某个字段值时使用。 API:$model.ref("model_1").setValue(field, value)
  • Tab页相关 仅支持平台的运行态使用,可使用portal框架暴露的API来实现,平台运行态会暴露一个 bingo 全局变量供使用,标准页面由于在 iframe 内,需要使用 window.parent.bingo 访问: 打开tab页,返回tabId。 API:openTab(name, url) 切换tab页。 API:switchTab(tabId) 关闭指定Tab页。 API:removeTab(tabId) 当前Tab页。 API:getCurrentTab() 默认Tab页。 API:getDefaultTab() 打开指定Tab。 API:open({type:'Tab', id: tabId}) 打开指定Tab。 API:openTabByMenuName(menuName) 返回上一个路由。 API:back()
  • BPM相关(非原子级) 获取参数信息 API:context.$bp.loadVariables() 入参:无。 出参:参数对象。 示例: context.$bp.loadVariables().then(function (data) { context.$model.ref("loanRequestData").setData(data.result.LoanRequestData); context.$model.ref("statusUpdates").setData(data.result.Status); context.$model.ref("negotiateCount").setData(data.result.NegotiateCount); }); 设置BPM中的变量 API:context.$bp.putVariables (variables:object, instId: string) 入参:“variables”为参数对象,必选;“instId”为实例ID,可选。 出参:执行结果。 示例: context.$bp.putVariables({ LoanRequest: "test" }); 数据提交到BPM API:context.$bp.submitTask (variables:object) 入参:“variables”为参数对象,必选。 出参:无。 示例: var data = context.$model.ref("loanRequestData").getData(); context.$bp.submitTask({ LoanRequest: data });
  • 其他 启动定时任务 API:context.timerTask(_timerHandler, _timeout, _executionCondition); 入参:分别是定时执行的业务逻辑、任务时间间隔、执行条件。 示例: // 任务间隔时间,毫秒 var _timeout = 1000; // 定时执行业务逻辑 var _timerHandler = function() { // TODO: Your business logic }; // 执行条件 var _executionCondition = function() { return true; }; // 启动定时任务 context.timerTask(_timerHandler, _timeout, _executionCondition);
  • 页面类 获取当前页面 API:context.$page.current 当前页面绑定的数据模型 API:context.$page.getModel() 页面URL参数 API:context.$page.params.paramName 示例: // 假设当前页面URL为:https://localhost:8080/besBaas/page#/std_1?a=1&b=2, 则获取URL参数方式如下: let paramA = context.$page.params.a let paramB = context.$page.params.b 在新的导航条打开页面 API:context.$page.open(url: string, queryString: string) 入参:url表示页面地址。queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 示例: context.$page.open('https://localhost:8080/besBaas/page#/std_2', 'a=1&b=2') 在当前导航条打开页面 API:context.$page.load(url: string, queryString: string) 刷新当前页面 API:context.$page.reload() 在新的导航条打开标准页面 API:context.$page.openStdPage(pageName: string, queryString: string) 入参:pageName表示页面名称。queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 示例: context.$page.openStdPage('std_2', 'a=1&b=2') 在当前导航条打开标准页面 API:context.$page.loadStdPage(pageName: string, queryString: string) 在新的导航条打开高级页面 API:context.$page.openAdvPage(pageName: string, websiteName:string, queryString: string) 入参:pageName表示页面名称。websiteName表示为高级页面的站点名称,queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 在当前导航条打开高级页面 API:context.$page. loadAdvPage (pageName: string, websiteName:string, queryString: string) 关闭当前页面 API:window.close() 图2 关闭页面语句
  • 对象操作 获取对象 API:context.object(objectName) 入参:objectName,对象名称。 出参:对象。 示例如下: let _object = context.object("objectName") 查询对象所有数据 API: _object.query().then(function (response) { // TODO: Your business logic }) 查询满足条件数据 例如,查询满足name = 'test' 条件的对象数据,代码如下: let _condition = {conjunction: 'AND', conditions: [{ field: 'name', operator: 'eq', value: 'test' }] } _object.query({condition:_condition}).then(function (response) { // TODO: Your business logic }) 统计满足条件的对象数据数量 API:_object.count(_condition) 其中,“_object”为对象名称。 入参:_condition,查询条件,可选。 出参:Promise。 示例: // 统计所有数据 _object.count().then(function (response) { // TODO: Your business logic }) // 统计满足条件数据 _object.count(_condition).then(function (response) { // TODO: Your business logic }) 查询满足条件数据, 且只查询部分字段 let _fields = 'id,name' _object.query({condition:_condition}, _fields).then(function (response) { // TODO: Your business logic }) 查询满足条件数据, 且只查询部分字段, 支持分页和排序 例如,根据name字段降序排序,跳过前10条记录分页,每页最多显示10条数据。示例代码如下: let _fields = 'id,name' let _options= {'skip': 10,'limit': 10,'orderby': [{'field': 'name','order': 'desc'}]} _object.query({condition:_condition}, _fields, _options).then(function (response) { // TODO: Your business logic }) 通用对象数据查询 API:_object.query({condition:_condition}, fields: string) 入参:_condition,查询条件,可选,参考如下结构。 { conjunction: 'AND', // 条件连接符,AND 或 OR conditions: [ { field: 'name', // 条件字段 operator: 'eq',// 条件比较符 value: 'test' // 条件值 }, { condition: { // 嵌入条件 conjunction: 'OR', conditions: [ { field: 'status', operator: 'eq', value: '1' }, { field: 'status', operator: 'eq', value: '2' } ] } } ] } 以上示例表达内容为:name = 'test' && ( status = '1' || status = '2') fields:查询字段(只返回指定的字段),多个字段以逗号分割,可选。 出参:Promise。 插入对象数据,支持批量操作 API:_object.insert(data: Object[]) 入参:data,待插入数据,对象数组。 出参:Promise,返回新插入数据的记录ID。 示例: let data = [{ name: 'test', label: 'test' }] _object.insert(data).then(function (response){ if (response && '0' === response.resCode) { let _id = response.result[0].id}}) 根据记录ID更新对象数据 API:_object.updateByID(_id: string, data: Object) 入参:id表示记录ID,data表示对象更新内容。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID更新数据 _object.updateByID(_id, { label: 'test2' }).then(function (response) { // TODO: Your business logic }) 根据记录ID查询对象数据 API:_object.queryByID(_id: string) 入参:id表示记录ID。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID查询单条数据 _object.queryByID(_id).then(function (response) { // TODO: Your business logic }) 根据记录ID删除对象数据 API:_object.deleteByID(_id: string) 入参:id表示对象记录ID。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID删除数据 _object.deleteByID(_id).then(function (response) { // TODO: Your business logic }) 根据记录ID批量查询对象数据 API:_object.batchQueryByIDs(_ids: string, fields: string) 入参:ids表示记录ID,多个ID以逗号分割。fields表示查询字段,多个字段以逗号分割,可选。 出参:Promise。 示例: _object.batchQueryByIDs('id1,id2,id3').then(function (response) { // TODO: Your business logic }) 根据记录ID批量删除对象数据 API:_object.batchDeleteByIDs(_ids: string) 入参:ids表示记录ID,多个ID以逗号分割。 出参:Promise。 示例: _object.batchDeleteByIDs('id1,id2,id3').then(function (response) { // TODO: Your business logic }) 批量插入或更新对象数据 API:_object.batchUpsert(data: Object[]) 入参:data,待插入或更新的数据对象,包含id时表示进行更新。 出参:Promise。 示例: let data = [{id: '1538033158273005', label: 'test'}, {name: 'test', label: 'test'}] _object.batchUpsert(data).then(function (response) { // TODO: Your business logic })
  • 表单类 获取当前表单 API:context.$component.form 如果当前组件为表单,则直接返回。否则,根据组件上下文向上查找最近的表单组件。 根据组件Key值获取表单 API:context.getFormByKey(_formKey: number) 入参:表单组件的Key值,类型为number。 校验整个表单 API:_form.formValidate() _form为已获取的表单组件,返回promise。 API:_form. formValidateUnPromise 非promise,返回true/false。 表单的单字段校验: API:_form.validateField(prop, callback) 参数prop为需校验的属性,参数callback为检验完回调函数,返回错误信息。 示例: _form.validateField("name",function(errorMsg){ console.log("validate field", errorMsg) }); 表单重置 API:_form.resetFields() _form为已获取的表单组件。 表单提交 API:_form.formSave() _form为已获取的表单组件。API内部实现已先进行表单校验,校验成功后进行提交保存操作。
  • 表格类 获取当前表格 API:context.$component.table 如果当前组件为表格,则直接返回。如果当前组件有关联的表格,则返回对应的表格(如表格查询条件、分页等)。否则,根据组件上下文向上查找最近的表格组件。 获取查询条件 API:_table.getCondition() _table为已获取的表格组件,返回表格绑定的查询条件。 设置查询条件 API: // 先获取条件,再进行赋值 var condition = _table.getCondition(); // 字段满足单个条件,默认操作是contains condition.queryInfo = { "fieldName": "1" } // 字段满足单个条件,使用自定义操作 condition.queryInfo = { "fieldName": { operator: "contains", value: "1" } } // 字段满足多个条件 condition.queryInfo = { "fieldName": [{ operator: "contains", value: "1" }, { operator: "contains", value: "2" }] } // 分页条件 condition.pageInfo: { "pageSize": 10, "curPage": 1 } 其中,“_table”为已获取的表格组件。 入参:表格查询条件。 执行查询 API:_table.doQuery() 其中,“_table”为已获取的表格组件。 初始化行数据 API:_table.rowInit() 其中,“_table”为已获取的表格组件,初始化一条新的行数据,此方法执行后,数据并未添加到表格。 添加行数据 API:_table.addrow(newRowData: object) 其中,“_table”为已获取的表格组件,此方法将初始化好的行数据添加到表格,此方法执行后,数据仅在前端表格保存,并未持久化到后端。 入参:行数据。 获取表格当前选中的行数据 API: _table.getSelectedData() 其中,“_table”为已获取的表格组件。 删除表格行数据 API:_table.doDelete(rows: array) 其中,“_table”为已获取的表格组件。 入参:表格行数据列表。 示例: // 当前表格 let _table = context.$component.table // 获取当前选中的行 let rows = _table.getSelectedData() // 删除选中行 _table.doDelete(rows) 获取表格修改的数据(新增、修改、删除) API:_table.getOperatedData() 其中,“_table”为已获取的表格组件。 保存表格数据 API:_table.doSave(operatedData: object) 其中,“_table”为已获取的表格组件,此方法将当前表格做的修改操作进行持久化操作。 入参:修改的表格数据。 示例: // 当前表格 let _table = context.$component.table // 获取修改的数据 let operatedData = _table.getOperatedData() // 提交表格修改 _table.doSave(operatedData)
  • 脚本操作 初始化Script API:context.script(scriptName) 入参:scriptName,表示Script名称。 出参:Script 示例: // 初始化脚本 let _script = context.script('{{ scriptName }}') 运行Script API:_script.run() 入参:无。 出参:Promise。 示例: // 初始化脚本 let _script = context.script('{{ scriptName }}') // 运行脚本 _script.run().then(function(response) { // TODO: Your business logic })
  • 组件类 获取当前组件 context.$component.current 根据KEY获取组件 API:context.$component.get(_compKey: number) 入参:组件KEY,类型为number。 出参:Component。 示例如下: let _compKey = 1546395654403000 let _component = context.$component.get(_compKey) 根据名称获取组件 API:context.$component.get(_compName: string) 示例如下: let _compName = 'input_1' let _component = context.$component.get(_compName) 获取组件绑定的模型 API:_component.getDataModel() _component为当前操作的组件。 示例如下: let _component = context.$component.current let _model = _component.getDataModel()
  • 脚本中预置的API AstroZero平台的脚本引擎采用TypeScript语言。脚本执行时,TypeScript语言会被翻译成JavaScript语言,由JavaScript引擎执行。 在JavaScript es5的官方标准库外,AstroZero还扩展了10+预置标准库(即预置API),帮助您更高效地开发脚本,标准库说明如表1所示。有关预置标准库的详细说明,请参考脚本标准库。 库的使用方法举例: import * as http from 'http'; 表1 标准库说明 标准库名称 说明 sys 提供系统层面的操作,例如获取系统参数值、提供alarm脚本库在脚本里埋点上报告警。 context 脚本执行的上下文,例如获取当前租户ID、获取当前登录用户ID等。 action 定义脚本的输入输出方法,以及调用脚本的方法。 buffer 操作二进制缓存区,例如将缓冲区内容转换为字符串。 setup 对系统对象Standard Object的增、删、改、查。 db 对自定义对象Customer Object的增、删、改、查。 sql 执行sql语句,目前只支持执行select查询语句。 bo 对Business Object的增、删、改、查。 meta 操作object的元数据,例如获取字段名称、获取字段长度。 http http或者https操作。 iconv 将字符串转为GBK、GB18030、GB2132或ISO8859_1编码格式,或者解码字符串。 crypto 加密操作,包含对哈希、HMAC、加密、解密、签名及验证的封装。 decimal 将从http请求或从数据库中查询出来的number类型值,转换成Decimal类型,并能进行加、减、乘、除等数学运算。 excel 操作Excel文件,例如生成Excel文件。 text 操作文本,例如将文本转换为二进制。 xml 操作XML文件,例如读取XML文件内容。 uuid 生成全局唯一标识。 父主题: 预置API
  • 组件 在开发自定义组件时,需要定义“组件名.js”文件,该文件为组件逻辑文件,是整个组件的渲染核心JS,在组件编辑状态和页面最终的发布运行态都会被加载执行。主要包含的预置API说明,请参见表1。 表1 组件名.js中预置API说明 分类 API及说明 组件实例预置API init方法:主要包含组件渲染需要初始化数据的入口函数。 render方法:负责整个组件渲染的业务逻辑方法。 getConnectorProperties:获取桥接器属性的配置值。 getConnectorInstanceByName:通过桥接器的变量名称获取桥接器实例,其中“APIConnector”类型为String,表示桥接器的变量名称。 ConnectorIns.process(renderCbk, errCbk):通过桥接器实例调用process函数,主要作用为发起调用服务的请求和处理返回结果信息。 在通过process函数发起请求前,需设置桥接器实例的requestParams属性为请求的参数,例如:ConnectorIns.requestParams = param; 参数renderCbk,类型为Function,当返回结果信息后调用该函数,用于处理返回信息。 参数errCbk,类型为Function,调用该函数来处理错误。 ConnectorIns.query(param):通过桥接器实例调用query函数,主要作用为发起调用服务的请求和处理返回结果信息,参数说明如下: param:请求参数。 其返回结果为Promise对象。 getProperties:用于返回该组件的自定义属性值。 开发Widget时,可以给组件自定义属性,在开发界面可对这些属性进行配置,通过getProperties方法可返回自定义属性值。例如,var properties = thisObj.getProperties()。 getContainer:用于返回渲染该组件的容器dom节点。 代码示例:var elem = thisObj.getContainer (),然后通过jquery去查询组件中某个dom节点时,可通过$("#id", elem)的方式来获取。 getWidgetBasePath:用于返回该组件静态资源的根路径。 例如,某个组件的静态资源路径为“https://10.10.10.1:12900/default/0000000000NABzEjpNIH/assets/bundle/widget/172a6056501-a6f8ce1f-2ed9-4a9a-b883-251aaac14e0a/v1591923270914/test0609.js”,执行thisObj.getWidgetBasePath()返回“https://10.10.10.1:12900/default/0000000000NABzEjpNIH/assets/bundle/widget/172a6056501-a6f8ce1f-2ed9-4a9a-b883-251aaac14e0a/v1591923270914” 。 getMessages:返回该组件国际化配置文件中定义的国际化文件内容,需要配置vue和vueI18n使用。 例如,开发组件时定义了messages-en.json和messages-zh.json国际化文件。thisObj.getMessages()返回的就是这两个文件中定义的国际化内容。 hideWidget:隐藏该组件的dom结构,预览时调用该方法可以隐藏Widget。 例如,执行thisObj.hideWidget()方法,隐藏该组件的dom结构。 showWidget:显示该组件的dom结构,预览时调用该方法可以展示Widget。 例如,执行thisObj.showWidget()方法,显示该组件的dom结构。 SITE_ROOT_PATH:为AstroZero预置的参数,用于获取当前站点URL地址的根路径。站点和应用是一对一的关系,当创建应用时,系统默认会创建并分配一个站点。 假如,某个页面的URL地址为“https://10.10.10.1:12900/magno/render/cool__app_0000000000NABzEjpNIH/page1”,则使用SITE_ROOT_PATH获取的根路径为“/magno/render/cool__app_0000000000NABzEjpNIH”。 triggerEvent:用于触发事件,参数说明如下: eventName:指定触发的事件名称。 {}:为事件触发时传递的参数赋值,例如{param: value}。 Studio对象预置API Studio.registerWidget:用来定义组件。 Studio.registerConnector:用来定义桥接器。 Studio.registerEvents:用于注册事件,只有通过此API注册后的事件才会在组件的事件列表中展现。 thisObj:当前组件实例对象,指为该组件注册事件。 "eventName":事件名称,应该与触发事件API中的第一个参数保持一致。 "Event Label":事件标签名,在事件列表中展示的事件标题。 []:定义该事件触发时传递的参数模型,例如[{"name": "param"}] 。 Studio.registerAction:用来注册动作。只有通过此API注册后的事件,才会在组件的动作列表中展现。 thisObj:当前组件实例对象,指为该组件注册动作。 actionName:动作名称。 Action Label:动作标签名,在动作列表中展示的动作标题。 []:事件触发时传入的参数。 $.proxy(this.receiveActionCbk, this):该动作的回调函数,在回调函数中定义该动作的执行逻辑。 []:此参数在开发过程中置为空数组即可。 Studio.registerRouter:用来定义路由。 Studio.inReader:判断当前页面状态是开发态或预览态。其中,“true”表示在预览态(即运行态),“false”表示在开发态。 StudioToolkit.getCatalogProperties():用于获取当前站点的元数据。 magno对象预置API savePropertiesForWidget(props):用于在开发态中保存当前组件的高级设置属性信息,参数为要设置的相关属性集对象。 参数props示例: { "prop1": "value1", "prop2": ""value2" } HttpUtils工具类预置API AstroZero平台内置了HttpUtils工具类,预置API如下: HttpUtils.getCookie:用于获取某个cookie的值。 代码示例:HttpUtils.getCookie() HttpUtils.setCookie:用于设置cookie的值。 代码示例:HttpUtils.setCookie("key","value") HttpUtils.getI18n:返回一个Vue18n的实例,配合Vue和VueI18n使用。该Vue18n实例可以在new一个Vue实例时赋值为i18n参数。 代码示例:HttpUtils.getI18n({locale: HttpUtils.getLocale(), messages: thisObj.getMessages()}) HttpUtils.getCsrfToken:通过ajax的方式去调用平台的接口时使用。如果使用平台桥接器的方式,平台会自动在请求header中,添加csrf-token头。 HttpUtils.getCsrfToken(function(csrfToken) { $.ajax({ …. headers: { CS RF-Token: csrfToken }, }) }) HttpUtils.refreshToken:用于手动刷新页面的accesstoken,通常用在执行退出逻辑时,执行该方法刷新页面的access token。 HttpUtils.getUrlParam:用于获取查询字符串中的参数。 例如,某个页面的URL为“https://10.10.10.1:12900/magno/render/cool__app_0000000000NABzEjpNIH/page1?param=1”, 通过执行HttpUtils.getUrlParam("param")返回该参数的值“1”。 HttpUtils.getLocalStorage:用于获取某个localStorage的值。 代码示例:HttpUtils.getLocalStorage("key") HttpUtils.setLocalStorage:用于设置某个localStorage的值。 代码示例:HttpUtils.setLocalStorage("key","value")