<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>Title</title> <!-- Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) --> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 --> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script> <script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script> </head> <body> <div id="box"> <rk-form action="register.php" method="post" enctype="application/x-www-form-urlencoded"> <rk-panel slot="content"> <h4 slot="paneltitle">注册</h4> <rk-input itype="text" ititle="用户" iplace="请输入用户" iname="username" slot="panelcontent"></rk-input> <rk-input itype="password" ititle="密码" iplace="请输入密码" iname="password" slot="panelcontent"></rk-input> <rk-input itype="password" ititle="确认密码" iplace="请再输入一次密码" iname="password2" slot="panelcontent"></rk-input> <rk-input itype="email" ititle="邮箱" iplace="请输入邮箱" iname="email" slot="panelcontent"></rk-input> <rk-input itype="text" ititle="电话" iplace="请输入电话" iname="phone" slot="panelcontent"></rk-input> <rk-button btitle="注册" btype="submit" slot="panelButton"></rk-button> <rk-button btitle="重置" btype="reset" slot="panelButton"></rk-button> </rk-panel> </rk-form> </div> <script type="text/x-template" id="form"> <form :action="action" :method="method" :enctype="enctype"> <slot name="content">表单内容</slot> </form> </script> <script type="text/x-template" id="panel"> <div class="panel panel-default"> <div class="panel-heading"> <div class="panel-title"> <slot name="paneltitle">panel标题</slot> </div> </div> <div class="panel-body"> <slot name="panelcontent">panel主体</slot> <slot name="panelButton">panel按钮</slot> </div> </div> </script> <script type="text/x-template" id="rkInput"> <div class="form-group"> <label for="" class="control-label col-sm-2">{{ititle}}</label> <div class="form-group col-sm-9"> <input :type="itype" :name="iname" class="form-control" :placeholder="iplace"> </div> </div> </script> <script type="text/x-template" id="rkButton"> <span class="form-group text-right col-sm-1"> <button class="btn btn-primary" :type="btype">{{btitle}}</button> </span> </script> <script type="text/javascript"> var rkForm = { props:['action','method','enctype'], template:'#form' }; var rkPanel = { template:'#panel' }; var rkInput = { props:['itype','ititle','iplace','iname'], template:'#rkInput', }; var rkButton = { props:['btitle','btype'], template:'#rkButton', }; var app = new Vue({ el:'#box', components:{rkForm,rkPanel,rkInput,rkButton}, }); </script> </body> </html>
效果如下: