50 个让你高效编程的前端轮子

总结下今年用到的一些有意思的《js轮子》(只是大概列出些比较有意思的库,每个标题下都是超链接,可点击自行查阅) 希望能对您有用!如有意思的 轮子 可以在评论列出一起讨论下


color

https://www.npmjs.com/package/color

==功能==:JavaScript库,用于不可变的颜色转换和对CSS颜色字符串的支持。

npm install color
var color = Color('###7743CE').alpha(0.5).lighten(0.5);
console.log(color.hsl().string());  // 'hsla(262, 59%, 81%, 0.5)'
 
console.log(color.cmyk().round().array());  // [ 16, 25, 0, 8, 0.5 ]
 
console.log(color.ansi256().object());  // { ansi256: 183, alpha: 0.5 }

“我自己是一名从事了6年web前端开发的老程序员,今年年初我花了一个月整理了一份最适合2021年自学的web前端全套培训教程(视频+源码+笔记+项目实战),从最基础的HTML+CSS+JS到移动端HTML5以及各种框架和新技术都有整理,打包给每一位前端小伙伴,这里是前端学习者聚集地,欢迎初学和进阶中的小伙伴(所有前端教程关注我的微信公众号:web前端学习圈,关注后回复“web”即可领取)。

uuidjs

https://www.npmjs.com/package/uuidj

==功能==:UUID.js-JavaScript的RFC兼容UUID生成器

// Create a version 4 (random number-based) UUID object
var objV4 = UUID.genV4();
 
// Create a version 1 (time-based) UUID object
var objV1 = UUID.genV1();
 
// Create a UUID object from a hexadecimal string
var uuid = UUID.parse("a0e0f130-8c21-11df-92d9-95795a3bcd40");
 
// Get string representations of a UUID object
console.log(uuid.toString());   // "a0e0f130-8c21-11df-92d9-95795a3bcd40"
console.log(uuid.hexString);    // "a0e0f130-8c21-11df-92d9-95795a3bcd40"
console.log(uuid.hexNoDelim);   // "a0e0f1308c2111df92d995795a3bcd40"
console.log(uuid.bitString);    // "101000001110000 ... 1100110101000000"
console.log(uuid.urn);          // "urn:uuid:a0e0f130-8c21-11df-92d9-95795a3bcd40"
 
// Compare UUID objects
console.log(objV4.equals(objV1));   // false
 
// Get UUID version numbers
console.log(objV4.version); // 4
console.log(objV1.version); // 1
 
// Get internal field values in 3 different forms via 2 different accessors
console.log(uuid.intFields.timeLow);                // 2699096368
console.log(uuid.bitFields.timeMid);                // "1000110000100001"
console.log(uuid.hexFields.timeHiAndVersion);       // "11df"
console.log(uuid.intFields.clockSeqHiAndReserved);  // 146
console.log(uuid.bitFields.clockSeqLow);            // "11011001"
console.log(uuid.hexFields.node);                   // "95795a3bcd40"
 
console.log(uuid.intFields[0]);                     // 2699096368
console.log(uuid.bitFields[1]);                     // "1000110000100001"
console.log(uuid.hexFields[2]);                     // "11df"
console.log(uuid.intFields[3]);                     // 146
console.log(uuid.bitFields[4]);                     // "11011001"
console.log(uuid.hexFields[5]);  

rc-upload

https://www.npmjs.com/package/rc-upload

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

var Upload = require('rc-upload');
var React = require('react');
React.render(<Upload />, container);

react-copy-to-clipboard

https://www.npmjs.com/package/react-copy-to-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 (
      <div>
        <input value={this.state.value}
          onChange={({target: {value}}) => this.setState({value, copied: false})} />
 
        <CopyToClipboard text={this.state.value}
          onCopy={() => this.setState({copied: true})}>
          <span>Copy to clipboard with span</span>
        </CopyToClipboard>
 
        <CopyToClipboard text={this.state.value}
          onCopy={() => this.setState({copied: true})}>
          <button>Copy to clipboard with button</button>
        </CopyToClipboard>
 
        {this.state.copied ? <span style={
  {color: 'red'}}>Copied.</span> : null}
      </div>
    );
  }
}
 
const appRoot = document.createElement('div');
document.body.appendChild(appRoot);
ReactDOM.render(<App />, appRoot);

numeral

http://numeraljs.com/

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

var value = myNumeral.value();
// 1000

var myNumeral2 = numeral('1,000');

var value2 = myNumeral2.value();
// 1000

omit.js

https://www.npmjs.com/package/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

https://momentjs.com/

==功能==:一个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

https://github.com/iamkun/dayjs/blob/HEAD/docs/zh-cn/README.zh-CN.md

==功能==: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

https://github.com/HenrikJoreteg/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

https://www.npmjs.com/package/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&
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用SharpGL绘制一个轮子的示例代码。此代码假定您已经在Visual Studio中创建了一个SharpGL项目并配置了必要的引用。 ```csharp using SharpGL; public partial class Form1 : Form { private OpenGL gl; public Form1() { InitializeComponent(); gl = openGLControl.OpenGL; } private void openGLControl_OpenGLDraw(object sender, RenderEventArgs e) { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.LoadIdentity(); gl.Begin(OpenGL.GL_TRIANGLE_FAN); gl.Color(0.7f, 0.7f, 0.7f); gl.Vertex(0.0, 0.0); for (double angle = 0.0; angle <= 2.0 * Math.PI; angle += Math.PI / 6.0) { double x = 0.5 * Math.Sin(angle); double y = 0.5 * Math.Cos(angle); gl.Vertex(x, y); } gl.End(); gl.Begin(OpenGL.GL_TRIANGLE_STRIP); gl.Color(0.5f, 0.5f, 0.5f); for (double angle = 0.0; angle <= 2.0 * Math.PI; angle += Math.PI / 6.0) { double x = 0.5 * Math.Sin(angle); double y = 0.5 * Math.Cos(angle); gl.Vertex(x, y, -0.25); gl.Vertex(x, y, 0.25); } gl.Vertex(0.0, 0.5, -0.25); gl.Vertex(0.0, 0.5, 0.25); gl.End(); } } ``` 这个示例使用了OpenGL的基本图元`GL_TRIANGLE_FAN`和`GL_TRIANGLE_STRIP`。它将一个圆形绘制在xy平面上,并将另一个圆柱体连接到圆形上,形成一个轮子。圆柱体由多个三角形带组成,其中每个三角形带都是一个矩形,包含相邻两个垂直圆柱体表面的四个顶点。`GL_TRIANGLE_FAN`用于绘制圆形,`GL_TRIANGLE_STRIP`用于绘制圆柱体。 ### 回答2: 使用SharpGL绘制一个轮子可以分为以下几个步骤: 1. 初始化OpenGL环境:创建OpenGL控件,并设置视口(Viewport),投影透视矩阵和模型视图矩阵。 2. 绘制外圆环:使用OpenGL的画线函数(glBegin()和glEnd())绘制一个圆环,可以通过设置画线宽度和颜色来调整外圆环的样式。 3. 绘制内圆环:在外圆环的基础上,通过重新设置画线宽度和颜色,绘制一个半径较小的内圆环,形成轮子的中空效果。 4. 绘制轮辐:使用OpenGL的画线函数和旋转变换(glRotatef())来绘制轮子的辐条。可以根据需要确定辐条的数量和角度,保证轮辐均匀分布在轮子的内外圆环之间。 5. 绘制轴承:为了增加轮子的真实感,可以绘制一个中间的轴承结构。可以使用OpenGL的绘制几何体函数(如glutWireTorus())绘制一个环状结构。 6. 设置光照效果:可以使用OpenGL的光照函数(如glEnable(GL_LIGHTING)和glLightfv())来为轮子添加适当的光照效果,增强其视觉效果。 7. 渲染轮子:在完成上述绘制步骤后,将所有图形元素组合起来,并在OpenGL控件上进行渲染,使轮子显示在屏幕上。 以上是使用SharpGL绘制一个轮子的简要步骤说明,具体的实现过程可以根据个人的需求和具体应用场景进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值