关于前台配置如何生效的做法
配置一个组件 说明其需要的预设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": [
]
}
}
这里需要联想一下常用的几种查询手段
以及一些基本的概念
预设目标是:
- 弱类型的语言
- 有变量这个概念
- 查询得到的结果可以被赋值给"变量"
- "变量"可以被当作"条件"参与查询
- 有数据库这个概念 以Entity键值为数据库代号
如"User"
- "条件"包含的是若干的等式 暂不包含不等式
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()
这样能够更有效的定位错误
变量替换 => 方法收集+参数解析 => 生成语句