前端项目中常用的工具包(拖拽排序表格、打印导出表格、文本复制等)【持续更新~~~】
表格类:
cdn库
cdn
vxe-table[开源的多功能表格]
简介
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等…
码云地址
官方API
官方带示例的API
sortable[功能强大的JavaScript 拖拽库]
简介:
Sortable.js是一款优秀的js拖拽库,支持ie9及以上版本ie浏览器和现代浏览器,也可以运行在移动触摸设备中。不依赖jQuery。支持 Meteor、AngularJS、React、Vue、Knockout框架和任何CSS库,如Bootstrap、Element UI。你可以用来拖拽div、table等元素。实现表格拖拽排序、拖拽排版等功能。
文档连接:
官方文档
备份链接
// 基础使用npm install sortablejs --saveimport Sortable from 'sortablejs';// 初始化配置
sorTableInit() {const node = document.getElementById("item-wrap"); // 获取要管理的容器节点Sortable.create(node,{ // 创建拖拽对象delay: 0, // 鼠标点击多久都可拖拽animation: 150, // 拖拽动画时间direction: 'horizontal', // 拖拽方向onEnd:({oldIndex,newIndex})=>{ // 拖拽完成后的回调 【该回调中可收到一个CustomEvent 对象,该对象中有 oldIndex,newIndex属性可用来进行对原有数据进行排序处理】let targeItem = this.itemList.splice(oldIndex,1)[0] // 拿到移动的数据元素this.itemList.splice(newIndex,0,targeItem) // 将移动的元素数据插入到移动的位置}})},
pl-table[完美解决element-ui表格万级数据渲染卡顿问题]
简介
使用pl-table解决 vue+elment el-table 或el-tree (表格列表或树形控件)渲染万条以上的大数据,数据过多导致卡顿问题。
文档连接:
参考一
GitHub链接
// 基本使用npm i pl-tablemain.js文件直接引入:// 支持 element 表格的无限滚动加载,文档:https://github.com/livelyPeng/pl-table
import plTable from 'pl-table';
import 'pl-table/themes/index.css';
Vue.use(plTable);将组件中使用的 el-table 标签 换成 plTable 即可
handsontable-vue [前端在线表格(Excel类型)]
<template><div id="example" ref="example"></div>
</template><script>
import Handsontable from "handsontable";
import "handsontable/dist/handsontable.full.css";
export default {name: "Handsontable",data() {return {tableData: [["日期", "Tesla", "Volvo", "Toyota", "Ford"],["2019", 10, 11, 12, 13],["2020", 20, 11, 14, 13],["2021", 30, 15, 12, 13],],};},mounted() {this.init()},methods: {init() {if(!this.$refs?.example) returnnew Handsontable(this.$refs.example, {data: this.tableData,rowHeaders: true,colHeaders: true,contextMenu:[ // 鼠标右键菜单内容'添加一行',]});},},
};
</script><style>
/*去除未激活的提示文本*/
.hot-display-license-info{display: none;
}
#hot-display-license-info {display: none;
}
</style>
npm
GitHub参考初始化配置
官网
核心API
博客参考
右击配置
工具函数库类:
deepmerge[实现对象的深度合并的js方法库]
npm链接
lodash[功能强大的js函数库]
官方文档
clipboard2[前端能够调用剪切板的一个插件]
npm链接
GitHub链接
优秀的博主链接
xe-utils 【强大的js工具函数类库】
npm使用
API文档
cross-env 【获取全局环境变量】
参考博客
1、给不同的编译命令指定不同环境"scripts": {"dev": "cross-env NODE_ENV=development nuxt",}2、全局会有一个 process.env.NODE_ENV 变量const env = process.env.NODE_ENV3、可以根据变量的值切换不同环境的API请求地址
json-bigint[解决json长数据精度问题]
npm i json-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(r));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));为 JSON 格式的字符串转
前端验证类:
vue-puzzle-vcode【拖拽滑块验证】
示例一
示例二
日期函数库
moment.js
官网
页面代码展示
highlight.js
npm install highlight.js
import Vue from 'vue'
import Hljs from 'highlight.js'
import 'highlight.js/styles/monokai-sublime.css' // 主题文件
// 封装成插件
let Highlight = {}
Highlight.install = function (Vue, options) {Vue.directive('highlight', function (el) {let blocks = el.querySelectorAll('pre code');blocks.forEach((block) => {Hljs.highlightBlock(block)})})
}
Vue.use(Highlight)
test:{"code":0,"msg":"success","data":{"project_list":"zzzz"}}<pre v-highlight><code class="javascript">{{test}}</code></pre>pre中不能有换行,否则会默认开头有空格!!!!!
npm
官网
参考博客
Monaco Editor【完美复刻vs code】
npm install vue-monaco@0.32.1
<template><MonacoEditor class="editor" v-model="code" language="javascript" :options="options" />
</template><script>
import MonacoEditor from 'vue-monaco'export default {components: {MonacoEditor},data() {return {code: 'const noop = () => {}',options:{readOnly: true,automaticLayout: true,}}}
}
</script><style>
.editor {width: 600px;height: 800px;
}
</style>
npm
官网
vue-json-views[JSON展示工具]
- 用 pre标签或JJSON.stringify()方法也可实现
npm
博客链接
新手引导【intro.js】
博客链接
拖拽
vuegraggable
博客链接
Vue Grid Layout【页面拖拽布局】
官网
参考仓库
vue-resize-directive【自定拖拽放大布局】
npm
screenfull [全屏插件]
npm
svg-sprite-loader【vue项目中 svg 使用】
npm
参考博客
config.module.rule('svg').exclude.add(resolve('src/components/svgIcon')) // svg图标路径.end()config.module.rule('svg-icon').test(/\.svg$/).include.add(resolve('src/components/svgIcon')).end().use('svg-sprite-loader').loader('svg-sprite-loader').tap(options => {return {symbolId: 'svg-icon-[name]'}}).end()
vue-lottie 【 vue 项目中使用loading动画】
将ui的lodading图转为json数据,生成动画。
npm
参考博客
vue-seamless-scroll 【大屏列表无线滚动】
参考博客
参考博客2
<template><div id="app"><div class="backround"><div class="toptitle"><div class="item">日期</div><div class="item">姓名</div><div class="item">地址</div></div><vue-seamless-scroll:data="listData":class-option="optionHover"class="seamless-warp"><el-table :data="listData" border :show-header="status"><el-table-column prop="date" label="日期"> </el-table-column><el-table-column prop="title" label="姓名"> </el-table-column><el-table-column prop="test" label="地址"> </el-table-column></el-table></vue-seamless-scroll><div class="toptitle"><div class="item">总计</div><div class="item">111</div><div class="item">222</div></div></div></div>
</template><script>
export default {data() {return {status: false,listData: [{title: "无缝滚动第一行无缝滚动第一行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},{title: "无缝滚动第2行无缝滚动第2行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},{title: "无缝滚动第3行无缝滚动第3行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},{title: "无缝滚动第4行无缝滚动第4行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},{title: "无缝滚动第5行无缝滚动第5行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},{title: "无缝滚动第6行无缝滚动第6行",date: "2017-12-16",test: "测试",test2: "测试2",test3: "测试3",},],};},computed: {optionHover() {return {step: 0.5, // 数值越大速度滚动越快limitMoveNum: 3, // 开始无缝滚动的数据量 this.dataList.lengthhoverStop: false, // 是否开启鼠标悬停stopdirection: 1, // 0向下 1向上 2向左 3向右openWatch: true, // 开启数据实时监控刷新domsingleHeight: 50, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3waitTime: 1000, // 单步运动停止的时间(默认值1000ms)};},},
};
</script>
<style lang="less">
// .backround {// width: 100%;
// height: 1000px;
// }// 滚动范围
.seamless-warp {height: 200px;overflow: hidden;
}
.el-table .cell {text-align: center;
}
.toptitle {width: 100%;display: flex;background-color: gainsboro;margin-bottom: 10px;border-bottom: 1px solid gainsboro;background-color: transparent;color: red;
}
.item {width: 33.3%;height: 48px;line-height: 48px;text-align: center;
}
</style>
前端项目中常用的工具包(拖拽排序表格、打印导出表格、文本复制等)【持续更新~~~】相关推荐
- 前端项目中常用的轮子,提升开发效率
React UI组件库 1.Ant Design :文档齐全,社区生态良好,有手机版,还有PC版.可以用来快速创建手机/后台/内部应用的UI组件库.我的博客,就是那这个组件库制作的. 网址:https ...
- vue 项目 upload上传图片 并实现拖拽排序
upload 上传图片并实现拖拽功能 1.npm i -S vuedraggable 2.//页面引入 import draggable from "vuedraggable" c ...
- js 可拖拽排序、插入的表格
程序源码,为了一次性全粘贴把js全复制过来,很多和此无关 [b][color=red]以下为很久以前写的,时至今日可以用 jQuery 以更少的代码完成更多的功能.[/color][/b] 显示如图: ...
- vue项目中draggable实现拖拽排序
本文简要介绍在Vue项目中利用draggable实现拖拽排序的功能,先简单展示下具体功能. 如上图所示,点击[排序]之前list中每个item不能进行排序,当选中[排序]后可以拖拽的方式进行排序.下面 ...
- html列表拖拽排序插件,JS拖拽排序插件Sortable.js用法实例分析
本文实例讲述了JS拖拽排序插件Sortable.js用法.分享给大家供大家参考,具体如下: 最近由于项目功能设计的原因,需要对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好 ...
- vue项目中,兼容vue3.0 1.0 2.0 宫格拖拽排序,特殊五小一大六宫格拖拽
前端时间写了标准宫格拖拽排序的文章 1. 2.4.9.12等等标准宫格拖拽,基于vue-grid-layout 拖拽换位无刷新 vue项目中 基于vue-grid-layout开发的拖拽 ...
- vue项目中 五小一大六宫格拖拽排序,6宫格拖拽换位,矩阵拖拽排序
背景:项目中用到1.4.6.9.12.16宫格排序,拖拽换位等场景,项目是监控的视频矩阵,用户矩阵拖拽排序换位,之前已经实现1.4.9.12.16等矩阵式排列的拖拽排序,但是六宫格要求五小一大,之前的 ...
- 全网为数不多清晰可行的在VUE中使用sortable.js实现动态拖拽排序的教程!
目录 0 写在前面的 1 依赖安装 2 手写简单标签演示 3 要点 4 效果 0 写在前面的 首先批评以下文章 (10条消息) sortable.js 实现拖拽_sortablejs_花铛的博客-CS ...
- C#项目中常用到的设计模式
C#项目中常用到的设计模式 1. 引言 一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言.但是随着项目的迭代,往往需要将很多相同功能的代 ...
最新文章
- 如何在Form中使用键弹性域(Key Flexfield)
- 另类寻找百度文库下载地址
- mysql 重置id
- lk中内联调用的dsb()
- 以对象的形式动态获取宽高
- 如何用python自动改试卷_利用Python和Jinja2自动生成试卷
- mysql默认join是什么类型_MySQL:join语句类型
- 贵州2021高考状元成绩查询,2021年贵州高考状元名单公布,贵州高考状元学校资料及最高分...
- 重磅消息,Redis开源作者宣布不再维护Redis项目!
- 专访许鹏:谈C程序员修养及大型项目源码阅读与学习
- 百度地图实现鼠标绘制多边形并获取所有点坐标
- 05.python学习系列——画图库turtle(啥是小猪佩奇)
- 基于CORBA规范的中间件——CORBA基本原理
- mysql连接中文_MYSQL远程连接查询中文乱码
- 偷偷学Python,怎么高空建楼(Python自动化办公实现批量替换Word)
- RDKit | 建立溶解度预测的LightGBM回归模型
- Android手机扫描,电脑复制内容----手机实现无线扫码枪功能
- 直播技术——Rtmp协议
- adb devices后显示List of devices attached/unauthorized问题解决
- 高并发编程之生产者—消费者设计模式
热门文章
- 第八节 Electron主进程和渲染进程之间的通信
- 标量、向量、矩阵求导大全
- Handler 源码解析——Handler的创建
- Range fro mac(随机数字生成软件)
- 我的PHP爬虫实现一页式学习工具 : 我的超级文档查看利器 把文档所有页面当做一个页面输出 一直pagedown就可以快速学习 关键词完整全文搜索...
- PHP——四舍五入取整、向上取整、向下取整、小数截取
- RK3399平台开发系列讲解(IIO子系统)4.38、什么是IIO(Industrial I/O)
- mybatisPlus根据起止时间作为条件进行查询
- 两位数求和(xhh)
- Excel中的格式刷如何使用?