首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,018 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,658 阅读
3
gradle-5.4.1-all.zip下载
8,684 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,543 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,790 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
619
篇文章
累计收到
602
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
51
篇与
的结果
2021-08-27
vite2+vue3配置axios跨域
在根目录下有一个vite.config.jsimport {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: 'https://sing.lanol.cn/', changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') } } } })
2021年08月27日
598 阅读
0 评论
0 点赞
2021-08-23
ES6数组根据对象的某个属性去重
前言:es6的数组根据他其中某一个对象的key值来去重的封装方法封装方法如下: unique(arr, val) { const res = new Map() return arr.filter(item => !res.has(item[val]) && res.set(item[val], 1)) },调用使用方法:第一个参数是数组,第二个参数是你要根据哪个字段来去重 this.unique(DataList, 'GoodsId')来源:https://blog.csdn.net/qq_41619796/article/details/106259333
2021年08月23日
330 阅读
0 评论
0 点赞
2021-08-18
Vue3将数据导出为Excel—公司偷学技术的第1天
有一个任务要求是这样的,将抓取到的数据展示在页面之后,可以点击按钮导出问Excel文件。然后我翻项目原先的代码,也有类似的功能,并且导出之后网络图片也能够保存下来。用到了js-table2excel第一步安装 npm install js-table2excel第二步引入 import table2excel from 'js-table2excel'第三步使用 table2excel([列集合], [数据集合], '导出文件名')第三步生成表格需要传入三个参数列集合,数据集合和文件名。列集合格式如下:const column = [ { 'title':'表格中显示的标题', 'key':'数据集合中的键', 'type':'数据类型,text,image', 'width':'如果type为image可以设置宽度', 'height':'如果type为image可以设置高度', },{ 'title':'表格中显示的标题', 'key':'数据集合中的键', 'type':'数据类型,text,image', 'width':'如果type为image可以设置宽度', 'height':'如果type为image可以设置高度', }, ]至于数据集合这块要求不能套娃,就是数据必须全部在第一层,我就是因为这个然后踩坑了,不得不重新将数据清洗才传入,我的大概就是这样的。const exportData = [ { 'first':{ 'name':'张三', 'age':'18', }, 'second':{ 'money':1000, 'data':1 } },{ 'first':{ 'name':'A', 'age':'18', }, 'second':{ 'money':1000, 'data':1 } }, ]然后就报错了,被迫改成这样const exportData = [ { 'name':'张三', 'age':'18', 'money':1000, 'data':1 },{ 'name':'李四', 'age':'18', 'money':1000, 'data':1 }, ]图片源于网络,差不多这样
2021年08月18日
747 阅读
1 评论
0 点赞
2021-07-01
复制粘贴插件——clipboard.js的使用
clipboard.js为什么将文本复制到剪贴板应该不难。它不应该需要几十个步骤来配置或加载数百 KB。但最重要的是,它不应该依赖于 Flash 或任何臃肿的框架。这就是 clipboard.js 存在的原因。安装你可以在 npm 上得到它。npm install clipboard --save或者,如果您不喜欢包管理,只需 https://github.com/zenorocha/clipboard.js/archive/master.zip 。设置首先,包含位于dist文件夹中的脚本或从 第三方 CDN 提供商 加载它。<script src="dist/clipboard.min.js"></script>现在,您需要通过传递 DOM 选择器、HTML 元素或HTML 元素列表来实例化它。new ClipboardJS('.btn');在内部,我们需要获取与您的选择器匹配的所有元素,并为每个元素附加事件侦听器。但猜猜怎么了?如果您有数百个匹配项,则此操作会消耗大量内存。出于这个原因,我们使用事件委托,将多个事件侦听器替换为单个侦听器。毕竟,#perfmatters。用法我们正在经历一个声明式的复兴,这就是为什么我们决定利用HTML5 数据属性来提高可用性。从另一个元素复制文本一个非常常见的用例是从另一个元素复制内容。您可以通过data-clipboard-target在触发器元素中添加属性来实现。您在此属性中包含的值需要与另一个元素选择器相匹配。<!-- Target --> <input id="foo" value="https://github.com/zenorocha/clipboard.js.git"> <!-- Trigger --> <button class="btn" data-clipboard-target="#foo"> <img src="assets/clippy.svg" alt="Copy to clipboard"> </button>从另一个元素剪切文本此外,您可以定义一个data-clipboard-action属性来指定您是否想要copy或cut内容。如果省略此属性,copy将默认使用。<!-- Target --> <textarea id="bar">Mussum ipsum cacilds...</textarea> <!-- Trigger --> <button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar"> Cut to clipboard </button>正如您所料,该cut操作仅适用于或元素。从属性复制文本事实是,您甚至不需要另一个元素来复制其内容。您可以只data-clipboard-text在触发器元素中包含一个属性。<!-- Trigger --> <button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js"> Copy to clipboard </button>活动在某些情况下,您希望显示一些用户反馈或捕获复制/剪切操作后选择的内容。这就是为什么我们会触发诸如success和 之类的自定义事件以error供您聆听和实现您的自定义逻辑。var clipboard = new ClipboardJS('.btn'); clipboard.on('success', function(e) { console.info('Action:', e.action); console.info('Text:', e.text); console.info('Trigger:', e.trigger); e.clearSelection(); }); clipboard.on('error', function(e) { console.error('Action:', e.action); console.error('Trigger:', e.trigger); });高级用法如果您不想修改 HTML,可以使用非常方便的命令式 API。你需要做的就是声明一个函数,做你的事情,然后返回一个值。例如,如果您想动态设置 a target,则需要返回一个 Node.js 。new ClipboardJS('.btn', { target: function(trigger) { return trigger.nextElementSibling; } });如果您想动态设置 a text,您将返回一个字符串。new ClipboardJS('.btn', { text: function(trigger) { return trigger.getAttribute('aria-label'); } });要在 Bootstrap Modals 或任何其他更改焦点的库中使用,您需要将焦点元素设置为container值。new ClipboardJS('.btn', { container: document.getElementById('modal') });此外,如果您正在使用单页应用程序,您可能希望更精确地管理 DOM 的生命周期。以下是清理我们创建的事件和对象的方法。var clipboard = new ClipboardJS('.btn'); clipboard.destroy();
2021年07月01日
349 阅读
0 评论
0 点赞
2021-06-11
Vue2封装axios,axios在Vue.cli中的使用
添加http.js文件在src目录下新增一个目录utils,并新增一个js文件http.js,用以实现axios的封装 编辑http.js,首先导入axios import axios from 'axios'定义Http Request公共信息,用以添加授权等 axios.interceptors.request.use( config => { let token = 'lanol' config.headers.token = token; if (config.method == 'get') { config.params.token = token } if (config.method == 'post') { config.data.token = token } return config; }, error => { return Promise.reject(err); } )封装Get方法export function get(uri, params = {}) { return new Promise((resolve, reject) => { axios.get(uri, { params: params }) .then(response => { resolve(response.data) }) .catch(err => { reject(err) }) }) }封装POST方法export function post(uri, data = {}) { return new Promise((resolve, reject) => { axios.get(uri, { params: params }) .then(response => { resolve(response.data) }) .catch(err => { reject(err) }) }) }封装patch请求export function patch(url, data = {}) { return new Promise((resolve, reject) => { axios.patch(url, data) .then(response => { resolve(response.data); }, err => { reject(err) }) }) }封装PUT请求export function put(url, data = {}) { return new Promise((resolve, reject) => { axios.put(url, data) .then(response => { resolve(response.data); }, err => { reject(err) }) }) }实现跨域const downloadUrl = url => { let iframe = document.createElement('iframe') iframe.style.display = 'none' iframe.src = url iframe.onload = function() { document.body.removeChild(iframe) } document.body.appendChild(iframe) }Main.js中引用import axios from 'axios' import {get,post} from '@/utils/http.js' Vue.prototype.$ajax = axios Vue.prototype.$post = post Vue.prototype.$get = get使用http.js<template> <div id="app"> {{Lan}} </div> </template> <script> import axios from '@/utils/http.js' export default { name: 'app', components: { }, data() { return { Lan: '' } }, mounted() { this.$get('https://v1.hitokoto.cn').then((response)=>{ this.Lan = response.hitokoto console.log(response); }) } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style> 参考链接https://www.cnblogs.com/zhangbs/p/9681032.html
2021年06月11日
396 阅读
0 评论
0 点赞
2021-05-28
微信小程序扫描二维码进入小程序指定页面并传递参数
诶,我会,我就不写,诶,我就是玩儿
2021年05月28日
427 阅读
0 评论
0 点赞
2021-05-14
论Ajax请求拦截表单时为何不能return值,异步和同步
现在验证表单经常会用到Ajax验证,去查看用户名是否存在或者手机号是否存在啥的,为了方便,就可以使用Ajax进行验证了。第一次遇到这个问题是上课时用.Net MVC然后里面有一个要求是验证用户名是否存在,一开始我也是半天请求之后不能进行表单拦截。随便写了一个样例如下: public ActionResult Index() { return View(); } public bool veruser(string username) { return true ? username.Equals("Lan") : false; }@{ ViewBag.Title = "Home Page"; } <div class="row"> <form class="bs-example bs-example-form" action="/" method="post"> <div class="form-group"> <label for="name">用户名</label> <input type="text" class="form-control" id="username" placeholder="请输入用户名"> </div> <button type="submit" onclick="return checkUser()" class="btn btn-default">提交</button> </form> </div> @section scripts{ <script> function checkUser() { $.ajax({ url: "/Home/veruser", method: "POST", data: { "username": $("#username").val() }, success: function (res) { console.log("请求返回值:" + res) return true ? res === "True" : false } }) } </script> }大概是这样的,如果请求的用户名中包含Lan则返回true否则返回false实际页面效果展示:可以看到控制台,一次输出FALSE一次输出True,但是两次页面都跳转了,所以拦截没有成功。然后我以为是ajax里面不能返回值,然后进行了修改,在外面指定了一个result变量,进行赋值,然后再return这个result<script> function checkUser() { var result = false; $.ajax({ url: "/Home/veruser", method: "POST", data: { "username": $("#username").val() }, success: function (res) { console.log("请求返回值:" + res) result = true ? res === "True" : false } }) console.log(result) return result } </script>然后发现赋值没有附上,然后我以为是变量的作用域问题,于是又指定了一个that去指定方法中的this,于是这样赋值直接为空然后偶尔几次,还能重新赋值,这时候考虑到是不是线程问题。后来百度发现Ajax默认是开启异步的,恍然大悟。于是将async关闭后。 <script> function checkUser() { $.ajax({ url: "/Home/veruser", method: "POST", async: false, data: { "username": $("#username").val() }, success: function (res) { result = true ? res === "True" : false } }) console.log(result) return result } </script>成功解决。其实一开始我用的教室电脑,反应可能没那么快,所以能够赋值到result上,我刚刚重现的时候用的自己电脑,速度可能快一些,所以来不及赋值就走了。之前我以为是作用域问题,然后看似好像解决了,但是其实是错误的,昨天我用Python写验证拦截的时候,发现也是直接跳转了,试了一节课,总算发现了Ajax异步的问题。
2021年05月14日
479 阅读
1 评论
1 点赞
1
2
3
4
...
8