整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用React+Ant Design开发单页面应用程序(一)-基础环境搭建


eact-start

基础知识

1.使用脚手架创建项目并启动

​ 1.1 安装脚手架:

npm install -g create-react-app

​ 1.2 使用脚手架创建项目:

create-react-app antd-start-demo antd-start-demo为项目名。

​ 1.3 启动

npm start

2.npm转换为yarn

​ 2.1 安装yarn:

 npm install -g yarn

​ 2.2 获取yarn当前的镜像源:

yarn config get registry

​ 2.3 设置为淘宝镜像:

yarn config set registry 'https://registry.npm.taobao.org'

​ 2.4 常用命令:

yarn init --初始化
yarn add --添加模块
yarn remove --删除模块
yarn /yarn install --安装项目中的依赖

项目搭建

2.1 安装react-router 4.0、axios、less-loader

yarn add react-router-dom axios less-loader

2.2 暴漏webpack配置

yarn eject

webpack配置

2.3 配置less-loader

​ antd是基于less开发的,我们使用less可以方便的改变主题色等配置。

​ 安装less模块:yarn add less@2.7.3

​ 打开config/webpack.config.dev.js添加如下配置:

{
 test: /\.less$/,
 use: [
 require.resolve('style-loader'),
 {
 loader: require.resolve('css-loader'),
 options: { importLoaders: 1 },
 },
 {
 // Options for PostCSS as we reference these options twice
 // Adds vendor prefixing based on your specified browser support in
 // package.json
 loader: require.resolve('postcss-loader'),
 options: {
 // Necessary for external CSS imports to work
 // https://github.com/facebook/create-react-app/issues/2677
 ident: 'postcss',
 plugins: () => [
 require('postcss-flexbugs-fixes'),
 require('postcss-preset-env')({
 autoprefixer: {
 flexbox: 'no-2009',
 },
 stage: 3,
 }),
 ],
 },
 },
 { loader: require.resolve('less-loader') }
 ],
},

到配置cssload同级如图所示

图片示例

注意:在webpack.config.dev.js添加的配置部分,也需要在webpack.config.prod.js中做相同的配置。否则可能导致项目发布上线后,报错无法执行。

2.4 安装antd

 yarn add antd

2.5 测试使用

import { Button } from "antd";
import 'antd/dist/antd.css';
...
 render() {
 return (
 <div>
 <Button>click</Button>
 </div>
 );
 }
...

注意:默认情况下安装的antd需要引入antd/dist/antd.css才会生效样式,但很多时候,我们只是使用了部分组件,引入整个antd样式文件,有些得不偿失。所以按需加载应运而生。

2.6 antd按需加载

1.添加babel-plugin-import,

yarn add babel-plugin-import

2.打开webpack配置,搜索:JS with Babel

找到如下配置:

// Process application JS with Babel.
 // The preset includes JSX, Flow, TypeScript and some ESnext features.
 {
 test: /\.(js|mjs|jsx|ts|tsx)$/,
 include: paths.appSrc,
 loader: require.resolve('babel-loader'),
 options: {
 customize: require.resolve(
 'babel-preset-react-app/webpack-overrides'
 ),
 
 plugins: [
 [
 require.resolve('babel-plugin-named-asset-import'),
 {
 loaderMap: {
 svg: {
 ReactComponent: '@svgr/webpack?-prettier,-svgo![path]',
 },
 },
 },
 ],
 ],
 cacheDirectory: true,
 // Save disk space when time isn't as important
 cacheCompression: true,
 compact: true,
 },
 },

进行修改plugin下添加:

["import", { "libraryName": "antd", "style": true }]

至此可以取消引入css文件了,babel会自动根据引入的组件,默认加载对应的css。

2.7修改主题色

 {
 loader: require.resolve('less-loader'),
 options: {
 modules: false,
 modifyVars: {
 "@primary-color": "#f9c700"
 }
 }
 }

在webpack,中配置less的地方即可修改。@primary-color为antd内置的less变量,只需要覆盖掉默认的配置,就实现了修改主题色。

本文GitHub代码:GitHub地址 欢迎star!

作者博客:做全栈攻城狮

分享交流前后端知识,一起做全栈攻城狮。


antd form 组件的 UI 方式适用于大多数的后台管理系统,如果对 UI 要求不是特别苛刻,完全开箱即用。

可能由于刚上手此组件库,或者对其中细节不熟悉,会使得实现表单效果有些磕磕碰碰,这里示例三种常见的业务场景,希望对新手能有所帮助。

栅格化布局

栅格布局应该是 bootstrap 开始带来的概念,对于复杂页面布局这似乎是一种万金油方式。

form 组件中的 <a-form-item> 支持栅格布局,使我们能自由的控制表单项的 label 和 输入框长度比例。

下面,是设置3列 label 和 5列 input 的例子:

通过 label-col 和 wrapper-col 可以很方便的设置长度:


不含 label 的表单项

可能某单个表单项的 label 不需要设置,这样会导致布局错乱。

下面,红框是预期展示效果(由于不含 label,会导致表单项往左偏移):

因为 label 不存在,所以 label-col 不会生效。利用 grid 规则,在 wrapper-col 额外再设置 offset 偏移原先 label-col 的数值即可。


同行多个表单 Item

input、select 之类 antd 的表单组件默认宽度 100%,当单行内如果有多个这样的组件,最终会上下依次排列。

如果像省市区这样需求,从左至右单行排列会更加友好,但需要修改对应的宽度 width。

同样我们可以使用 grid 栅格布局 + flex 布局,让整个逻辑控制在 html 层,而非增加额外的 css 代码。

下面,红框是预期展示效果:


总结

上面这些只是简单展示我目前遇到的三种场景,对于熟悉 form 组件的同学来说,这些完全基于该组件提供的 props 实现的效果。不过希望能对刚用 antd 的新手有个帮助。

本文使用 mdnice 排版

来来源于《现代通信》杂志微信公众号CQ现代通信

端午节威诺VR6600PRO团购活动进行中,马上查看!

http://weidian.com/item.html?itemID=1873367516

近年来SDR(Software Definition Radio,软件定义无线电)之风吹到了HAM界,一时之间各种SDR设备层出不穷,有专门设计制造的,也有爱好者DIY的,甚至几十元一支的电视棒也可以成为一个SDR接收机,追玩SDR一时成为时尚。但是,目前大多都是作为接收机的形式出现,有收发功能齐全的SDR机器较为少见,特别是大功率的SDR收发信机。这次就尝鲜了一下FlexRadio Systems FLEX-6500这款100W HF/6m波段SDR收发信机。

这台FLEX-6500机器的本体并不是很大,与一般基地型HF电台大小差不多,重量也比主流的HF收发信机要轻很多,不足6公斤。

机体是一个黑色的金属机壳。机壳的正面有一个小屏幕、几个小按钮和3个话筒、耳机、电键插座,机箱两个侧面是2个三寸的大风扇孔,后面则是一堆连接插座。粗看有几分像是个音响播放机的感觉。

机箱后面

【微信公众号CQ现代通信】本次试用的FLEX-6500属于是FLEX-6000系列机型之中的中档机,其上是具有双接收单元的高端型号FLEX-6700,下有低端的FLEX-6300。另外,还配有一个漂亮的触摸屏操作控制台可选件。

FLEX-6500采用的是16Bit的ADC,其采样速率是245Msps,采样带宽达77MHz,而且在模数转换之前还有高性能的预选器(较传统带通滤波器高档)和前置放大器等信号预处理电路,性能完全不是坊间的8Bit或10Bit的SDR所能及的,经过实际试用,机器的整体性能可以用惊异来形容。

然而这个黑色的机器只是一个躯壳,这个机器的灵魂其实是安装于PC电脑中的名为“SmartSDR”的软件平台。机器通过一条LAN网线与PC电脑相连,也可通过网络交换接入计算机局域网使用,运行SmartSDR软件之后机器才能工作。还有比较郁闷的是机器本身并没有安装扬声器,而需要外接扬声器或者耳机才能听到声音。估计有不少初次使用这款机器的人,或者会以为机器的声音是从电脑扬声器中发出的而折腾一番,因此,为了能够在第一次能够愉快地使用设备,建议先准备好一个带有功放的电脑音箱。

最初是把SmartSDR软件安装在一台Win XP操作系统的台式机上,谁知安装完了之后出现一大堆的出错提示。

Win XP系统下安装出现错误提示

【微信公众号CQ现代通信】情急之下,把SmartSDR软件安装于另一台Win7操作系统的笔记本电脑上,终于就顺利工作起来了,经查看使用手册,原来SmartSDR软件需要依赖微软的.net framewrok 4.0运行,需要提前安装。

软件的界面与HD SDR等SDR操作软件差不多,因而很容易上手。软件的控制反应很快,点击控制和设置,机器马上就有所变化。

在屏幕的左边是频谱图和瀑布图,可以通过设置,在屏幕上显示上下多栏的频谱图和瀑布图,如下图所示包括四个频谱窗口,监听四个信号。

频谱图和瀑布图

【微信公众号CQ现代通信】频谱图和瀑布图最大显示宽度为14MHz,而且可以随时调整频谱图和瀑布图显示的带宽和中心位置。

频谱图的纵坐标电平值也可以随时调整,以适合的幅度显示信号的大小。频谱图中用图形显示收发频率以及接收带宽范围等参数。在频谱图中有所谓的“切片接收机”的显示栏,在栏中显示和控制接收机的几乎所有的功能参数。

界面的右边是几套控制和显示板。他们分别是:发射功率和天线调谐器控制板、CW发射控制板、话音发射控制板、语音模式控制板、接收控制板以及均衡器控制板。这几个控制板可以同时显示和操作,也可以隐藏起来。

在试用之中感觉这个SmartSDR软件的功能十分强大,可以满足各种刁钻的操作设置要求,而且软件运行流畅,占用CPU很小。但是在应用中感觉界面有些挤迫,各栏之间没有根据屏幕自动适应调整的功能,导致有些栏会跑出显示屏边界之外,经了解,在英文版的Windows操作系统下,界面偏移会不存在。

因为是采用PC机软件控制的缘故,完全没有传统收发信机的那种操控感觉,代之而像操作电脑一样,通过菜单和点击屏幕上的按钮进行各种的调整和操控,鼠标的左右键和滚轮都派上了用场,初次使用可能需要一段时间慢慢适应。

如果嫌操纵感觉不够,还可以配上大波轮操控器选件。大波轮操控器还可以在SmartSDR软件的程序菜单中按照自己的喜好自定义好大波轮操控器中各按钮和大波轮旋钮的操作功能定义,使用起来就操作感十足了。

大波轮操控器选件

【微信公众号CQ现代通信】我初次使用这个大波轮操控器时还闹了笑话,以为是将它插到FLEX-6500机器的USB口上用的,经过试验之后才知道是应该插在电脑的USB口上的。

如果用触摸屏电脑操控起来的感觉不知道如何?

FLEX-6000系列机器如果采用最新的选件——带彩色液晶显示屏的操作控制台,估计就不需用PC电脑,操控起来就十足是一台传统小型收发信机的感觉了。

开机操作

【微信公众号CQ现代通信】经过实际测试,FLEX-6500的工作频率范围是0.03~74MHz(FLEX-6700是0.03~77MHz、135~175MHz),机器有一个接收通道(FLEX-6700有2个独立接收通道),在软件中能够创建4个全功能的独立接收机(切片接收机)同时工作(FLEX-6700有8个切片接收机),每个切片接收机可以执行独立的功能和参数设置,例如频率、模式、带宽和DSP设置等等,还可以指定声音的大小甚至输出所处的声道位置。如果戴着立体声耳机,通过调整让四个切片接收机通道的输出声音处于不同的声像位置,听起来有种新奇过瘾的感觉。

首先,对机器进行静态测试。其中最感兴趣的是机器的灵敏度。令人惊讶的是把信号发生器的输出一直调到尽头的-137dBm,机器仍然有输出!机器的本底噪声在-140dBm之下,而且各频段基本没有什么变化。

在SmartSDR软件的“ANT”钮中调整RF输入的放大或衰减器,其噪声电平也基本没有变化,以至于开始测试时曾怀疑调整是否有效。至后来加入信号进行实测后,才证实电路的放大和衰减器是有作用的。在后来接上天线进行实际信号测试时,就可以看到RF输入的放大或衰减器的明显作用,特别对于去除低波段的临邻近强干扰信号的抑制是非常有效的。

经过测试,各种模式的接收灵敏度基本差不多,通过机器的频谱和瀑布图显示,发现机器在整个工作频率范围内的本底噪声都很均匀,也没有出现什么寄生信号,因而瀑布图的显示都显得很“干净”。机器的滤波器及其选择性性能也很好,通过调整带宽来分隔信号很准确,显得干净利落。在实际接收信号时,机器(软件)的很多带宽调整、滤波陷波和降噪等功能对于信号的处理都很给力,效果超出了传统收发信机的处理结果。如果有时间深入去研究,综合灵活地运用各种功能之后,估计出来的效果还会更好。

接下来是对机器进行动态测试。由于机器具有预选器可以阻挡波段之外的干扰信号,所以,实际的接收效果比通常的收发信机要好些。下面是机器实际接收效果图。

一边听广播电台(上面的频谱窗口)、一边监听15m波段业余电台信号(下面的频谱窗口)

一个CW比赛,20m波段密密麻麻的信号,看着频谱找空闲频率摆摊不会吹灰之力

比赛中,在40m波段主叫,同时也能看到15m和20m波段的传播状况

【微信公众号CQ现代通信】6m波段开通了,在同一个波段上同时监听四个信号

总的来说,试用的这台FLEX-6500接收性能是所用过的SDR机器之中最好的,无论是高波段还是低波段,特别是它超低的本底噪声、超高的动态范围和出奇的降噪效果让我惊异。

最后来测试机器的发射性能,FLEX-6500的标称发射功率是100W,与实际标称相符。

测试发射性能

各波段的发射功率比较平均,机器可以通过SmartSDR软件界面轻松地调整各波段的发射功率,SmartSDR软件会分别记住各波段的发射功率,而且可以分别设定正式使用和调谐时的发射功率。FLEX-6500内置有自动天线调谐器,在160m波段至6m波段范围内工作。但是试用时感觉初次调整需要的时间比较长。

通过SmartSDR软件还可以对机器的许多发射参数进行细致的调整,例如监听音量,CW的Sidetone、Speed、Pitch和声像位置等。

发射和接收都可以分别调整音频的频响(采用十段EQ调整)。发射时的音频处理还有NOR、DX和DX+三挡设置,对DX和DX+的处理方式估计是采用DSP软件方式以尽量压缩发射信号的动态范围,切除发射话音中的高低频成分,令发射信号的能量更加集中,但是,未知发射信号的实际听感和效果如何。

【微信公众号CQ现代通信】机器发射时,电脑屏幕上显示发射信号的频谱、入射功率以及SWR,但是,瀑布图上不会有显示。对于CW和数字模式的发射,SmartSDR软件有专门的参数调整板,甚至可以用键盘来发信息进行通联。要是SmartSDR软件具有CW和数字模式的解码显示功能就更好了。从网上了解到的信息,SmartSDR软件提供了虚拟的数字输入输出通道,就是说可以讲信号直接传递给CW SKIMMER、RTTY等软件进行解码了。

机器的整体散热效果很好,折腾大半天,机壳也还是微暖的状态。

散热效果出色

【微信公众号CQ现代通信】初步试玩了几天,已经感觉出FLEX-6500 SDR 这台机器的收发性能超群,SmartSDR软件的可玩性很高。

如果花点时间去挖掘SmartSDR软件上的更多功能,再配合互联网进行远程控制操纵等,必定会产生更多玩法,令乐趣无穷。

端午节威诺VR6600PRO团购活动进行中,马上查看!

http://weidian.com/item.html?itemID=1873367516

本文节选自《现代通信》杂志,作者吴国光(BA7IA),转载请注明出处:《现代通信》杂志订阅号【CQ现代通信】。

现代通信,中国火腿自己的杂志。

欢迎文笔好或外语好或人缘好的HAM加入CQ《现代通信》特约编辑团队,让我们一起服务中国HAM。留言会友台,点赞留余香