• [前端]纯<script>方式引入库,不启动web服务使用vue+qs+elementUI+thymeleaf。附js包


    使用背景
    由于是使用springboot开发的后端,前端配套使用了thymeleaf标签,类似于jsp里面的EL和JSTL语法,这个语法原来就是为了替代jsp。
    前端使用h5开发,该页面使用的不多,可以完全忽略该语法。想学的可以前去可以百度一下。
    由于是前后端都是一个人开发,所以起两个服务明显是我不希望看到的。所以如果能够直接导入,那么再好不过了。
    使用vue服务起和直接script导入还是有细微差别的。以下简单介绍一下,具体可以参考以下代码。

    使用thymeleaf
    <html xmlns:th="http://www.springframework.org/schema/jdbc">

    包引入
    <link rel="stylesheet" href="css/elemen-ui.css" th:href="@{/css/elemen-ui.css}"/>
     <script type="text/javascript" src="js/axios.min.js" th:href="@{/js/axios.min.js}" charset="utf-8"></script>
     <script type="text/javascript" src="js/vue.min.js" th:href="@{/js/vue.min.js}" charset="utf-8"></script>
     <script type="text/javascript" src="js/element.js" th:href="@{/js/element.js}" charset="utf-8"></script>

    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
    直接将js包下载到本地使用script标签引入,需要引入的包。需要的朋友可以点击下面超链接复制到本地。
    element的css包/js包
    vue的js包
    axios的js包
    qs的js包

    对于一般的项目够用了,比如我这样的。

    如果使用thymeleaf语言,在html标签内可通过th标签加${}表达式访问model里的对象数据。但如果不想通过th标签而是简单地访问model对象数据,
    或是想在javascript代码块里访问model中的数据,则要使用内联的方法。

    在<script>中使用 th:inline可以在js代码里通过双中括号使用后台变量
    [[${session.user.name}]]
    <script th:inline="javascript" type="application/javascript">

    qs 区别
    直接引用会报错,需要加上window,qs改成Qs,这是与vue中不同的地方。其余都是相同的。
    window.Qs.stringify(params)

    这样我们就可以少启动一个服务了。
    
    
    <!DOCTYPE html>
    <html xmlns:th="http://www.springframework.org/schema/jdbc">
    <head>
        <meta charset="UTF-8">
        <meta name="renderer" content="webkit|ie-comp|ie-stand">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta http-equiv="Cache-Control" content="no-siteapp"/>
        <link rel="stylesheet" href="css/elemen-ui.css" th:href="@{/css/elemen-ui.css}"/>
        <script type="text/javascript" src="js/axios.min.js" th:href="@{/js/axios.min.js}" charset="utf-8"></script>
        <script type="text/javascript" src="js/vue.min.js" th:href="@{/js/vue.min.js}" charset="utf-8"></script>
        <script type="text/javascript" src="js/element.js" th:href="@{/js/element.js}" charset="utf-8"></script>
        <title>检修(非电类)工作票</title>
    </head>
    <body>
    <div class="table_wrap" id="app">
        <!--startprint-->
        <table class="temperatureChart" id="PrintArea">
            <caption>
                <p style="font-size: 20px;font-weight: bold">检修(非电类)工作票</p>
            </caption>
            <thead>
            </thead>
            <tbody>
            <tr>
                <td style=" 20%;">工作单位</td>
                <td style=" 40%;">剥离运行部</td>
                <td style=" 20%;">编号</td>
                <td style=" 20%;">{{inspectlog_code}}</td>
            </tr>
            <tr>
                <td>工作成员</td>
                <td><select name="equip_code" v-model="work_member" lay-verify="required" lay-search="">
                    <option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
                </select>
                </td>
                <td>作业负责人</td>
                <td><select name="equip_code" v-model="work_timoneer" lay-verify="required" lay-search="">
                    <option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
                </select></td>
            </tr>
            <tr>
                <td>工作设备/地点</td>
                <td><select name="equip_code" lay-verify="required" lay-search="">
                    <option v-for="item in equip" v-bind:value="item.equip_code" value="">{{item.equip_desc}}</option>
                </select>/
                    <select name="modules" v-model="work_address" lay-verify="required" lay-search="">
                        <option value="">剥离运行部</option>
                        <option value="1">一号检修点</option>
                        <option value="2">二号检修点</option>
                    </select>
                </td>
                <td>作业人数</td>
                <td><select name="modules" v-model="work_empCount" lay-verify="required" lay-search="">
                    <option value="1">1人</option>
                    <option value="2">2人</option>
                    <option value="3">3人</option>
                    <option value="4">4人</option>
                    <option value="5">5人</option>
                    <option value="6">6人</option>
                </select>
                </td>
            </tr>
            <tr>
                <td>工作内容</td>
                <td colspan="3">
                    <input value="" style="display: inline-block;100%;text-align: left" v-model="inspect_desc"/></td>
            </tr>
            <tr>
                <td>计划作业时间</td>
                <td colspan="3"><el-date-picker
                                v-model="start_date"
                                type="datetime"
                                placeholder="选择日期时间"
                                default-value
                                format="yyyy年MM月dd日 HH:mm:ss"
                                prefix-icon="el-icon-date"
                                clear-icon="el-icon-circle-close"></el-date-picker>开始,至自<el-date-picker
                            v-model="stop_date"
                            type="datetime"
                            format="yyyy年MM月dd日 HH:mm:ss"
                            placeholder="选择日期时间"
                            prefix-icon="el-icon-date"
                            clear-icon="el-icon-circle-close"
                            default-time="12:00:00">
                    </el-date-picker>完结
                </td>
            </tr>
            <tr>
                <td colspan="3" style="text-align: left;">1.必须采取的安全措施</td>
                <td>选用划"〇"</td>
            </tr>
            <tr>
                <td colspan="3">劳动保护穿戴齐全、上下现场提醒司机不超员不超速,检修作业时告知司机、挂好安全锁、不违章操作</td>
                <td><select name="modules" v-model="safety_rule" lay-verify="required" lay-search="">
                    <option value="1"></option>
                    <option value="2">×</option>
                </select>
                </td>
            </tr>
            <tr>
                <td>工作票签发人:</td>
                <td><select name="equip_code" v-model="signature_code" lay-verify="required" lay-search="">
                    <option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
                </select>
                </td>
                <td colspan="2">
                    <el-date-picker
                            v-model="signature_date"
                            type="datetime"
                            placeholder="选择日期时间"
                            default-value
                            format="yyyy年MM月dd日 HH:mm:ss"
                            prefix-icon="el-icon-date"
                            clear-icon="el-icon-circle-close">
                    </el-date-picker>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
    <script th:inline="javascript" type="application/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                list: [],
                id: "",
                inspectlog_code: "20200527",
                inspect_desc: "",
                start_date: "",
                stop_date: "",
                equip_code: "",
                equip: [[${equip}]],
    //使用thymeleaf标签使用后台实体,绑定到vue的model employee: [[${employee}]],
    }, methods: { add() { console.log("111") let obj = new Object(); obj.id = this.id, obj.inspectlog_code = this.inspectlog_code, obj.inspect_dasc = this.inspect_dasc, obj.start_date = this.start_date, obj.stop_date = this.stop_date, obj.work_timoneer = this.work_timoneer, obj.work_address = this.work_address, obj.work_empCount = this.work_empCount, axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; function postRequest(url, params) { return new Promise((resolve, reject) => { axios.post(url, window.Qs.stringify(params)) .then(res => { if (res.data > 0) { resolve(res.data); } else { //Message.error(res.data.msg) } }) .catch(err => { // reject(err.data) //Message.error('服务器出错了') }) }); } postRequest('ADD_Inspect',obj); } } }) </script> </body> </html>
    如果你连技术都搞不定,怎么去搞定其他更加有挑战性的东西呢?
  • 相关阅读:
    系统设计题:如何设计一个电商平台积分兑换系统!
    服务器上部署多台mysql
    log4j日志输出格式一览
    Intellij IDEA 智能补全
    什么是旅行商问题——算法NP、P、NPC知识
    如何找到两个升序数组归并后的升序数组的中位数
    Java 不同进制的字面值
    Android 进程和线程
    美图秀秀2015年实习生android应用开发方向招聘笔试题
    Android:Layout_weight的深刻理解
  • 原文地址:https://www.cnblogs.com/suncos/p/12991658.html
Copyright © 2020-2023  润新知