几个常用js库,别再重复造轮子了,2024年最新轻松获得一线大厂面试offer

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文


rc-upload


功能: 文件上传下载拖拽文件 及文件夹等

var Upload = require(‘rc-upload’);

var React = require(‘react’);

React.render(, container);

react-copy-to-clipboard 、clipboard


功能:react 复制粘贴

npm install --save react react-copy-to-clipboard

import React from ‘react’;

import ReactDOM from ‘react-dom’;

import {CopyToClipboard} from ‘react-copy-to-clipboard’;

class App extends React.Component {

state = {

value: ‘’,

copied: false,

};

render() {

return (

<input value={this.state.value}

onChange={({target: {value}}) => this.setState({value, copied: false})} />

<CopyToClipboard text={this.state.value}

onCopy={() => this.setState({copied: true})}>

Copy to clipboard with span

<CopyToClipboard text={this.state.value}

onCopy={() => this.setState({copied: true})}>

Copy to clipboard with button

{this.state.copied ? <span style={{color: ‘red’}}>Copied. : null}

);

}

}

const appRoot = document.createElement(‘div’);

document.body.appendChild(appRoot);

ReactDOM.render(, appRoot);


numeral


功能:一个用于格式化和处理数字的javascript库。

var value = myNumeral.value();

// 1000

var myNumeral2 = numeral(‘1,000’);

var value2 = myNumeral2.value();

// 1000


omit.js


功能:返回 在目标对象中 omit[删除; 忽略] 指定属性的对象; 实用程序功能,用于创建删除了某些字段的对象的浅表副本。

npm i --save omit.js

omit(obj: Object, fields: string[]): Object

var omit = require(‘omit.js’);

omit({ name: ‘Benjy’, age: 18 }, [ ‘name’ ]); // => { age: 18


Moment.js


功能:一个JavaScript日期库,用于解析,验证,操作和格式化日期。

moment().format(‘MMMM Do YYYY, h:mm:ss a’); // December 22nd 2020, 10:55:15 am

moment().format(‘dddd’); // Tuesday

moment().format(“MMM Do YY”); // Dec 22nd 20

moment().format(‘YYYY [escaped] YYYY’); // 2020 escaped 2020

moment().format();

Day.js


功能:Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js

dayjs().format(‘{YYYY} MM-DDTHH:mm:ss SSS [Z] A’) // 展示

dayjs()

.set(‘month’, 3)

.month() // 获取

dayjs().add(1, ‘year’) // 处理

dayjs().isBefore(dayjs()) // 查询

milliseconds


==~~~~功能==:用于将时间转换为毫秒。

var ms = require(‘milliseconds’);

ms.seconds(2); // 2000

ms.minutes(2); // 120000

ms.hours(2); // 7200000

ms.days(2); // 172800000

ms.weeks(2); // 1209600000

ms.months(2); // 5259600000

ms.years(2); // 63115200000

filesize


功能:filesize.js提供了一种简单的方法来从数字(浮点数或整数)或字符串中获取人类可读的文件大小字符串。

npm i filesize

filesize(500); // “500 B”

filesize(500, {bits: true}); // “4 Kb”

filesize(265318, {base: 10}); // “265.32 kB”

filesize(265318); // “259.1 KB”

filesize(265318, {round: 0}); // “259 KB”

filesize(265318, {output: “array”}); // [259.1, “KB”]

filesize(265318, {output: “object”}); // {value: 259.1, symbol: “KB”, exponent: 1}

filesize(1, {symbols: {B: “Б”}}); // “1 Б”

filesize(1024); // “1 KB”

filesize(1024, {exponent: 0}); // “1024 B”

filesize(1024, {output: “exponent”}); // 1

filesize(265318, {standard: “iec”}); // “259.1 KiB”

filesize(265318, {standard: “iec”, fullform: true}); // “259.1 kibibytes”

filesize(12, {fullform: true, fullforms: [“байтов”]}); // “12 байтов”

filesize(265318, {separator: “,”}); // “259,1 KB”

filesize(265318, {locale: “de”}); // “259,1 KB”

react-markdown


功能:使用备注的React的Markdown组件。

import { Row, Col, Menu, Affix, Anchor } from ‘antd’;

import ReactMarkdown from ‘react-markdown/with-html’;

import { isEmpty } from “lodash”;

import HeadBlock from ‘./HeadBlock’;

import ‘github-markdown-css/github-markdown.css’

import ‘./index.less’;

const { Link } = Anchor;

const articles = {

‘1’: ‘/developer_guide.md’,

‘2’: ‘/user_manual.md’

}

/**

  • @param lists

  • 这里只做两级处理

*/

export const navsToTree = (lists: any[]) => {

if (isEmpty(lists)) return [];

// 提取第一个level为最大level 后续比他大的一律为同级

const maxLevel = lists[0].level;

const newLists: any[] = [];

lists.forEach((item: any) => {

// 一级 同级

if (item.level <= maxLevel) {

newLists.push(item)

} else {

// 非同级

if (newLists[newLists.length - 1].children) {

newLists[newLists.length - 1].children.push(item)

} else {

newLists[newLists.length - 1].children = [item]

}

}

})

return newLists;

}

const NormalTest: React.FC = () => {

const [currentArticle, setCurrentArticle] = useState<{ url: string, content: any }>({ url: ‘’, content: ‘’ });

const [treeNavs, setTreeNavs] = useState<any[]>([])

// 初始为开发文档

useEffect(() => {

// console.log(1);

changeCurrentArticle(articles[‘1’])

}, [])

// 这里是根据文档修改进行获取目录

useEffect(() => {

/**

  • 获取所有的文章标题

*/

// console.log(currentArticle);

const markdownNavs = document.querySelectorAll(‘.article-nav’)

const navs: any[] = [];

markdownNavs.forEach((item: any) => {

const level = item.getAttribute(‘data-level’);

const value = item.textContent;

const nodeKey = item.id;

navs.push({ level, value, nodeKey })

})

transArticleNavs(navs)

}, [currentArticle.content])

// 更改当前文档

const changeCurrentArticle = async (url: string) => {

const res = await fetch(url);

const content = await res.text();

setCurrentArticle({ …currentArticle, content, url })

}

// 书籍导航点击

const menuOnClick = (e: any) => {

const url = articles[e.key]

changeCurrentArticle(url)

}

// 转换为文章右侧目录

const transArticleNavs = (navs: any) => {

// 转换为二级导航

const treedevelopDocs = navsToTree(navs);

setTreeNavs(treedevelopDocs)

}

return (

<>

<Menu.Item key=“1”>开发文档</Menu.Item>

<Menu.Item key=“2”>使用文档</Menu.Item>

<ReactMarkdown

className=“markdown-body”

source={currentArticle.content}

escapeHtml={false}

renderers={{

heading: HeadBlock

}}

/>

<Anchor style={{ width: 160 }}>

{

treeNavs.map((item: any) => {

if (item.children) {

return (

{

item.children.map((childItem: any) => (

))

}

)

} else {

return (

)

}

})

}

</>

);

};

export default NormalTest;

import React from ‘react’;

const HeadBlock = (props) => {

const { level, children } = props;

const { nodeKey } = children[0].props;

return (

<>

{React.createElement(h${level}, { className: ‘article-nav’, id: nodeKey, ‘data-level’: level }, children)}

</>

);

}

export default HeadBlock;

cytoscape | cytoscape-dagre


功能:Cytoscape.js是功能齐全的图论库。您是否需要对关系数据进行建模和/或可视化,例如生物数据或社交网络?如果是这样,Cytoscape.js就是您所需要的。Cytoscape.js包含一个图形理论模型和一个用于显示交互式图形的可选渲染器。该库旨在使程序员和科学家尽可能轻松地在其应用程序中使用图论,无论是用于Node.js应用程序中的服务器端分析还是用于丰富的用户界面。

Lodash


功能:函数工具类库

// Load the full build.

var _ = require(‘lodash’);

// Load the core build.

var _ = require(‘lodash/core’);

// Load the FP build for immutable auto-curried iteratee-first data-last methods.

var fp = require(‘lodash/fp’);

// Load method categories.

var array = require(‘lodash/array’);

var object = require(‘lodash/fp/object’);

// Cherry-pick methods for smaller browserify/rollup/webpack bundles.

var at = require(‘lodash/at’);

var curryN = require(‘lodash/fp/curryN’);

patch-package node


功能:npm yran 补丁,用于改node_modules

cross-env node


功能:

cross-env这是一款运行跨平台设置和使用环境变量的脚本。

npm install --save-dev cross-env

{

“scripts”: {

“parentScript”: “cross-env GREET=“Joe” npm run childScript”,

“childScript”: “cross-env-shell “echo Hello $GREET””

}

}

bignumber.js


功能:一个用于任意精度十进制和非十进制算术的JavaScript库

https://mikemcl.github.io/bignumber.js/

https://juejin.cn/post/6844903704714280968#heading-7

QRCode.js、 qrcode.vue


功能:

npm install --save qrcode.vue

npm i qrcodejs2

getBlob(base64) {

const mimeString = base64.split(‘,’)[0].split(‘:’)[1].split(‘;’)[0]; // mime类型

const byteString = atob(base64.split(‘,’)[1]); // base64 解码

const arrayBuffer = new ArrayBuffer(byteString.length); // 创建缓冲数组

const intArray = new Uint8Array(arrayBuffer); // 创建视图

for (let i = 0; i < byteString.length; i += 1) {

intArray[i] = byteString.charCodeAt(i);

}

return new Blob([intArray], {

type: mimeString,

});

},

savePicture(Url = this.qrcodeUrl) {

const blob = new Blob([‘’], { type: ‘application/octet-stream’ });

const url = URL.createObjectURL(blob);

const a = document.createElement(‘a’);

a.href = Url;

// eslint-disable-next-line prefer-destructuring

a.download = Url.replace(/(./)([^.]+.*)/gi, ‘$2’).split(‘?’)[0];

const e = document.createEvent(‘MouseEvents’);

e.initMouseEvent(

‘click’,

true,

false,

window,

0,

0,

0,

0,

0,

false,

false,

false,

false,

0,

null,

);

a.dispatchEvent(e);

URL.revokeObjectURL(url);

},

_qrcode(url) {

const div = document.createElement(‘div’);

// eslint-disable-next-line new-cap

const code = new QRCode(div, {

text: url,

width: 500,

height: 500,

colorDark: ‘#000000’,

colorLight: ‘#ffffff’,

correctLevel: QRCode.CorrectLevel.L,

});

// 这里如果需要在页面上展示的话,就将div节点给添加到dom树上去;node.appendChild(div)

const canvas = code._el.querySelector(‘canvas’); // 获取生成二维码中的canvas,并将canvas转换成base64

const base64Text = canvas.toDataURL(‘image/png’);

const blob = this.getBlob(base64Text); // 将base64转换成blob对象

return window.URL.createObjectURL(blob);

},

cssnanojs-beautify


功能: css js 压缩工具

cors node


功能:CORS是一个node.js软件包,用于提供可用于通过各种选项启用CORS的Connect / Express中间件。

npm install cors

var cors = require(‘cors’);

app.use(

cors({

origin: [‘http://localhost:8000’],

methods: [‘GET’, ‘POST’],

alloweHeaders: [‘Conten-Type’, ‘Authorization’],

})

);

countup.js


功能:数字滚动插件使用方法详解

npm i countup.js

interface CountUpOptions {

startVal?: number; // number to start at (0)

decimalPlaces?: number; // number of decimal places (0)

duration?: number; // animation duration in seconds (2)

useGrouping?: boolean; // example: 1,000 vs 1000 (true)

useEasing?: boolean; // ease animation (true)

smartEasingThreshold?: number; // smooth easing for large numbers above this if useEasing (999)

smartEasingAmount?: number; // amount to be eased for numbers above threshold (333)

separator?: string; // grouping separator (‘,’)

decimal?: string; // decimal (‘.’)

// easingFn: easing function for animation (easeOutExpo)

easingFn?: (t: number, b: number, c: number, d: number) => number;

formattingFn?: (n: number) => string; // this function formats result

prefix?: string; // text prepended to result

suffix?: string; // text appended to result

numerals?: string[]; // numeral glyph substitution

}

js-base64


功能:另一个Base64转码器。

npm install --save js-base64

require=require(‘esm’)(module);

import {Base64} from ‘js-base64’;

let latin = ‘dankogai’;

let utf8 = ‘小飼弾’

let u8s = new Uint8Array([100,97,110,107,111,103,97,105]);

Base64.encode(latin); // ZGFua29nYWk=

Base64.btoa(latin); // ZGFua29nYWk=

Base64.btoa(utf8); // raises exception

Base64.fromUint8Array(u8s); // ZGFua29nYWk=

Base64.fromUint8Array(u8s, true); // ZGFua29nYW which is URI safe

Base64.encode(utf8); // 5bCP6aO85by+

Base64.encode(utf8, true) // 5bCP6aO85by-

Base64.encodeURI(utf8); // 5bCP6aO85by-

json-bigint


功能: Native Bigint是最近添加到JS的,因此我们添加了一个利用它的选项,而不是bignumber.js。但是,使用本机BigInt进行解析仍然是向后兼容的选项。

var JSONbig = require(‘json-bigint’);

var json = ‘{ “value” : 9223372036854775807, “v2”: 123 }’;

console.log(‘Input:’, json);

console.log(‘’);

console.log(‘node.js built-in JSON:’);

var r = JSON.parse(json);

console.log('JSON.parse(input).value : ', r.value.toString());

console.log(‘JSON.stringify(JSON.parse(input)):’, JSON.stringify®);

console.log(‘\n\nbig number JSON:’);

var r1 = JSONbig.parse(json);

console.log('JSONbig.parse(input).value : ', r1.value.toString());

console.log(‘JSONbig.stringify(JSONbig.parse(input)):’, JSONbig.stringify(r1));

vuejs-datetimepicker


功能:

npm install vuejs-datetimepicker

vue-meta-info


功能:基于Vue 2.0 的单页面 meta info 管理.

vue-smooth-scroll


功能:Scroll

npm install --save vue-smooth-scroll

import vueSmoothScroll from ‘vue-smooth-scroll’

Vue.use(vueSmoothScroll)

prismjs


功能:Prism是一个轻量,健壮,优雅的语法高亮库。这是Dabblet的衍生项目。

vuex-persistedstate


功能:

npm install --save vuex-persistedstate

import createPersistedState from ‘vuex-persistedstate’;

import * as Cookies from ‘js-cookie’;

import cookie from ‘cookie’;

export default ({ store, req }) => {

createPersistedState({

paths: […],

storage: {

getItem: (key) => {

// See https://nuxtjs.org/guide/plugins/#using-process-flags

if (process.server) {

const parsedCookies = cookie.parse(req.headers.cookie);

return parsedCookies[key];

} else {

return Cookies.get(key);

}

},

// Please see https://github.com/js-cookie/js-cookie#json, on how to handle JSON.

setItem: (key, value) =>

Cookies.set(key, value, { expires: 365, secure: false }),

removeItem: key => Cookies.remove(key)

}

})(store);

};

vue-slider-component


功能:一个高度定制化的滑块组件

$ yarn add vue-slider-component

npm install vue-slider-component --save

CodeMirror


最后

我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。

篇幅有限,仅展示部分截图:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
e: false }),

removeItem: key => Cookies.remove(key)

}

})(store);

};

vue-slider-component


功能:一个高度定制化的滑块组件

$ yarn add vue-slider-component

npm install vue-slider-component --save

CodeMirror


最后

我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。

篇幅有限,仅展示部分截图:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-2u0C6um0-1713468716797)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自己写的一个网页开发常用效果与框架,可以自定义导出自己想要的部分。 1.通过帮助文档help.html查看所有效果与使用方法。 2.通过config.html配置符合你需要并导出js; 内容包含如下: A:效果类; 1.事件-同时兼容手机与pc的3种事件(start、move、end); 2.tab选项卡-各种切换6种; 3.电商产品主图-横向与纵向2种; 4.放大镜-电商主图放大镜、图鼠标悬停旁边出现放大版图效果各一个; 5.跑马灯-文字或图片不断档可支持鼠标悬停时停止; 6.仿alert弹窗-可以自定义样式,手机版pc版个一种; 7.列表下拉加载更多-伪数据加载与ajax异步加载个一种; 8.折叠菜单一个; 9.banner图效果-7种包含手机上支持手指滑动的; 10.时间轴-控制1种; 11.自定义滚动条-横向、纵向各一种; 12.临时禁用滚动条-禁用与启用方法各一个,也能禁用手机滚动条,同时解决px滚动条占用宽度问题。 13.图表等比例-使图片始终保持设定比例缩放等供3种不同形式; 14.回到顶部-点击回到浏览器顶部; 15.漂浮窗-小漂浮窗广告; 16.图集展示-偶尔能用到; 17.滚屏效果-手指上下滑动或鼠标滚轮滚动切换页面,可自己配一些动效!!!!!!; 18.常用表单验证; 19.左滑删除; 20.复选框全选与取消选中; 21.内容拖动!!!!!!; 22.dom输入; 23.单例定时器; 24.ios软键盘弹出fixed定位问题处理!!!!!!; B:架构类; 1.流程控制-主要解决多个ajax调用依赖问题; 2.面向对象的class方法-方便定义类与集成类; 3.require-实现模块化开发,简单实用; 提示:用!!!!!!标注结尾的在某些场景下可能出现bug;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值