- 博客(91)
- 收藏
- 关注
转载 部署pm2
PM2 是一个非常流行的 Node.js 进程管理工具,用于在生产环境中运行和监控 Node.js 应用程序。它提供了多种功能,帮助开发者更好地管理和优化他们的应用程序,pm2 能做的其实有很多,比如监听文件改动自动重启,统一管理多个进程,内置的负载均衡,日志系统等等,:PM2 可以轻松地启动、停止、重启和删除 Node.js 应用程序进程。它支持启动多个进程以利用多核 CPU,提高应用的性能和稳定性。:通过集群模式,PM2 可以创建多个应用实例并自动进行负载均衡,确保应用在高并发情况下仍能稳定运行。
2024-07-18 10:01:54
407
转载 electron-builder解决打包后找不到代码文件、打包指定资源到安装目录的问题
本人使用文本编辑器打开app.asar粗略的看了一下,发现所有files配置项指定的代码文件,都被打包进了app.asar这个文件中。个人猜测当浏览器访问app.asar/xxx时,electron会去app.asar中解析出对应的xxx文件返回给浏览器。那就必须将这个静态文件打包进应用程序,用户下载时使用electron主进程的node程序读取这个文件返回给用户。重点看resource文件夹下的app.asar文件,这个文件就是electron-builder。为额外资源,它们的作用就是打包额外的文件;
2024-04-17 17:02:06
2880
原创 uniapp 与原生android 的交互
uniapp打开第三方程序可以通过 HTML5+ API 的API 和反射获取Android的Intent对象来实现,有两种方式,先说最简单的。通过 runtime 可以跳转第三方程序,但是要指定的页面需要通过 runtime.openUrl 传入URLsheme地址。
2023-06-29 09:55:56
3201
原创 【vue】- 后台权限管理
每个公司都是自己的后台管理系统,但每个员工的权限是不一样的,如:经理可以进行员工管理、对员工信息进行删除等等...则这里进行权限管理可以根据后台给每个员工返回的数据进行处理。登录:当用户填写账户密码后台服务器验证通过之后,服务器返回一个token,拿到token存储起来,根据这个token来获取这个员工的数据进行页面的渲染。权限验证:通过token获取员工对应的权限数据,动态根据员工的权限渲染出对应的路由页面,通过 router.addRoutes 动态挂载这些路由。这里使用到 RBAC 的逻辑来实现。..
2022-06-16 11:27:31
969
原创 【JavaScript】- 实现图片放大镜效果
这里实现 鼠标移入显示一个放大镜 的效果,就好比商品看着太小,鼠标移动则会显示一个框出来,框里面就是鼠标移动商品的放大镜css样式:js:
2022-06-07 22:12:27
690
原创 【JavaScript】- 判断一个对象是否为空
对象不能直接进行判断是否为空let obj = {}console.log(obj ? true: false) // true判断这个对象是否有数据,有就返回true,否则false。但以上代码始终为true,这样我们无法去判断它是否为空。方法一:使用ES6的 Object.keys 方法判断 是否有 键(属性)const obj = {}let res = Object.keys(obj).length === 0 ? true : falseconsole.l
2022-05-29 22:25:33
165
原创 【JavaScript】- typeof 检测 nul 为什么返回 Object?
typeof null输出object,是JS存在的一个悠久的bug.JS初始版本使用的是32位二进制单元,,为了性能考虑使用低位存储变量的类型信息,低三位的数字用于表示该数据的类型。低三位数字和表示类型的对应关系如下:000: object - 当前存储的数据指向一个对象。1: int - 当前存储的数据是一个 31 位的有符号整数。010:double - 当前存储的数据指向一个双精度的浮点数。100: string - 当前存储的数据指向一个字符串。110: boolean - 当前存
2022-05-27 22:29:18
397
原创 【Vue】- 组件实现递归
使用name实现递归目标: 可以用组件的name属性值, 来注册组件名字问题: 组件名不是可以随便写的?答案: 我们封装的组件-可以自己定义name属性组件名-让使用者有个统一的前缀风格components/Com.vue<template> <div> <p>我是一个Com组件</p> </div></template><script>export d...
2022-05-23 20:16:22
494
原创 【Vue】- 报错 Error in render: “TypeError: Cannot read properties of undefined (reading ‘nickname‘)“
在created()钩子函数请求接口并报错数据,渲染在dom元素是可以正常渲染,但是在开发者工具中就会报错 Error in render: "TypeError: Cannot read properties of undefined (reading 'nickname')"意思是 在created调用封装请求接口的函数 ,获取到的数据再给保存起来并渲染到dom元素,不过数据渲染之前 dom元素会先渲染一次到渲染获取到的数据。那么就会导致渲染获取的数据会未定义,没有这个属性/对象。说通俗点就是.
2022-05-15 19:32:17
13999
3
原创 【JavaScript】- for循环中的let和var的区别
for (let i = 0; i < 5; i++) { setTimeout(() => console.log(i), 0);}// 输出: 0 1 2 3 4for (var i = 0; i < 5; i++) { setTimeout(() => console.log(i), 0, i);}// 输出: 5 5 5 5 5为什么var定义的变量会全是5呢?因为for循环是同步执行,而settimeout是异步执行。.
2022-05-11 22:27:32
335
原创 【npm错误】- npm ERR code ERESOLVE 和 npm ERR ERESOLVE could not resolve 问题
npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR!npm ERR! While resolving: shopcar-demo@0.1.0npm ERR! Found: webpack@5.72.0npm ERR! node_modules/webpacknpm ERR! peer webpack@"^4.0.0 || ^5.0.0" from @soda/friendly-errors-webpack-plu..
2022-05-07 17:58:53
14807
11
原创 【ES6】- at()方法
长久以来,JavaScript 不支持数组的负索引,如果要引用数组的最后一个成员,不能写成arr[-1],只能使用arr[arr.length - 1]。这是因为方括号运算符[]在 JavaScript 语言里面,不仅用于数组,还用于对象。对于对象来说,方括号里面就是键名,比如obj[1]引用的是键名为字符串1的键,同理obj[-1]引用的是键名为字符串-1的键。由于 JavaScript 的数组是特殊的对象,所以方括号里面的负数无法再有其他语义了,也就是说,不可能添加...
2022-05-06 22:51:15
2063
原创 【Vue】- created()方法
这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数。一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中。每一个阶段都会有一个钩子函数,方便开发者在不同阶段处理不同逻辑。一般可以在created函数中调用ajax获取页面初始化所需的数据。什么是生命周期呢?vue中的生命周期指的是 组件 从创建到销毁一个过程,在这个过程中,我们在每一个特定的阶段会触发一些方法( 这些方法具备一些功能),我们给这些方法起了个名字叫做( 生命周期钩子.
2022-05-04 23:01:00
4975
原创 改变数组顺序
setChange() {// 头部数据加入到末尾this.arr.push(this.arr[0]);// 再把头部的数据删除掉this.arr.shift();},
2022-05-02 21:02:13
327
原创 全局包nodemon的常见错误
以上错误解决方法:1、进入PowerShell 输入此命令:Start-Process powershell -Verb runAs 从普通模式转至管理员模式2、之后输入此命令:Set-ExecutionPolicy -Scope CurrentUser3、 出现ExecutionPolicy: ,填入RemoteSigned; 之后有提示就填Y4、关闭PowerShel ,然后执行get-ExecutionPolicy,发现变成了RemoteSigned,就成功了...
2022-04-30 09:50:14
345
原创 URLSearchParams 解析参数
URLSearchParams 构造器创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。平常我们通过查询字符串的方式传参需要通过对字符串进行处理后才能使用。URLSearchParams()中有帮我们做处理的方法直接返回处理后的数据格式:let params = new URLSearchParams('需要查询的URl'); 一般配合location.search使用URLSearchParams上的方法 has() 查询指定键名是..
2022-04-29 09:34:49
2316
3
原创 【nodejs】- favicon.ico请求问题处理
代码如下:// 导入http、fs、path模块const http = require('http')const fs = require('fs')const path = require('path')// 创建服务器const server = http.createServer((req, res) => { // 获取请求地址 let url = req.url // 获取要请求文件的路径 let pathUrl = path.join(_
2022-04-27 14:11:46
5217
1
原创 【git】- git合并冲突
对于同一个文件,如果有多个分支需要合并时,容易出现冲突。 合并分支时,如果出现冲突,只能手动处理,再次提交,一般的作法,把自己的代码放到冲突代码的后面即可。 冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替 我们决定使用哪一个。必须人为决定新代码内容。查看状态(检测到有文件有两处修改)解决冲突问题:编辑有冲突的文件,删除特殊符号,决定要使用的内容1.特殊符号: <<<<<&...
2022-04-23 22:22:20
973
原创 加载省市区
表单中有“省市县”联动效果。 开始时,先获取所有的省,放到第一个下拉框中 当“省”切换的时候,获取对应的市,并放入第二个下拉框中。 当“市”切换的时候,获取对应的县,并放入第三个下拉框中 加载省的数据这里的数据是使用axios获取后台的数据// 实现省市区级联// 加载省的数据--页面一加载就自动的加载省的数据,不用事件触发axios({ url: '/geo/province', method: 'get'}).then(r...
2022-04-22 23:07:58
354
原创 【Echarts】- 柱状图
步骤分析 封装好函数,为后续传入真实数据做准备 初始化echarts 设置配置项,空的option 即可 创建图表 查找官方示例 按需求,自定义配置图表 第一步:echarts基本步骤function barChart() { // 调用echarts的init创建一个图表实例 // echarts.init(dom元素):dom元素就是图表的容器 let myChart = echarts.init(docu...
2022-04-22 22:28:21
800
原创 【Echarts】- 折线图
步骤分析 封装好函数,为后续传入真实数据做准备 初始化echarts 设置配置项,空的option 即可 创建图表 查找官方示例 按需求,自定义配置图表 第一步:echarts基本步骤function lineChart() { // 调用echarts的init创建一个图表实例 // echarts.init(dom元素):dom元素就是图表的容器 let myChart = echarts.init(d...
2022-04-22 22:24:01
745
原创 【Echarts】- 制作饼图
效果大概是这样步骤分析 封装好函数,为后续传入真实数据做准备 初始化echarts 设置配置项,空的 option 即可 创建图表 查找官方示例 按需求,自定义配置图表 第一步:echarts基本步骤function pieChart() { let myChart = echarts.init(document.querySelector('.pie')); let option = {};...
2022-04-22 22:20:09
4206
原创 【JavaScript】- 计算对象数组的值出现的次数
实现效果:初始数据: let list = [ { name: "广东省", Number: 6 }, { name: "广东省", Number: 7 }, { name: "河南省", Number: 8 }, { name: "河南省", Number: 8 }, { name: "黑龙江", Number: 8 }, { name: "广东省.
2022-04-21 23:47:13
2347
1
原创 【jQuery】- form 表单 reset()方法不生效解决
Jquery 对form表单对象直接使用reset()方法是无法生效得,而且可能报错没有reset()这个方法。解决办法:$('#addModal form')[0].reset() // id为#addModal的元素,的子元素form
2022-04-21 20:06:33
2208
原创 【Ajax】- 封装自己的 ajax 函数
封装一个名为 itheima 的 Ajax 函数,调用它可以发起 GET 或 POST 请求:let btn = document.querySelector('button')btn.addEventListener('click', function() {// 使用自己封装的工具函数发请求和处理响应 itheima({ method: 'get', url: 'http://www.itcbc.com:3006/api/getbooks', succe
2022-04-20 22:11:54
269
1
原创 【Ajax】- 原生方式 XMLHttpRequest
1.什么是 XMLHttpRequest是浏览器内置的一个构造函数 作用:基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。 axios 中的 axios.get()、axios.post()、axios() 方法,都是基于 XMLHttpRequest(简称:XHR)异步操作 封装出来的! 请大家思考:我们能否不用 axios 封装的 Ajax 函数,直接基于 XMLHttpRequest 发起 Ajax 请求? 答案:完全可以!2.使用 XMLHttp
2022-04-20 22:09:42
5977
原创 【Ajax】- 使用 FormData() 实现文件上传
主要的实现步骤:1、使用文件选择器选择图片文件2、把用户选择的文件存入 FormData 对象3、使用 axios 把 FormData 发送给服务器4、模拟文件选择器的点击事件let iptFile = document.querySelector('#iptFile') // 用户选择文件之后所触发的事件:change iptFile.addEventListener('change', function () { // console.log(ip.
2022-04-20 22:01:02
5586
原创 【Ajax】- serialize() 和 FormData()的区别
serialize() 函数和 FormData() 都能够一次性获取到表单中name属性的数据1.jQuery 的 serialize() 函数jQuery 的 serialize() 函数能够一次性获取到表单中name属性的数据,它的语法格式如下: $('表单元素的选择器').serialize();注意点:需要先应用 jQuery.js 文件再使用方法axios({ url: 'http://www.itcbc.com:3006/api/addbook', me..
2022-04-20 21:57:01
1255
1
原创 表单验证插件bootstrapValidator
表单验证使用的是 bootstrapValidator 插件。(链接挂的是码云仓库地址) 网上有很多关于它的介绍,比如BootstrapValidator怎么用和BootstrapValidator使用指南 。 经过整理,总结它的使用步骤如下: 使用步骤: 先引入bootstrap.css 、jquery.js 和 bootstrap.js 引入 bootstrapValidator.css 和 bootstrapValidator.js 编写验证代码,..
2022-04-19 12:24:18
1021
1
原创 提示框插件toastr
提示框插件有很多,不同的框架中选择的也不一样。 案例中,提示框使用的是 toastr 插件。(挂的是GitHub链接,可能打不开) toastr文档 总结它的使用步骤如下: 使用步骤: 加载 toastr.css 和 toastr.js 文件 全局配置。为方便,我们将下面的配置单独写个toastr.js 作为全局配置,一般会放在utils(全局工具)文件夹中,使用时,加载这个配置文件即可 toastr.options = { // ...
2022-04-19 11:42:10
535
原创 【Ajax】- Ajax 基础用法
1.什么是AjaxAjax 是浏览器中的技术:用来实现客户端网页请求服务器的数据。 它的英文全称是 Asynchronous Javascript And XML,简称 Ajax。ajax 需要基于浏览器,意味着有浏览器才会有 ajax ,没有浏览器就没有我们所说的 ajax静态资源(网页,图片)不需要ajax,动态数据才需要ajax在前端领域,服务器可以看出一台电脑,客户端就是 浏览器生活中的Ajax :1.动态检测用户名是否被占用2.动态加载搜索的建议列表3.局部刷
2022-04-15 22:47:47
695
原创 【JavaScript】- createEvent() 创建自定义事件
document.createEvent 用于创建事件,在DOM Level 2 的事件中就有HTMLEvents,MouseEvents,UIEvents事件类型。DOM Level 3增加很多事件类型。语法:createEvent(eventType)参数 描述 eventType 想获取的Event对象的事件模块名。 关于有效的事件类型列表,请参阅”说明”部分。 返回值返回新创建的Event对象,具有指定的类型。说明该方...
2022-04-13 11:35:02
2977
原创 【ES6】- class继承
class继承Class 可以通过extends关键字实现继承,让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承,要清晰和方便很多。// 继承Person类中的sayHi方法class Person { sayHi(){ console.log("hello"); }}class Chinese extends Person {}// 继承Person类中的属性和方法class Person { cons..
2022-04-10 21:45:52
1115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人