只会Vue的我,一入职就让用React,用了这个工具库,我依然高效

由于公司最近项目周期紧张,还有一个项目因为人手不够排不开,时间非常紧张,所以决定招一个人来。这不,经过一段时间紧张的招聘,终于招到了一个前端妹子。妹子也坦白过,自己干了3年,都是使用的Vue开发,自己挺高效的。但如果入职想用React的话,会稍微费点劲儿。我说,没事,来就是了,我们都可以教你的。

但入职后发现,这个妹子人家一点也不拖拉,干活很高效。单独分给她的项目,她比我们几个干的还快,每天下班准时就走了,任务按时完成。终于到了分享会了,组长让妹子准备准备,分享一下高效开发的秘诀。

目录

1 初始化React项目

2 开始分享秘诀

2.1 注册 - 邮箱和手机号验证 

2.2 验证密码强度值

2.3 登录后存localStorage

2.4 需要判断是否手机端浏览器

2.5 日期转换

2.6 获取数据的详细类型

2.7 更多

3 最后


1 初始化React项目

没想到妹子做事还挺认真,分享并没有准备个PPT什么的,而是直接拿着电脑,要给我们手动演示她的高效秘诀。而且是从初始化React项目开发的,这让我们很欣慰。

首先是初始化React项目的命令,这个相信大家都很熟悉了:

第一步:启动终端

第二步:npm install -g create-react-app

第三步:create-react-app js-tool-big-box-website

注意:js-tool-big-box-website是我们要创建的那个项目名称)

第四步:cd js-tool-big-box-website

注意:将目录切换到js-tool-big-box-website项目下)

第五步:npm start

然后启动成功后,可以看到这样的界面:

2 开始分享秘诀

妹子说,自己不管使用Vue,还是React,高效开发的秘诀就是 js-tool-big-box 这个前端JS库

首先需要安装一下: npm install js-tool-big-box

2.1 注册 - 邮箱和手机号验证 

注册的时候,需要验证邮箱或者手机号,妹子问我们,大家平时怎么验证?我们说:不是有公共的正则验证呢,就是验证一下手机号和邮箱的格式呗,你应该在utils里加了公共方法了吧?或者是加到了表单验证里?

妹子摇摇头,说,用了js-tool-big-box工具库后,会省事很多,可以这样:

import logo from './logo.svg';
import './App.css';
import { matchBox } from 'js-tool-big-box';

function App() {
  const email1 = '232322@qq.com';
  const email2 = '232322qq.ff';
  const emailResult1 = matchBox.email(email1);
  const emailResult2 = matchBox.email(email2);
  console.log('emailResult1验证结果:', emailResult1); // true
  console.log('emailResult2验证结果:', emailResult2); // false

  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        js-tool-big-box,使React开发更加高效
      </header>
    </div>
  );
}

export default App;

2.2 验证密码强度值

验证密码强度值的时候呢,妹子问我们,大家平时怎么验证?我们说:不就是写个公共方法,判断必须大于几位,里面是否包含数字,字母,大写字母,特殊符号这样子吗?

妹子摇摇头,说,不是,我们可以这样来验证:

const pwd1 = '12345';
const pwd1Strength = matchBox.checkPasswordStrength(pwd1);
console.log('12345的密码强度值为:', pwd1Strength); // 0
const pwd2 = '123456';
const pwd2Strength = matchBox.checkPasswordStrength(pwd2);
console.log('123456的密码强度值为:', pwd2Strength); // 1
const pwd3 = '123456qwe';
const pwd3Strength = matchBox.checkPasswordStrength(pwd3);
console.log('123456qwe的密码强度值为:', pwd3Strength);  // 2
const pwd4 = '123456qweABC';
const pwd4Strength = matchBox.checkPasswordStrength(pwd4);
console.log('123456qweABC的密码强度值为:', pwd4Strength); // 3
const pwd5 = '123@456qwe=ABC';
const pwd5Strength = matchBox.checkPasswordStrength(pwd5);
console.log('123@456qwe=ABC的密码强度值为:', pwd5Strength); // 4

2.3 登录后存localStorage

登录后,需要将一些用户名存到localStorage里,妹子问,我们平时怎么存?我们说:就是直接拿到服务端数据后,存呗。妹子问:你们加过期时间不?我们说:有时候需要加。写个公共方法,传入key值,传入value值,传个过期时间,大家不都是这样?

妹子摇摇头,说,不是,我们可以这样来存:

import { storeBox } from 'js-tool-big-box';

storeBox.setLocalstorage('today', '星期一', 1000*6);

2.4 需要判断是否手机端浏览器

我们市场需要判断浏览器是否是手机端H5浏览器的时候,大家都怎么做?我们说:就是用一些内核判断一下呗,写好方法,然后在展示之处判断一下,展示哪些组件?不是这样子吗?

妹子又问:我这个需求,老板比较重视微信内置的浏览器,这样大家写的方法是不是就比较多了?我们说,那再写方法,针对微信内置浏览器的内核做一下判断呗。

妹子摇摇头,说,那样得写多少方法啊,可以用这个方法,很全面的:

如果你单纯的只是想判断一下是否是手机端浏览器,可以这样

import { browserBox } from 'js-tool-big-box';

const checkBrowser = browserBox.isMobileBrowser();
console.log('当前是手机端浏览器吗?', checkBrowser);

如果你需要更详细的,根据内核做一些判断,可以这样

const info = browserBox.getBrowserInfo();
console.log('=-=-=', info);

2.5 日期转换

妹子问,大家日常日期转换怎么做?如果服务端给的是一个时间戳的话?我们说:不就是引入一个js库,然后就开始使用呗?

妹子问:这次产品的要求是,年月日中间不是横岗,也不是冒号,竟然要求我显示这个符号 “~” ,也不是咋想的?然后我们问:你是不是获取了年月日,然后把年月日中间拼接上了这个符号呢?

妹子摇摇头,说,你可以这样:

import { timeBox } from 'js-tool-big-box';

const dateTime2 = timeBox.getFullDateTime(1719220131000, 'YYYY-MM-DD', '~');
console.log(dateTime2);  // 2024~06~24

2.6 获取数据的详细类型

妹子问,大家日常获取数据的类型怎么获取?我们说,typeof呀,instanceof呀,或者是 Object.prototype.toString.call 一下呗,

妹子摇摇头,说,你可以这样:

import { dataBox } from 'js-tool-big-box';

const numValue = 42;
console.log('42的具体数据类型:', dataBox.getDataType(numValue)); // [object Number]
const strValue = 'hello';
console.log('hello的具体数据类型:', dataBox.getDataType(strValue)); // [object String]
const booleanValue = true;
console.log('true的具体数据类型:', dataBox.getDataType(booleanValue)); // [object Boolean]
const undefinedValue = undefined;
console.log('undefined的具体数据类型:', dataBox.getDataType(undefinedValue)); // [object Undefined]
const nullValue = null;
console.log('null的具体数据类型:', dataBox.getDataType(nullValue)); // [object Null]
const objValue = {};
console.log('{}的具体数据类型:', dataBox.getDataType(objValue)); // [object Object]
const arrayValue = [];
console.log('[]的具体数据类型:', dataBox.getDataType(arrayValue)); // [object Array]
const functionValue = function(){};
console.log('function的具体数据类型:', dataBox.getDataType(functionValue)); // [object Function]
const dateValue = new Date();
console.log('date的具体数据类型:', dataBox.getDataType(dateValue)); // [object Date]
const regExpValue = /regex/;
console.log('regex的具体数据类型:', dataBox.getDataType(regExpValue)); // [object RegExp]

2.7 更多

估计妹子也是摇头摇的有点累了,后来演示的就快起来了,我后来也没听得太仔细,大概有,

比如我们做懒加载的时候,判断某个元素是否在可视范围内;

比如判断浏览器向上滚动还是向下滚动,距离底部和顶部的距离;

比如某个页面,需要根据列表下载一个excel文件啦;

比如生成一个UUID啦;

比如后面还有将小写数字转为大写中文啦,等等等等

3 最后

分享完了第二天,妹子就没来,我们还准备请教她具体js-tool-big-box的使用心得呢。据说是第一天分享的时候,摇头摇得把脖子扭到了,希望妹子能早日康复,早点来上班。

最后告诉你个消息: js-tool-big-box的npm地址是:js-tool-big-box的npm包地址

js-tool-big-box的git仓库地址:js-tool-big-box的github地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的银行排队呼叫系统设计

一.硬件方案 本系统是以排队抽号顺序为核心&#xff0c;客户利用客户端抽号&#xff0c;工作人员利用叫号端叫号&#xff1b;通过显示器及时显示当前所叫号数&#xff0c;客户及时了解排队信息&#xff0c;通过合理的程序结构来执行排队抽号。电路主要由51单片机最小系统LCD12…

ONLYOFFICE8.1-------宝藏级别桌面编辑器测评

简介 ONLYOFFICE 8.1 是一个功能强大的办公套件&#xff0c;提供了一系列广泛的功能&#xff0c;用于文档管理、协作和沟通。它包括用于创建和编辑文本文档、电子表格、演示文稿等的工具。ONLYOFFICE 8.1 的一些关键特性包括&#xff1a; 1. 协作&#xff1a;ONLYOFFICE 8.1 允…

Ubuntu-22.04 安装Confulence

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

【MySQL连接器(Python)指南】07-连接器其它参数

文章目录 前言MySQL身份验证选项字符编码事务时区SQL模式错误处理客户端标志启用和禁用类型转换通过SSL连接连接池协议压缩总结前言 MySQL连接器(Python),用于让Python程序能够访问MySQL数据库。要想让Python应用程序正确高效地使用MySQL数据,就需要深入了解MySQL连接器的特性…

Intellij Idea显示回退和前进按钮的方法

方法1 使用快捷键&#xff1a; 回到上一步 ctrl alt <-&#xff08;左方向键&#xff09;回到下一步 ctrl alt ->&#xff08;右方向键&#xff09; 方法2&#xff1a; Preferences -> Appearance & Behavior -> Menus and Toolbars -> Navigation B…

【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)

目录 一、信息安全的概念 1.1 信息安全的基本要素和范围 1.2 信息存储安全 1.3 网络安全 二、信息安全系统的组成框架 2.1 技术体系 2.2 组织机构体系 2.3 管理体系 三、 信息加解密技术 3.1 数据加密 3.2 对称加密技术 3.3 非对称加密算法 3.4 数字信封 3.5 信…

AMEYA360:广和通发布LTE Cat.1 bis模组MC610-GL,赋能全球漫游追踪器

广和通LTE Cat.1 bis模组MC610-GL搭载展锐8910平台&#xff0c;覆盖全球主流LTE频段&#xff0c;下行峰值速率达10.3Mbps&#xff0c;上行速率达5.1Mbps&#xff0c;满足全球终端对4G速率连接的需求;同时支持LTE和GSM双模通信&#xff0c;便于用户灵活切换网络。在尺寸封装上&a…

顶顶通呼叫中心中间件-透传uuid并且导入对端变量到本端(mod_cti基于Freeswitch)

一、配置拨号方案 win-ccadmin配置方法 点击拨号方案 -> 点击进入排队 -> 根据图中配置。如果不是排队转人工是机器人转人工那么就是在机器人那个拨号方案配置&#xff0c;并且需要配置在"cti_robot"之前即可 action"set" data"sip_h_X_tas…

揭秘:国产化系统加密

随着信息化时代的到来&#xff0c;数据安全已成为国家、企业和个人共同关注的焦点。政府系统国产化作为提高信息安全和自主可控能力的重要举措&#xff0c;正逐步得到广泛实施。在这一过程中&#xff0c;沙箱技术作为一种先进的安全机制&#xff0c;其在国产化系统加密效果方面…

element ui 的 el-date-picker 日期选择组件设置可选日期范围

有时候&#xff0c;在使用日历控件的时候&#xff0c;我们需要进行定制&#xff0c;控制用户只能在指定日期范围内进行日期选择&#xff0c;在这里&#xff0c;我使用了 element ui 的 el-date-picker 日期选择控件&#xff0c;控制只能选择当前月及往前的2个月&#xff0c;效果…

足底筋膜炎是怎么引起的,怎样治愈?

足底筋膜炎的引起原因及治愈方法可以按照以下几个方面进行清晰归纳&#xff1a; 一、引起原因 &#xff08;1&#xff09;生理因素&#xff1a; 足部缺陷&#xff1a;如扁平足、高弓足等足部问题&#xff0c;会导致足底筋膜受力不均或负荷过重&#xff0c;从而诱发足底筋膜炎。…

Git代码管理的常用操作

在VS022中&#xff0c;Git的管理要先建立本地或远程仓库&#xff0c;然后commit到本地&#xff0c;最后push到远程代码库。 或者不建立本地的情况&#xff0c;直接拉取已有的远程代码。 Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理文件的变化。它可以记录文件的修…

IT项目管理软件有哪些?10款推荐

本文将介绍10款it项目管理软件&#xff1a;PingCode&#xff0c;Worktile&#xff0c;monday.com&#xff0c;ClickUp&#xff0c;Asana&#xff0c;Wrike&#xff0c;Trello&#xff0c;Smartsheet&#xff0c;Jira&#xff0c;Zoho Projects。 在现代企业中&#xff0c;IT项目…

日立EX-PROII+系列全新升级,智慧随心控畅享新生活

随着科技的进步&#xff0c;各种智能家电也开始走入人们的生活&#xff0c;而在这个领域&#xff0c;日立用技术创新生活&#xff0c;不断为新时代注入活力&#xff0c;推出日立 EX-PROII系列家用净化中央空调&#xff0c;贯彻“小身材&#xff0c;大能量”核心设计理念&#x…

【数据采集】亮数据浏览器、亮网络解锁器实战指南

前言 继上次我们写了数据采集与AI分析&#xff0c;亮数据通义千问助力跨境电商前行的文章之后&#xff0c;好多小伙伴来后台留言&#xff0c;表示对亮数据的数据采集非常感兴趣&#xff0c;并且感觉用起来非常顺手&#xff0c;大大减少了小白用户获取数据的成本。 在这儿&…

Allegro如何单独导出一个封装?

Allegro如何单独导出一个封装? Allegro如何导出封装? 在用Allegro进行PCB设计时,有时候需要从其它的项目中导出需要的封装,但一般情况下不需要全部的封装,只需要其中的某一个封装,那么怎么导出呢? 具体操作方法如下 首先需要在Allegro的安装目录下安装两个文件。(文件附…

STM32学习和实践笔记(38):RTC实时时钟实验

1.STM32F1 RTC介绍 STM32 的实时时钟&#xff08; RTC&#xff09;是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置…

2024年Nano编辑器最新使用教程

Nano在大多数Linux发行版中找到&#xff0c;易于使用&#xff0c;其最常用的命令显示在其屏幕底部。 作为编辑配置和其他文件是Linux中的一种普遍的任务&#xff0c;知道如何使用该程序是否可以非常有用。Nano编辑器以及如何使用Nano编辑器在服务器上编辑文件是我们将在本指南中…

【Sklearn-LR驯化】一文搞懂分类基石模型-逻辑回归使用总结

【Sklearn-驯化】一文搞懂分类基石模型-逻辑回归使用总结 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&#xf…

第 3 章使用图像和标签

现在您已经对 SwiftUI 有了基本的了解,并了解了如何显示文本内容,现在是时候学习如何在应用中显示图像了。在本章中,我们将探讨Label最常见的用户界面组件之一的用法,以及Image用于在屏幕上渲染图像的视图。与上一章中所做的类似,我将通过构建一个简单的演示向您展示如何使…