当前位置: 首页 > 知识库问答 >
问题:

前端表头信息写死还是向服务端请求表头信息呢?

井礼骞
2024-07-01

前端表头信息写死还是向服务端请求表头信息呢?

我觉得向服务端请求表头信息可能比较好吧。

比如我设计了下面这个结构用来返回表头信息和数据。表头信息中的prop和数据中是对应的。

表头信息:
这里我给定了一个width字段用于控制该列的宽度。该列的宽度和该列数据中显示最长的有关,这在后端应该是容易知道的(前端显示的只是一个视图,并不能保证在任何视图下显示的都很好),我觉得这是在后端上设置列宽的一个优点吧。

"fields":  [
    {
      "prop": "dw",
      "name": "单位",
      "width": "160"
    },
    {
      "prop": "xh",
      "name": "序号",
      "width": "60"
    },
    {
      "prop": "jqd",
      "name": "交气点",
      "width": "120"
    },
    {
      "prop": "dlrqgs",
      "name": "代理燃气公司",
      "width": "120"
    },
    {
      "prop": "jqfs",
      "name": "交气方式",
      "width": "100"
    },
    {
      "prop":"jdljjql",
      "name": "阶段累计交气量(方)",
      "width": "200"
    },
    {
      "prop": "rjql",
      "name": "日均气量(方/天)",
      "width": "180"
    },
    {
      "prop": "ljdsl",
      "name": "累计代输量(方)",
      "width": "160"
    },
    {
      "prop": "2024-01-01",
      "name": "1月1日"
    },
    ....
  ],

数据:

"lsqjqltj": [
    {
      "id": "1",
      "xh": "1",
      "dw": "管理2区",
      "jqd": "Bxxxxxx2",
      "dlrqgs": "xxxxxx",
      "jqfs": "代销",
      "jdljjql": 23745,
      "rjql": 156,
      "ljdsl": 0,
      "data": [
        {
          "rq": "2024-01-01",
          "jql": 0
        },
        {
          "rq": "2024-01-02",
          "jql": 1
        },
        {
          "rq": "2024-01-03",
          "jql": 0
        },
        {
          "rq": "2024-01-04",
          "jql": 1
        },
        {
          "rq": "2024-01-05",
          "jql": 0
        },
        {
          "rq": "2024-01-06",
          "jql": 1
        },
        {
          "rq": "2024-01-07",
          "jql": 0
        },
        {
          "rq": "2024-01-08",
          "jql": 1
        }
      ]
    },

此时,前端人员并不需要了解到底有哪些字段?这些字段是什么含义,只需要知道propname的含义即可。当后端增加新的表头或者修改表头信息的时候,前端都不需要修改,这是它好的一方面。

前端可能会这样使用获取的表头信息和数据(这里的数据还需要稍作调整)

 <el-table :data="tableData" border>
    <template v-for="item in fields">
      <el-table-column v-if="/\d{4}-\d{1,2}-\d{1,2}/.test(item.prop)" :label="item.name" :prop="item.prop" header-align="center" align="center" :width="item.width">
        <template #header>
          <el-button link type="primary" @click="showDrawer = true">{{item.name}}</el-button>
        </template>
      </el-table-column>
      <el-table-column v-else :label="item.name" :prop="item.prop" fixed="left" header-align="center" align="center" :width="item.width">
      </el-table-column>
    </template>
</el-table>

前端人员并不需要了解到底有哪些字段?这些字段是什么含义,只需要知道propname的含义即可。

但是这可能还有不利的方面。

如果我们增加编辑信息的功能,

  • 首先我们要先要搜索到要编辑的单元格

    • 单位 => 下拉框 => 选择指定的单位
    • 交气点 => 下拉框 => 选择指定的交气点
    • ...
  • 最后

    • 交气量 => 输入框 => 填写交气量

这时前端仅仅知道propname还足够吗?

弥补措施?后端返回这样的编辑格式信息?然后前端按照这种形式来绘制编辑信息页面?

{
    jql: {
        name: "进气量",
        options: [...]
    }
    ....
}

共有1个答案

孙阳舒
2024-07-01

前端人员并不需要了解到底有哪些字段但总要有人了解,你可能是把前后端对接的工作交到了别人手里,可能是后台,可能给是项目经理,但总的任务并没有减少。这是其一,其二是这种操作增加了业务的复杂性,对于维护及开发都不利。第三,如果表格就这些内容,不会经常变动,那么在前端写死是最省事的,因为在后台做成配置型的,那你需要增加一系列配置型表格的功能,这工作量并不小,其次,也只是把维护人员从前台转移到了不知道谁那里。如果是项目业务需要这种动态配置型的表格,那当我没说

 类似资料:
  • 获取当前请求的所有HTTP 请求头信息,如: $headers = $request->header(); print_r($headers); 直接获取某个请求头信息,如: $token = $request->header('XX-Token'); HTTP请求头信息的名称不区分大小写,并且下划线会自动转换为-,所以下面的写法都是等效的: $token = $request->head

  • 获取当前请求的所有HTTP 请求头信息,如: $headers = $request->header(); print_r($headers); 直接获取某个请求头信息,如: $token = $request->header('XX-Token'); HTTP请求头信息的名称不区分大小写,并且下划线会自动转换为-,所以下面的写法都是等效的: $token = $request->head

  • 正是头信息开始让 Jekyll 变的很酷。任何只要包含 YAML 头信息的文件在 Jekyll 中都能被当做一个特殊的文件来处理。头信息必须在文件的开始部分,并且需要按照 YAML 的格式写在两行三虚线之间。下面是一个基本的例子: --- layout: post title: Blogging Like a Hacker --- 在这两行的三虚线之间,你可以设置预定义的变量(下面这个例子可以作为

  • 可以使用Request对象的header方法获取当前请求的HTTP请求头信息,例如: $info = Request::header(); echo $info['accept']; echo $info['accept-encoding']; echo $info['user-agent']; 也可以直接获取某个请求头信息,例如: $agent = Request::header('user-a

  • TP5已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以Request的单例方法 $request = Request::instance(); 3.使用助手函数 $request = r

  • TP6.0已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以用request()的助手函数 $request = request(); 获取请求信息 // 获取当前控制器 $request