FS平台前端设计说明v1.00

传送门: SpringBoot+SpringCloud搭建一款企业级开源基础平台

1. 概述

FS平台web前端架构以下简称fs-web,fs-web是基于开源框架layui开发。layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。

2. 参考资料

layui官方网站:https://www.layui.com/

3. 开发规范

文件名称统一用英文字母、数字和下划线的组合,其中不得包含汉字、空格和特殊字符;html、css、js文件字符集统一设置为utf-8;详细请查看官网。

  • html规范

    属性 描述
    lay-skin=" " 定义相同元素的不同风格,如checkbox的开关风格
    lay-filter=" " 事件过滤器。你可能会在很多地方看到他,他一般是用于监听特定的自定义事件。你可以把它看作是一个ID选择器
    lay-submit 定义一个触发表单提交的button,不用填写值

Layui在解析HTML元素时,必须充分确保其结构是被支持的。你如果改变了结构,极有可能会导致该功能失效。所以在嵌套HTML的时候,你应该细读各个元素模块的相关文档。Tab选项卡为例:

<div class="layui-tab">
  <ul class="layui-tab-title">
    <li class="layui-this">标题一</li>
    <li>标题二</li>
    <li>标题三</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">内容1</div>
    <div class="layui-tab-item">内容2</div>
    <div class="layui-tab-item">内容3</div>
  </div>
</div>
  • css规范

class命名前缀:layui,连接符:-,如:class=“layui-form”

命名格式一般分为两种:一:layui-模块名-状态或类型,二:layui-状态或类型。因为有些类并非是某个模块所特有,他们通常会是一些公共类。如:一(定义按钮的原始风格):class=“layui-btn layui-btn-primary”、二(定义内联块状元素):class=“layui-inline”

从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式、嵌入式和外部式三种。html代码中不建议用嵌入式。

3.1 全局配置

你可以在使用模块之前,全局化配置一些参数,尽管大部分时候它不是必须的。所以我们目前提供的全局配置项非常少,这也是为了减少一些不必要的工作,尽可能让使用变得更简单。目前支持的全局配置项如下:

layui.config({
  dir: '/res/layui/' //layui.js 所在路径(注意,如果是script单独引入layui.js,无需设定该参数。),一般情况下可以无视
  ,version: false //一般用于更新模块缓存,默认不开启。设为true即让浏览器不缓存。也可以设为一个固定的值,如:201610
  ,debug: false //用于开启调试模式,默认false,如果设为true,则JS模块的节点会保留在页面
  ,base: '' //设定扩展的Layui模块的所在目录,一般用于外部模块扩展
})

3.2 定义模块

方法:layui.define([mods], callback)

通过该方法可定义一个 Layui模块。参数mods是可选的,用于声明该模块所依赖的模块。callback即为模块加载完毕的回调函数,它返回一个exports参数,用于输出该模块的接口。

layui.define(function(exports){
  //do something
  
  exports('demo', function(){
    alert('Hello World!');
  });
});

exports是一个函数,它接受两个参数,第一个参数为模块名,第二个参数为模块接口,当你声明了上述的一个模块后,你就可以在外部使用了,demo就会注册到layui对象下,即可通过 layui.demo() 去执行该模块的接口。

你也可以在定义一个模块的时候,声明该模块所需的依赖,如:

layui.define(['layer', 'laypage'], function(exports){
  //do something
  
  exports('demo', function(){
    alert('Hello World!');
  });
});

上述的[‘layer’, ‘laypage’]即为本模块所依赖的模块,它并非只能是一个数组,你也可以直接传一个字符型的模块名,但是这样只能依赖一个模块。

3.3 加载所需模块

方法:layui.use([mods], callback)

Layui的内置模块并非默认就加载的,他必须在你执行该方法后才会加载。它的参数跟上述的 define方法完全一样。
另外请注意,mods里面必须是一个合法的模块名,不能包含目录。如果需要加载目录,建议采用extend建立别名(详见模块规范)

layui.use(['laypage', 'layedit'], function(){
  var laypage = layui.laypage
  ,layedit = layui.layedit;
  
  //do something
});

3.4 加载所需模块

方法:layui*.link(href)*

href即为css路径。注意:该方法并非是你使用Layui所必须的,它一般只是用于动态加载你的外部CSS文件。

3.5 本地存储

本地存储是对 localStorage 和 sessionStorage 的友好封装,可更方便地管理本地数据。

localStorage 持久化存储:layui.data(table, settings),数据会永久存在,除非物理删除。

sessionStorage 会话性存储:layui.sessionData(table, settings),页面关闭后即失效。

上述两个方法的使用方式是完全一样的。其中参数 table 为表名,settings是一个对象,用于设置key、value。下面与 layui.data 方法为例:

//【增】:向test表插入一个nickname字段,如果该表不存在,则自动建立。
layui.data('test', {
  key: 'admin'
  ,value: '码农洞见'
});
 
//【删】:删除test表的nickname字段
layui.data('test', {
  key: 'admin'
  ,remove: true
});
layui.data('test', null); //删除test表
  
//【改】:同【增】,会覆盖已经存储的数据
  
//【查】:向test表读取全部的数据
var localTest = layui.data('test');
console.log(localTest.admin); 

3.6 Layui如何使用内部的jQuery

由于Layui部分内置模块依赖jQuery,所以我们将jQuery1.11最稳定的一个版本作为一个内置的DOM模块(唯一的一个第三方模块)。只有你所使用的模块有依赖到它,它才会加载,并且如果你的页面已经script引入了jquery,它并不会重复加载。内置的jquery模块去除了全局的$和jQuery,是一个符合layui规范的标准模块。所以你必须通过以下方式得到:

//主动加载jquery模块
layui.use(['jquery', 'layer'], function(){ 
var $ = layui.$ //重点处
,layer = layui.layer;

//后面就跟你平时使用jQuery一样
$('body').append('hello jquery');
});

//如果内置的模块本身是依赖jquery,你无需去use jquery,所以上面的写法其实可以是:
layui.use('layer', function(){ 
var $ = layui.$ //由于layer弹层依赖jQuery,所以可以直接得到
,layer = layui.layer;

//……
});

3.7 扩展Layui模块

layui提供的模块有时可能还无法满足你,或者你试图按照layer的模块规范来扩展一个模块。那么你有必要认识layui.define()方法,相信你在文档左侧的“底层方法”中已有所阅读。下面就就让我们一起扩展一个Layui模块吧:

第一步:确认模块名,假设为:mymod,然后新建一个mymod.js 文件放入项目任意目录下(注意:不用放入layui目录)

第二步:编写test.js 如下:

/**
  扩展一个test模块
**/      
 
layui.define(function(exports){ //提示:模块也可以依赖其它模块,如:layui.define('layer', callback);
  var obj = {
    hello: function(str){
      alert('Hello '+ (str||'mymod'));
    }
  };
  
  //输出test接口
  exports('mymod', obj);
});    

第三步:设定扩展模块所在的目录,然后就可以在别的JS文件中使用了

//config的设置是全局的
layui.config({
  base: '/res/js/' //假设这是你存放拓展模块的根目录
}).extend({ //设定模块别名
  mymod: 'mymod' //如果 mymod.js 是在根目录,也可以不用设定别名
  ,mod1: 'admin/mod1' //相对于上述 base 目录的子目录
});
 
//你也可以忽略 base 设定的根目录,直接在 extend 指定路径(主要:该功能为 layui 2.2.0 新增)
layui.extend({
  mod2: '{/}http://cdn.xxx.com/lib/mod2' // {/}的意思即代表采用自有路径,即不跟随 base 路径
})
 
//使用拓展模块
layui.use(['mymod', 'mod1'], function(){
  var mymod = layui.mymod
  ,mod1 = layui.mod1
  ,mod2 = layui.mod2;
  
  mymod.hello('World!'); //弹出 Hello World!
});

3.8.接口规范说明

3.8.1.规范原则

  • 接口返回数据即显示:前端仅做渲染逻辑处理;
  • 渲染逻辑禁止跨多个接口调用;
  • 前端关注交互、渲染逻辑,尽量避免业务逻辑处理现象;

3.8.2.数据格式

  • 响应数据格式

    {
    “code”: 200, //请求处理状态
    “msg”: “success”, //请求处理消息
    “url”: null, //请求地址
    “count”: 2,
    “data”: [{}, {}…]
    }

code:请求处理状态

 * 100 ERROR: 代码异常

 * 200 OK:服务器成功返回用户请求的数据

 * 201 CREATED :用户新建或修改数据成功。

 * 202 Accepted:表示请求已进入后台排队。

 * 400 INVALID REQUEST :用户发出的请求有错误。

 * 401 Unauthorized :用户没有权限。

 * 403 Forbidden :访问被禁止。

 * 404 NOT FOUND :请求针对的是不存在的记录。

 * 406 Not Acceptable :用户请求的的格式不正确。

 * 500 INTERNAL SERVER ERROR :服务器发生错误。

4. 组件说明

4.1 表格

table 组件默认规定的数据格式为:

{
  "code": 0,
  "msg": "",
  "count": 1000,
  "data": [{}, {}]
}

如果你想重新规定返回的数据格式,那么可以借助 response 参数,如:

table.render({
  elem: '#demp'
  ,url: ''
  ,response: {
    statusName: 'status' //规定数据状态的字段名称,默认:code
    ,statusCode: 200 //规定成功的状态码,默认:0
    ,msgName: 'hint' //规定状态信息的字段名称,默认:msg
    ,countName: 'total' //规定数据总数的字段名称,默认:count
    ,dataName: 'rows' //规定数据列表的字段名称,默认:data
  } 
  //,…… //其他参数
});

用于对分页请求的参数:page、limit重新设定名称,如:

table.render({
  elem: '#demp'
  ,url: ''
  ,request: {
    pageName: 'curr' //页码的参数名称,默认:page
    ,limitName: 'nums' //每页数据量的参数名,默认:limit
  }
  //,…… //其他参数
});

最后的最后

为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。扫描下图二维码关注,学习和交流!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 罗德施瓦茨频谱仪是一种高精度的测试仪器,用于分析和测量信号的频谱特性。使用罗德施瓦茨频谱仪可以帮助我们了解信号的频率、振幅和相位等相关信息。 首先,打开罗德施瓦茨频谱仪的电源开关,并等待它启动完成。接下来,连接待测信号源到频谱仪的输入端口上。确保信号源的输出设置正确,并且连接稳定可靠。 然后,进入频谱仪的设置界面,设置测量参数。可以调整中心频率、频谱宽度、分辨率带宽等参数来适应不同的测量需求。 接下来,开始测量信号。可以选择连续测量模式或者单次测量模式,视具体情况而定。在连续测量模式下,频谱仪会不断地采集和显示信号的频谱特性。在单次测量模式下,频谱仪只会进行一次测量,并将结果显示出来。 在测量过程中,我们可以观察频谱显示。频谱图以频率为横轴,信号强度(振幅)为纵轴显示。可以通过放大、缩小等操作来调整频谱的显示范围和细节。 最后,当我们完成测量后,可以将数据保存到存储设备中,或者通过外部接口将数据传输到电脑等其他设备中进行后续处理和分析。 需要注意的是,在使用罗德施瓦茨频谱仪时,要注意避免信号源过大可能造成的设备损坏,也要避免使用在禁止使用的频率范围内。同时要定期对设备进行校准,以确保测量结果的准确性和可靠性。 总结起来,使用罗德施瓦茨频谱仪需要按照以下步骤进行:打开电源,连接信号源,设置测量参数,开始测量,观察频谱显示,保存数据,注意安全使用和校准。通过正确使用罗德施瓦茨频谱仪,我们可以对信号的频谱特性进行准确分析和测量。 ### 回答2: 罗德施瓦茨频谱仪(FSV)是一种用于频谱分析和信号测量的仪器。使用说明书(中文)是指导用户正确操作和使用该仪器的文档。 FSV频谱仪的使用说明书包含以下内容: 1. 仪器概述:说明FSV频谱仪的基本结构和功能。介绍仪器的外观,各部件的名称和功能,以及接口和外部设备的连接方法。 2. 仪器设置:详细介绍如何进行仪器的设置和校准。包括电源连接、网络设置、参考信号输入等。还介绍了仪器的各种设置选项,如频率范围、分辨率带宽、采样率等。 3. 频谱分析:介绍如何进行频谱分析的操作步骤。包括选择需要分析的信号源、设置起始和终止频率、选择分辨率带宽、观察信号谱图等。还介绍了如何进行谱峰搜索、峰值测量和谱线扫描等高级分析功能。 4. 信号测量:说明如何进行各种信号参数的测量。包括功率、频率、相位、调制度、调制误差等。介绍了使用峰值表和调制度测量器进行信号测量的方法。 5. 数据处理和导出:介绍如何对测量数据进行处理和分析。包括保存数据、导出数据到计算机、绘制图表和曲线等。 6. 故障排除:提供了一些常见故障和解决方法。如仪器无法启动、无法测量信号等。 此外,使用说明书还可能包括一些实例和应用案例,帮助用户更好地理解和应用FSV频谱仪。 总而言之,罗德施瓦茨频谱仪使用说明书(中文)是一份详细介绍该仪器的操作指南,帮助用户正确操作和使用该仪器进行频谱分析和信号测量。 ### 回答3: 罗德施瓦茨频谱仪(FSV)是一种高性能的频谱分析仪器,用于测量和分析射频和微波信号的频谱特性。它具有简单易用的界面和丰富的功能,适用于各种应用领域,如通信、卫星通信、广播、雷达、无线电频率测量等。 在使用罗德施瓦茨频谱仪之前,首先需要正确连接仪器和被测设备。确保所有电源和信号线缆连接正确并牢固。接下来,打开仪器并等待一段时间,直到仪器完全启动和自检完成。 之后,使用触摸屏或旋钮选择相应的测量模式和频率范围。罗德施瓦茨频谱仪可以通过手动输入频率或选择预设的频率范围进行测量。可以根据需要调整和设置仪器的参数,如分辨率带宽、参考电平、峰值检测方式等。 进行测量时,将被测信号输入到频谱仪的输入端口,并确保信号的强度适合仪器的测量范围。然后,开始测量并观察频谱显示。罗德施瓦茨频谱仪可以以不同的显示方式呈现频谱数据,如曲线图、瀑布图、实时持续更新等。通过观察频谱,可以分析信号的频率、幅度、谱形等特性。 在完成测量后,可以通过保存数据、打印报告等方式进行结果的记录和分析。还可以通过USB接口或以太网接口将数据导出到计算机进行进一步处理和存储。 总之,罗德施瓦茨频谱仪是一种功能强大、易于操作的仪器,可以用于对射频和微波信号的频谱特性进行准确的测量和分析。通过正确使用使用说明书,可以更好地理解和掌握这一仪器的使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农洞见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值