Vue.NetCore开发框架最佳实践
低代码开发框架Vue.NetCore的最佳实践,记录了开发过程中遇到的各种坑和各种实际代码,此框架使用人数少,懒得做脱敏处理,直接改成VIP可见
链接
后台API文档
http://localhost:9991/index.html#/swagger
VOL框架学习(一)从零开始搭建项目
https://blog.csdn.net/qq_38769403/article/details/120532582
VOL框架学习(二)使用代码生成器生成菜单和页面
https://blog.csdn.net/qq_38769403/article/details/120646367
Vol.vue前后端发布笔记
https://blog.csdn.net/weixin_43952332/article/details/125025088
ASP.NET VUE快速开发框架VolCore集成fastreport报表示例
https://www.bilibili.com/s/video/BV1K34y1e7dv
代码生成器
http://v2.volcore.xyz/document/coder
遇到的坑
Cannot read properties of null (reading ‘pickAlgorithm‘)
解决方案:清除缓存npm cache clear --force之后再重新安装依赖npm install
日志批量写入数据时出错:Access denied for user ‘chujiao’@‘123.119.234.162’ (using password: YES)
解决方案,确认数据库连接字符串可用,且用户权限配置正确。
增加链接
到网站外部的链接:
window.open("https://github.com/cq-panda/Vue.NetCore");
可以使用window.open方法,这个方法可以带第二个参数,_blank, _self, 分别是新开窗口或者是在本窗口打开。
网站内部链接,则是打开一个tab,
- 在Index,vue中,可以加到links中
{ text: '工单', path: '/formSubmit?id=0431a578-bfc9-407f-b95e-321c350f10cb', id: -2, query: { id: "0431a578-bfc9-407f-b95e-321c350f10cb" }},
注意,如果是低码页面,需要加query参数
2. 在页面的Button中,可以用tabs的open方法
this.$tabs.open({
text: '提交新工单',
path: '/formSubmit',
query: { id: "0431a578-bfc9-407f-b95e-321c350f10cb" },
});
注意,如果有参数(低码页面),需要增加query字段
增加API接口
在VOL.WebApi\Controllers\Douyin\Partial\DaiGuanController.cs下增加接口方法即可
[HttpPost, Route("Add2"), AllowAnonymous]
public ActionResult Add2([FromBody] SaveModel saveModel)
{
return base.Add(saveModel);
}
常用的属性为:
● AllowAnonymous
● FixedToken
需要在方法内部实现数据检查以及数据保存等处理。
在API接口中操作数据库
在VOL.WebApi\Controllers\Douyin\Partial\Hour24RecordController.cs中增加方法,即可增加一个API接口。
[HttpGet, Route("GetMainPageIndex")]
[AllowAnonymous]
public ActionResult GetIndex()
{
string sql= $"SELECT b.Accont, c.Record, a.Video, a.BoFang, a.DianZan, a.PingLun FROM (select COUNT(ID) AS Accont FROM DaRen) AS b, (SELECT COUNT(ID) AS Record FROM DaiGuan) AS c, (SELECT COUNT(ID) AS Video, max(BoFang+0) AS BoFang, max(DianZan+0) AS DianZan, max(PingLun+0) AS PingLun from Hour24Record) AS a;";
var re = DBServerProvider.SqlDapper.QueryFirst<MainPageIndex>(sql, null);
string jsonstr = JsonConvert.SerializeObject(re);
//{"Accont":51,"Record":44196,"Video":928,"BoFang":4265,"DianZan":144,"PingLun":19}
return Content(jsonstr);
}
在API接口中新增记录
有的时候是在API接口中新增表记录的,会发现有些字段明明已经赋值了,就是不能随着新建而存到数据库中,而其它的值是可以的,也没有错误返回。
原因:
VOL中的Add接口的默认实现中,如果一个字段没有可编辑属性,就不能通过新增接口将值存入到数据库,即使有值,也会将该字段删除,因而就不能保存
解决:
在代码编辑器中,配置该字段的编辑选项,生成代码,上传重新运行,即可。
修改GridView默认排序
在代码编辑器的“排序字段”中填写需要排序字段的英文名称,生成VUE代码,上传即可
二次开发代码添加位置:
如果要增加新的页面
- 在“src\views\douyin\farhill.douyin\”目录下增加新的VUE文件、
- 在“src\router\viewGird.js”中增加对应的文件路由
- 在后台增加对应的菜单
如果要在GridView页面上增加页面显示内容
- 如果未涉及公用的组件,在对应的扩展文件“src\extension\douyin\farhill.douyin\xxxx.js”中直接写代码
- 如果内容可以在多个页面公用,在“src\extension\douyin\farhill.douyin\”下增加组件VUE文件,并在js文件中引用
Swagger
直接在swagger上测试带验证的接口
- 获取tocken
登录前台网站,打开开发者工具,寻找任何一个xhr请求,例如
在 http://127.0.0.1:9991/api/user/login 中获取请求的tocken - 再swagger中附加验证码
点击swagger右上方Authorize,输入上述tocken,这时每个API旁的锁图标变成关闭状态, - 在Swagger上测试
可以在下方的任何需要身份认证的api上直接进行测试。不用开Postman了。
Swagger 上server地址不正确的问题
在修改了后台的port端口号之后,发现在线的Swagger地址并没有改变,
参考“https://www.cnblogs.com/weihanli/p/servers-in-swagger.html”
端口和地址是转发协议的头部给出的,而Nginx将后台做了一次HTTPS的代理,进行过转发,检查Nginx文件,发现果然,9991是Nginx中配置的转发地址,也需要进行响应的修改。
将Swagger站变成https协议的方法
使用命令certmgr.msc查看下本机部署的SSL证书,如果证书失效或者没证书:
-
安装证书的命令
dotnet dev-certs https
dotnet dev-certs https --trust -
在VOL.WebApi\Program.cs中,修改为使用https协议:webBuilder.UseKestrel().UseUrls(“https://*:9991”);
Tips:要注意仅仅是Swagger的网站变成Https协议,后台输出的API依然需要在Nginx中配置才能变成Https协议的。
这个方法暂时不行,https的端口是443,不是其它的端口
部署
迁移到Https的设计
- 后台保持http: 9991不动
- 生成容器
- 部署到系统9991端口上
- 申请新的域名,如a.xxx.com
- 在Nginx中将a.xxx.com,反向代理到http: 9991
- 前端也迁移到Https,用新域名,如www.xxx.com
- 在Nginx中将www.xxx.com/api/,反向代理到http: 9991
- 将前端https地址https://www.xxx.com增加到后台配置cors中
- 将后台地址a.xxx.com更新到前端文件“Vol.Vue3版本\src\api\http.js”中的“axios.defaults.baseURL”
- 重新编译,部署
迁移到Https之后的Nginx配置:(除了转HTTPS,反向代理,还要加解决跨域问题的add_header代码)
server {
listen 443 ssl;
server_name mytool.x.top;
ssl_certificate /www/server/nginx/ssl/9231249_mytool.x.top.pem;
ssl_certificate_key /www/server/nginx/ssl/9231249_mytool.x.top.key;
add_header Access-Control-Allow-Origin *;
root /home/www.mytools;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
location ^~ /api/
{
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
return 204;
}
proxy_pass http://127.0.0.0:19991;
}
access_log /www/wwwlogs/access.log;
}
server {
listen 443 ssl;
server_name m.x.top;
ssl_certificate /www/server/nginx/ssl/9235229_m.x.top.pem;
ssl_certificate_key /www/server/nginx/ssl/9235229_m.x.top.key;
location / {
proxy_pass http://127.0.0.0:19991;
}
}
更多推荐


所有评论(0)