ssm,springboot代码生成器——添加vue.js支持,mac系统支持

  距离上次更新已经过去一周时间,最近公司事比较多,这两天抽出空来又对代码生成器做了进一步的完善,本次更新主要添加了mac系统的支持,因为有不少朋友问有没有mac版本的。。同时添加了对vue.js的支持,vue现在也是前台比较火的框架之一,这一点还是很有必要的,同时修复了数据库连接失败会卡死的bug,让我们来看一下更新的具体内容吧。

mac系统支持

  mac系统不像window可以运行exe程序,jar包打包成app又过于繁琐,所以在这里采用的是把mac版的jdk以及入口程序的jar包存放在同一目录,然后新建command文件,在文件中通过shell命令来执行jar包程序,目录如下:


  coreLib里放的就是jre以及相关的jar包文件了,run.command的内容如下所示:

bash $(cd `dirname $0`; pwd)/coreLib/run.sh

  内容也很容易理解,执行当前目录下的coreLib下的run.sh脚本
  看一下run.sh的内容,如下:

#!/bin/bash
$(cd `dirname $0`; pwd)/bin/java -jar $(cd `dirname $0`; pwd)/lib/runCode.jar

  这是真正需要执行的jar包,通过java -jar命令就可以去执行runCode.jar,然后代码生成器就可以运行起来了,因为java本身是跨平台的语言,所以代码跟windows基本没什么不同,唯一有区别的就是路径了,这里我把mac生成代码的路径定死在了桌面上,因为别的路径基本都会报权限不够的错误,mac上的效果如下,跟window基本没有区别:


vue.js支持

  vue.js是目前比较火爆的一个js框架,它的核心理念是mvvm,脱离了传统的dom操作,而是通过数据驱动的方式来进行页面的渲染,目前已经被越来越多的网站采用,相比传统的dom操作,vue的数据驱动更加高效,简洁,但这也不可否认dom的重要性,jquery便是典型的代表,相信很多人第一款接触的js框架便是jquery,他对html的dom操作确实强大,但也同时会带来代码冗余混乱的问题,二者各有利弊,具体情况需要具体分析。

  vue比较重要的一个概念便是它的生命周期,如果你想进行dom相关的操作,那么需要在它的mounted周期来执行相应的方法,具体大家可以自行参阅vue教程,通过实例的练习应该很快就可以上手。

  另外值得一提的是,如果网页加载慢或者数据查询过慢,页面上会出现vue的{{}}表达式,影响美观,如果想要避免此种现象的发生需要在被绑定的容器上加上v-cloak属性,如下:

     <style>
        [v-cloak] {
            display: none;
        }
     </style>
     
    <html>
        <body>
             <div class="app" v-cloak>
                {{msg}}
             </div>
        </body>
    </html>
   
    <script>
        var vm = new Vue({
            el : '#app',
            data : {
                msg : 'msg'
            },
        });
    </script>

  这样如果msg迟迟加载不出来,也不会显示花括号。

运行效果及代码解析

  让我们看一下本次更新的运行效果,在这里我们配置一个单表模块,一个多表模块来生成对应的代码,首先在主界面配置相关信息,还是以我本地的medicine数据库为例,如下:



  然后简单的对medicinemsg表做一下配置:



  确定后关闭窗口然后去高级配置中配置一个多表查询的模块:

  配置完毕回到主界面生成代码:



  在这里我们看一下生成的前台vue部分的代码,这里以表格显示的vue为例:
var tableVue = new Vue({
            el : '#newsContent',
            data : {
                result : []
            },
            //created:
            mounted : function() {
                $crud.getDataByCurrentPage();
            },
            methods : {

                upMsg : function(id, path) {

                    $z.ajaxStrAndJson({
                        url : basePath + path,
                        data : {
                            id : id
                        },
                        success : function(data) {
                            upVue.id = data[0]["id"];
                            upVue.name = data[0]["name"];
                            upVue.price = data[0]["price"];
                            $('#updateModal').modal('show');

                        }
                    });
                },
                delMsg : function(id, path) {
                    if (confirm("确定删除吗?")) {
                        $z.ajaxStrAndJson({
                            url : basePath + path,
                            data : {
                                id : id
                            },
                            success : function(data) {
                                $crud.getDataByCurrentPage();
                            }
                        });
                    }
                }
            }
        });
        
        var upVue = new Vue({
            el : "#updateModal",
            data : {
                id : '',
                name : '',
                price : ''
            },
            methods : {
                confirmUp : function() {
                    $z.ajaxStrAndJson({
                        url : basePath + "/" + controllerPrefix + "/update",
                        data : {
                            id : this.id,
                            name : this.name,
                            price : this.price
                        },
                        success : function(data) {
                            alert("更新成功!");
                            $('#updateModal').modal('hide');
                            $crud.getDataByCurrentPage();
                        }
                    });
                }
            }
        });

  其中tableVue在mounted生命周期执行了ajax请求,$crud.getDataByCurrentPage方法会把获取的数据赋值给tableVue的result,然后在对应绑定的table中,使用v-for属性循环遍历result,来实现元素的输出,table部分代码如下:

<!-- 查询结果表格显示区域 -->
<div id="newsContent" class="table-responsive" style="overflow: scroll;" v-cloak>
    <table class="table text-nowrap">
        <tr>
                <th>操作</th>
                <th>name</th>
                <th>price<a href='#' onclick='$crud.setAscColumn(this,"price")'>↑</a>&nbsp;<a href='#' onclick='$crud.setDescColumn(this,"price")'>↓</a></th>
        </tr>
        <tbody id="dataTable">
            <tr v-for="data in result">
                <td>
                     <button type="button" class="btn btn-info btn-sm" @click="upMsg(data.id,'/medicinemsg/select')">更新</button>&nbsp;
                     <button type="button" class="btn btn-danger btn-sm" @click="delMsg(data.id,'/medicinemsg/delete')">删除</button>&nbsp;
                </td>
                <td>{{data.name}}</td>
                <td>{{data.price}}</td>
            </tr>
        </tbody>
    </table>
    <div id="pageID" class="page_div"></div>
</div>
<!-- 查询结果表格显示区域 end-->

  启动项目,可以正常运行,没有问题,这里有数据空白项是因为left join的缘故。


至此,vue的整合就到此结束了。

现在代码生成器分为了mac和windows两个版本,我自己搭建了一个文件服务器,感兴趣的朋友可以点击下方链接自行下载

最新代码生成器下载链接

csdn下载链接

链接:https://pan.baidu.com/s/1L5gP5sH3LFKA8ZPurPmGhQ

提取码:wxpp

感谢您的观看!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,094评论 1 32
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 9,581评论 1 52
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,080评论 0 2
  • 背景 第一次接触代码生成器用的是动软代码生成器,数据库设计好之后,一键生成后端 curd代码。之后也用过 Code...
    若邪Y阅读 1,337评论 0 1
  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 3,344评论 0 25