山东大学软件工程项目实训-1.5 项目稿件 关于potato-comp/mid部分(operation层)的实现手稿

本文详细阐述了一种用于组件配置的自定义语言设计,包括JSON格式的配置方式、变量声明、操作语句和数据库交互。讨论了语言的弱类型特性、查询手段、条件分支以及错误处理策略。此外,还提出了对Map操作、FindOne函数、Order参数、$Presetinclude选项、GenerateID工具函数等的扩展需求,旨在创建简洁而实用的查询语言。
摘要由CSDN通过智能技术生成

关于前台配置如何生效的做法

配置一个组件 说明其需要的预设props

这就需要有类型检验这样的服务

那么该如何声明呢

以json的形式加以表现

如App.vue: {

"name": "233";

"got:": true

"id": 339,

"onLogin": "Request.Start" (以Request起始的代表请求),

"onSwitch": "Router.Ace"(代表切换到Ace页面)

};

Loading是不可配置的

这是一个组件的配置方法 那么一个页面呢

也可以以json的形式来配置

"kotlin_info": <$Route>{

$Comp: {

App.vue: {}….

}

}

被配置到的组件会被顺次排布下去

再来考虑一下需要的伪操作语句

事实上 这样就是在定义接口了

首先 auth和 unauth本身就可以代表一个信息

是否需要ctx.userID 这样起始操作中可以使用

$userID来访问这个需要的userID

如果不是unauth底下 会造成报错

整体的模板也是json

auth和unauth

然后格式如下

$Auth: {

Login: {

Params: {

Username: "string" ( string | boolean | number ),

},

// response是自动推导的

"Program": [

""

"$Return => 233 "

],

同Param( 本程序只接受string|boolean|number 3种值 )

"Response": [

]

}

}

这里需要联想一下常用的几种查询手段

以及一些基本的概念

预设目标是:

  1. 弱类型的语言
  2. 有变量这个概念
  3. 查询得到的结果可以被赋值给"变量"
  4. "变量"可以被当作"条件"参与查询

  1. 有数据库这个概念 以Entity键值为数据库代号

如"User"

  1. "条件"包含的是若干的等式 暂不包含不等式

    7.   有 if endif和 beginif等关键字 可以实现条件分支

当然 这也就意味这或包含逻辑判断符号( == / < / != / > / >= / <=  )

变量之间的比较关系应当是成立的

基于以上的矛盾 我会发现 第7条在大多数查询中绝对是需要的 登录和注册就需要这样的条件 另外 该语言的优势应当是在"简单"查询上 也就是说 计算和比较不能作为长处

简短的写出一个查询语句才算

基于这点思路 不如把这个语言作为一个硬插入式的语言

 "for item of  array {

#$Kol=>&User.Delete|userID = item.id|name=5#"

所以这个语言的基本规范就可以定出来了

1.初始版本只包含3种操作

Find, Delete, Insert

2.可以声明变量 变量可以在下文的js中被访问到

Js的变量也可以在此处访问到 声明变量使用$xx => 语句

3.声明的变量默认都是可变的

4.条件式的格式为 (Delete|Find|Insert)|xx=<变量/js变量|值>|…;

5.该语言中的额外插入语句以#为起始和结束符

完全可以混写在js中 但是此处js的普通字符串中不可包含"#"

否则会导致编译错误

6.$Return=>是一个特殊的变量 用于声明该接口的返回值

实际上等同于ctx.body=xxx;

7.访问数据库的话以&开头 实际上此处并无左右 但是需要加上一个检查

日后功能扩展中极小可能会再次用到User和变量复用的情况

Issue2

需要一个追加Ver 事实上 Map是很经常被用上的

所以应新增一个Map语法 Map的话本质上应该是一个函数的形式

具体语法日后再说

这是一个特殊的概念 叫做(命令)

可以参考的实现语法

#$Result=>^Map(result, userID, nick)#

Issue3

需要一个FindOne函数

Issue4

$Param和$Return应该设为特殊参数

js里能用 #语句里也能用

Issue5

可以试图加上.Order(keyName)语法

order作为一种特殊的参数更为妥当 *order=(id, name , text)

Issue6可以试试findIn语法

Issue6

可以试图加上$Presetinclude选项

用来增加初始Import

Issue7

可以添加工具函数GenerateID

来产生一个随机的ID值

Issue8

添加一个初始化语句包

采用#语法

(只不过没有注入$Return $Params $UserID 这些变量)

Issue9

关于报错

以前的报错就先不改了

但是之后的报错需要遵照一个原则:

分阶段的大块报错

也就是 分 编译时 运行时 输出时

再辅以小段的console.error()

这样能够更有效的定位错误

变量替换 => 方法收集+参数解析 => 生成语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值