设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。
设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型
,行为型
,结构型
三大类。
本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。
欢迎来到 技术栈

Vue Caleder
layout: post
title: vue element Calendar日历
tags: elementUi Calendar日历
categories: elementUi Calendar

Nvm Nodejs
layout: post
title: nvm丝滑切换nodejs
tags: nvm nodejs
categories: nvm
#### nvm安装的前提
现代化web开发避免不了各种版本的nodejs混用,因为开源项目的依赖版本参差不齐,取决于开发者的版本,如果下载后本地的环境有所区别,或多或少编译是难以一次性通过,这时候就适合用nodejs的版本管理工具nvm了,如果个人学习的话或者公司多年一直稳定版本还有从来不需要学习开源项目的话那一般也用不上这个工具,基本上这种情况也比较少
对于nvm安装切记一定不要提前安装官网的任何一个版本nodejs,可能造成后期干扰nvm的局部各种版本的nodejs测试发现仅需安装选择目录即可,环境变量nvm安装工具会自动配置,配置好了可以修改nodejs的位置,

Display copy
layout: post
title: 布局的常用方法
tags: css 布局
categories: css

Vue2 优化
layout: post
title: sync修饰符的作用
tags: vue 双向绑定
categories: vue

Vue Drag
layout: post
title: sync修饰符的作用
tags: vue VueDraggablePlus
categories: vue

Node Npm Nvm
layout: post
title: 最近项目出现多版本node和npm兼容的常见问题
tags: node npm webpack vite
categories:node npm

Scss语法
layout: post
title: scss使用的常用方法
tags: css scss
categories: scss

Wecat Tabbar
layout: post
title: 微信小程序自定义tabbar
tags: 小程序 原生微信开发
categories: 微信小程序开发

Eletron
layout: post
title: 桌面软件开发 electron
tags: 桌面软件开发 electron
categories: 桌面软件开发 electron
方式1:进入Git命令行窗口,然后输入如下命令。

Wecat
layout: post
title: 微信小程序自定义导航栏
tags: 小程序 原生微信开发
categories: 微信小程序开发

Vite
layout: post
title: Vite
tags: Vite package
categories:Vite

javascript 脚手架制作
** 通用脚手架 **
本脚手架主要方便个人开发,常用的项目脚手架个模板自己封装便于使用,在企业中节约重复造轮子的时间, 包含VUE脚手架常用的插件功能,其实就是提升复用率,目前完成了VUE3的PC端模版
npm i manix-sun-cli manix-sun-cli create <project name> 根据需求选择即可
- vue3 PC端后台模板
- vue2 PC端后台模板
- vue3 移动端模板
- vue2 移动端模板
- 微信小程序模板

免费激活Idea的热部署插件JRebel,解决连接失败报错,提供下载地址
免费激活Idea之热部署插件JRebel,解决连接失败报错
JRebel是一个实用的插件,它可以让你在不重启服务器的情况下,修改Java程序并即时生效。相信大家都有这样的经历:每次修改代码后都需要重新编译、打包、部署,然后重启服务器,这个过程非常耗时且繁琐。但是,如果你使用了JRebel,你就可以摆脱这些烦恼,轻松享受修改代码后立即生效的快感!

javascript webpack配置
- 题目1:数组查找指定和的下标 ``` 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

javascript webpack配置
1.前端模块化打包初识 commonjs语法形式
> user.js
const login = function(formData){
console.log("logoing")
return {}
}
const register = function(formData){
console.log("register")
}
module.exports = {
login:login,
register:register
}
>login_index.js 引入
const user =require('./user.js')
const resp = user.login({})

javascript开启网页录制功能ES6语法 async
var body = document.body;
body.addEventListener("click",async function(){
var stream = await navigator.mediaDevices.getDisplayMedia({video: true});
var mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") ?"video/webm; codecs=vp9" :"video/webm";
var mediaRecorder = new MediaRecorder(stream, {mimeType: mime});
//录制
var chunks = [];
mediaRecorder.addEventListener('dataavailable', function(e) {chunks.push(e.data)})
//停止
mediaRecorder.addEventListener('stop', function(){
var blob = new Blob(chunks, {type: chunks[0].type});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'video.webm';
a.click();
})
//手动启动
mediaRecorder.start()
});

vue常用的知识点
- ** 如何检测对象变化? ** 由于 JavaScript特性的限制,Vue.js不能检测到对象属性的添加或删除。因为Vue.js在初始化时将属性转化为 getter/setter,所以属性必须在data对象中定义,才能在初始化时让Vue.js转换它并让它响应,例如以下代码

javascript ES6重点语法记录
** 常用的API *** 一、下面是 Proxy 支持的拦截操作一览,一共 13 种。 ``` get(target, propKey, receiver):拦截对象属性的读取,比如proxy.foo和proxy[‘foo’]。 set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = v或proxy[‘foo’] = v,返回一个布尔值。 has(target, propKey):拦截propKey in proxy的操作,返回一个布尔值。 deleteProperty(target, propKey):拦截delete proxy[propKey]的操作,返回一个布尔值。 ownKeys(target):拦截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for…in循环,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而Object.keys()的返回结果仅包括目标对象自身的可遍历属性。 getOwnPropertyDescriptor(target, propKey):拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。 defineProperty(target, propKey, propDesc):拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值。 preventExtensions(target):拦截Object.preventExtensions(proxy),返回一个布尔值。 getPrototypeOf(target):拦截Object.getPrototypeOf(proxy),返回一个对象。 isExtensible(target):拦截Object.isExtensible(proxy),返回一个布尔值。 setPrototypeOf(target, proto):拦截Object.setPrototypeOf(proxy, proto),返回一个布尔值。如果目标对象是函数,那么还有两种额外操作可以拦截。 apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如proxy(…args)、proxy.call(object, …args)、proxy.apply(…)。 construct(target, args):拦截 Proxy 实例作为构造函数调用的操作,比如new proxy(…args)。

Es5 For
layout: post
title: javascript ES5事件委托
tags: javascript ES5
categories: ES5

Jekyll 主题抽离定制
其实挺简单 _config.yml 全局配置文件 _posts 放置博客文章的文件夹 img 存放图片的文件夹

javascript vue3 props 验证属性
HTML、CSS相关 HTML5 HTML5新特性 增强了表单,input新增了一些type: color—-定义调色板 tel—–定义包含电话号码的输入域 email—定义包含email地址的输入域 search–定义搜索域 number–定义包含数值的输入域 date—-定义选取日、月、年的输入域 Video视频标签; Audio音频标签; 语义化标签;datatime-local 定义文档类型的简写 地理定位;拖放api;Canvas图形绘制;富文本Web Storage:localStorage:没有时间限制的数据存储;sessionStorage:在浏览器关闭的时候就会清除

Jekyll Vue3免费博客制作
起因 其实近两年使用VUE场景多起来了我就想着把手上的项目都使用Vue重构一下,这样一看,我算是一个完美主义者吧,哈哈^__^ 这个项目其实也是之前的老项目基于ryby jekyll Liquid 模板解析的一个静态博客,其实经历还挺久的这个项目,应该16年我大学那会就翻墙弄的,后面因为兴趣爱好问题,静态博客无法满足自己的需求,其实有部分也在于之前精力有限,没有一直去定制所谓的模板,其实前端还是比较重要的,直接很大程度影响用户体验,所以深感前端重要性,也是打算把这个博客简单重构一下,奈何本人文化有限和能力有限,缺乏一个审美到位的UI合伙人,我的博客就一直搁浅,最近也是逼了自己一把,过年这几天就在家写了下,自己抄,哦,还是说借鉴了一部分网站的样式主题简单定制了下,其实这不是最关键的,关键的是你现在可以直接访问我的博客简单看看效果,下面是我简单重构的记录

github本地关联远程秘钥
### github本地关联远程秘钥 1、 进入到你当前用户的根目录的.ssh文件夹下。如我的地址是C:\Users\manixchen.ssh

markdown自动生成github博客(前篇)
- 为什么我要用这么不知名的语言写这个系统
- 好奇心驱使,热爱新鲜技术,希望避免重复性劳动
- 复用率高,每天写写markdown日记便可以同步到github
- 学的东西都来自开源,总的回馈点什么

javascript webpack经常用的插件包
一、 ** webpack安装配置 ,纯手动,官网提供了脚本这里不做介绍**
- npm install nodemon -g nodemon可以替代node 来观察代码更改并自动 启动关闭程序 全局安装即可, 后续使用命令nodemon server.is 替代 npde server.js

Vue3 Pinia
layout: post
title: pinia多种使用方法
tags: pinia
categories:pinia

Jianrong
layout: post
title: css兼容问题
tags: css 兼容
categories:css 兼容

javascript vite构建工具入门到上手
** 初始化 **
npm
npm init vite@latest
yarn
yarn create vite
pnpm
pnpm create vite

javascript vue3 props 验证属性
``` Props管理 Props管理对Vue组件至关重要,因为它可以以不同的方式创建。您还可以验证Prop、创建多个Prop并根据需要修改它们。

Ngrok Ip
layout: post
title: ngrok免费实现内网穿透
tags: ngrok 内网穿透
categories:ngrok 内网穿透

Jquery 3
layout: post
title: jquery
tags: javascript jquery
categories:jquery

Promise
layout: post
title: Promise
tags: javascript Promise
categories:Ajax Promise

javascript css3常用属性
CSS允许文本内容换行显示的方法有: 1.使用white-space属性:white-space属性可以控制文本内容的换行显示, 它有三个值,分别是normal、nowrap和pre,normal表示换行显示,nowrap表示不换行显示,pre表示按照原始格式显示,也就是按照原始文本中的换行符进行换行显示。 2.使用word-wrap属性:word-wrap属性可以控制文本内容的换行显示, 它有两个值,分别是normal和break-word,normal表示按照原始文本中的换行符进行换行显示,break-word表示在文本内容超出容器宽度时,会自动换行显示。 3.使用word-break属性:word-break属性可以控制文本内容的换行显示,它有三个值, 分别是normal、break-all和keep-all,normal表示按照原始文本中的换行符进行换行显示,break-all表示在文本内容超出容器宽度时,会自动换行显示,keep-all表示在文本内容超出容器宽度时,会自动换行显示,但是会保留单词的完整性。

Mobilejianrong
layout: post
title: 移动端兼容
tags: 移动端兼容
categories: 移动端兼容

Ajax
layout: post
title: ajax
tags: javascript ajax
categories: javascript ajax

javascript lodashjs常见对象的所有操作
* 简单介绍 *** Lodash 能够大幅度提高前端 JavaScript 编程的效率和可读性,使得代码编写更加快捷、简洁、易懂。如果你还没有使用过 Lodash,建议尝试使用它来优化你的项目,提高开发效率。向大家介绍或简单的展示一下它的能力,或许能够吸引到你。Lodash 是一个流行的 JavaScript 实用工具库,提供了许多常用的函数和工具,能够方便地处理集合、字符串、数值、函数等多种数据类型,减少编写重复代码的时间和精力。Lodash 的 API 设计与 ES6 的新特性相似,同时兼容了更早的浏览器版本。Lodash 支持模块化加载,可以通过 npm 或在浏览器中直接引入来使用。 Lodash 有多达 300 多个函数,每个函数都有详细的文档和示例,能够快速地满足各种编程需求。同时,Lodash 的功能也非常完善,比如数组、对象等的操作,以及日期、数学计算、函数式编程等多方面支持。Lodash 还提供了链式调用的方式,简化操作的流程。 *** npm install lodash **

windows下将服务文件一键打包成应用程序自动执行
在这个容器化包管理时代,前端打包工具等满天飞的时代想必你也会比较感兴趣这个话题(Webpack,Rollup,RequireJS,browserify)
很多小伙伴估计都没有听说过这个名词,打包工具其实就是将做好的程序用用户可以看到的方式制作成一个对应操作系统下的可执行应用,Windows下面必然就是打包成 .exe为后缀的,说起来高大上,其实就是一个难者亦易的事情,具体你看我怎么操作的就知道的

VUE3封装的一个功能
话不多说直接上代码,自定义控件管理音乐播放,同样原理可以实现播放器状态,进度条都可以,写代码就是需要思路和反复的锤炼,不妨试试手

node npm环境变量以及npm默认保存路径
I、软件包
安装nodejs》 路径:E:\nodejs

基础知识-设计模式与原则
设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。
设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型
,行为型
,结构型
三大类。
本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。

RMI
Java RMI 指的是远程方法调用 (Remote Method Invocation)。RMI能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法, 其威力体现在它强大的开发分布式网络应用的能力上,它可以被看作是RPC的Java版本。

Servlet乱码分析
我们知道,web浏览器会将form中的内容打包成HTTP请求体,然后发送到服务端,服务端对请求体解析后可以得到传递的数据。这当中包含两个过程:encode
与decode
。

spring security 探秘

Bean Validation
BeanValidation 可以帮助开发者方便地对数据进行校验,但它只是一个标准,只有一套接口,要想使用它的功能必须选择一种实现,hibernate-validator
是个不错的选择

Java中用js解析json
在java中如何解析json?fastjson?jackson?那未免太无趣了

SQL 拼接
在java中进行SQL拼接是一件无比痛苦的工作,这是由于需要通过判断参数动态生成SQL

DIY的 ajax 框架
话不多说,直接上源码,用了传说中的伪面向对象写法

JS 闭包
在JS中,当内部的方法被其他对象引用,如果内部的方法使用了外部方法的变量,将造成外部方法无法释放,变量将被保持,此时将形成闭包。

WebService

Java8 新特性

Java Concurrent
线程拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及进程状态。

八种排序

Java虚拟机

Effective Java

SSH

超类中的泛型
为了减少工作量,开发者往往喜欢将相同的特性放入超类,通过继承实现代码共享

Flex

Custom Fileupload

可重入锁
Java 中的锁是可重入的,当线程试图获得它自己占有的锁时,请求会成功。

Tomcat Https 配置
####1
.生成秘钥库

IP详细介绍-类型分类

XML使用语法以及注意事项

为什么要用补码表示负数
线程拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及进程状态。
Java 中的锁是可重入的,当线程试图获得它自己占有的锁时,请求会成功。
####1
.生成秘钥库
- 为什么我要用这么不知名的语言写这个系统
- 好奇心驱使,热爱新鲜技术,希望避免重复性劳动
- 复用率高,每天写写markdown日记便可以同步到github
- 学的东西都来自开源,总的回馈点什么
我们知道,web浏览器会将form中的内容打包成HTTP请求体,然后发送到服务端,服务端对请求体解析后可以得到传递的数据。这当中包含两个过程:encode
与decode
。
Java RMI 指的是远程方法调用 (Remote Method Invocation)。RMI能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法, 其威力体现在它强大的开发分布式网络应用的能力上,它可以被看作是RPC的Java版本。
BeanValidation 可以帮助开发者方便地对数据进行校验,但它只是一个标准,只有一套接口,要想使用它的功能必须选择一种实现,hibernate-validator
是个不错的选择
在java中如何解析json?fastjson?jackson?那未免太无趣了
为了减少工作量,开发者往往喜欢将相同的特性放入超类,通过继承实现代码共享
话不多说,直接上源码,用了传说中的伪面向对象写法
在JS中,当内部的方法被其他对象引用,如果内部的方法使用了外部方法的变量,将造成外部方法无法释放,变量将被保持,此时将形成闭包。
在java中进行SQL拼接是一件无比痛苦的工作,这是由于需要通过判断参数动态生成SQL
I、软件包
安装nodejs》 路径:E:\nodejs
话不多说直接上代码,自定义控件管理音乐播放,同样原理可以实现播放器状态,进度条都可以,写代码就是需要思路和反复的锤炼,不妨试试手
在这个容器化包管理时代,前端打包工具等满天飞的时代想必你也会比较感兴趣这个话题(Webpack,Rollup,RequireJS,browserify)
很多小伙伴估计都没有听说过这个名词,打包工具其实就是将做好的程序用用户可以看到的方式制作成一个对应操作系统下的可执行应用,Windows下面必然就是打包成 .exe为后缀的,说起来高大上,其实就是一个难者亦易的事情,具体你看我怎么操作的就知道的
var body = document.body;
body.addEventListener("click",async function(){
var stream = await navigator.mediaDevices.getDisplayMedia({video: true});
var mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") ?"video/webm; codecs=vp9" :"video/webm";
var mediaRecorder = new MediaRecorder(stream, {mimeType: mime});
//录制
var chunks = [];
mediaRecorder.addEventListener('dataavailable', function(e) {chunks.push(e.data)})
//停止
mediaRecorder.addEventListener('stop', function(){
var blob = new Blob(chunks, {type: chunks[0].type});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'video.webm';
a.click();
})
//手动启动
mediaRecorder.start()
});
** 常用的API *** 一、下面是 Proxy 支持的拦截操作一览,一共 13 种。 ``` get(target, propKey, receiver):拦截对象属性的读取,比如proxy.foo和proxy[‘foo’]。 set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = v或proxy[‘foo’] = v,返回一个布尔值。 has(target, propKey):拦截propKey in proxy的操作,返回一个布尔值。 deleteProperty(target, propKey):拦截delete proxy[propKey]的操作,返回一个布尔值。 ownKeys(target):拦截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for…in循环,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而Object.keys()的返回结果仅包括目标对象自身的可遍历属性。 getOwnPropertyDescriptor(target, propKey):拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。 defineProperty(target, propKey, propDesc):拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值。 preventExtensions(target):拦截Object.preventExtensions(proxy),返回一个布尔值。 getPrototypeOf(target):拦截Object.getPrototypeOf(proxy),返回一个对象。 isExtensible(target):拦截Object.isExtensible(proxy),返回一个布尔值。 setPrototypeOf(target, proto):拦截Object.setPrototypeOf(proxy, proto),返回一个布尔值。如果目标对象是函数,那么还有两种额外操作可以拦截。 apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如proxy(…args)、proxy.call(object, …args)、proxy.apply(…)。 construct(target, args):拦截 Proxy 实例作为构造函数调用的操作,比如new proxy(…args)。
HTML、CSS相关 HTML5 HTML5新特性 增强了表单,input新增了一些type: color—-定义调色板 tel—–定义包含电话号码的输入域 email—定义包含email地址的输入域 search–定义搜索域 number–定义包含数值的输入域 date—-定义选取日、月、年的输入域 Video视频标签; Audio音频标签; 语义化标签;datatime-local 定义文档类型的简写 地理定位;拖放api;Canvas图形绘制;富文本Web Storage:localStorage:没有时间限制的数据存储;sessionStorage:在浏览器关闭的时候就会清除
一、 ** webpack安装配置 ,纯手动,官网提供了脚本这里不做介绍**
- npm install nodemon -g nodemon可以替代node 来观察代码更改并自动 启动关闭程序 全局安装即可, 后续使用命令nodemon server.is 替代 npde server.js
** 初始化 **
npm
npm init vite@latest
yarn
yarn create vite
pnpm
pnpm create vite
``` Props管理 Props管理对Vue组件至关重要,因为它可以以不同的方式创建。您还可以验证Prop、创建多个Prop并根据需要修改它们。
* 简单介绍 *** Lodash 能够大幅度提高前端 JavaScript 编程的效率和可读性,使得代码编写更加快捷、简洁、易懂。如果你还没有使用过 Lodash,建议尝试使用它来优化你的项目,提高开发效率。向大家介绍或简单的展示一下它的能力,或许能够吸引到你。Lodash 是一个流行的 JavaScript 实用工具库,提供了许多常用的函数和工具,能够方便地处理集合、字符串、数值、函数等多种数据类型,减少编写重复代码的时间和精力。Lodash 的 API 设计与 ES6 的新特性相似,同时兼容了更早的浏览器版本。Lodash 支持模块化加载,可以通过 npm 或在浏览器中直接引入来使用。 Lodash 有多达 300 多个函数,每个函数都有详细的文档和示例,能够快速地满足各种编程需求。同时,Lodash 的功能也非常完善,比如数组、对象等的操作,以及日期、数学计算、函数式编程等多方面支持。Lodash 还提供了链式调用的方式,简化操作的流程。 *** npm install lodash **
* 简单介绍 *** Lodash 能够大幅度提高前端 JavaScript 编程的效率和可读性,使得代码编写更加快捷、简洁、易懂。如果你还没有使用过 Lodash,建议尝试使用它来优化你的项目,提高开发效率。向大家介绍或简单的展示一下它的能力,或许能够吸引到你。Lodash 是一个流行的 JavaScript 实用工具库,提供了许多常用的函数和工具,能够方便地处理集合、字符串、数值、函数等多种数据类型,减少编写重复代码的时间和精力。Lodash 的 API 设计与 ES6 的新特性相似,同时兼容了更早的浏览器版本。Lodash 支持模块化加载,可以通过 npm 或在浏览器中直接引入来使用。 Lodash 有多达 300 多个函数,每个函数都有详细的文档和示例,能够快速地满足各种编程需求。同时,Lodash 的功能也非常完善,比如数组、对象等的操作,以及日期、数学计算、函数式编程等多方面支持。Lodash 还提供了链式调用的方式,简化操作的流程。 *** npm install lodash **
CSS允许文本内容换行显示的方法有: 1.使用white-space属性:white-space属性可以控制文本内容的换行显示, 它有三个值,分别是normal、nowrap和pre,normal表示换行显示,nowrap表示不换行显示,pre表示按照原始格式显示,也就是按照原始文本中的换行符进行换行显示。 2.使用word-wrap属性:word-wrap属性可以控制文本内容的换行显示, 它有两个值,分别是normal和break-word,normal表示按照原始文本中的换行符进行换行显示,break-word表示在文本内容超出容器宽度时,会自动换行显示。 3.使用word-break属性:word-break属性可以控制文本内容的换行显示,它有三个值, 分别是normal、break-all和keep-all,normal表示按照原始文本中的换行符进行换行显示,break-all表示在文本内容超出容器宽度时,会自动换行显示,keep-all表示在文本内容超出容器宽度时,会自动换行显示,但是会保留单词的完整性。
HTML、CSS相关 HTML5 HTML5新特性 增强了表单,input新增了一些type: color—-定义调色板 tel—–定义包含电话号码的输入域 email—定义包含email地址的输入域 search–定义搜索域 number–定义包含数值的输入域 date—-定义选取日、月、年的输入域 Video视频标签; Audio音频标签; 语义化标签;datatime-local 定义文档类型的简写 地理定位;拖放api;Canvas图形绘制;富文本Web Storage:localStorage:没有时间限制的数据存储;sessionStorage:在浏览器关闭的时候就会清除
``` Props管理 Props管理对Vue组件至关重要,因为它可以以不同的方式创建。您还可以验证Prop、创建多个Prop并根据需要修改它们。
一、 ** webpack安装配置 ,纯手动,官网提供了脚本这里不做介绍**
- npm install nodemon -g nodemon可以替代node 来观察代码更改并自动 启动关闭程序 全局安装即可, 后续使用命令nodemon server.is 替代 npde server.js
** 初始化 **
npm
npm init vite@latest
yarn
yarn create vite
pnpm
pnpm create vite
- 为什么我要用这么不知名的语言写这个系统
- 好奇心驱使,热爱新鲜技术,希望避免重复性劳动
- 复用率高,每天写写markdown日记便可以同步到github
- 学的东西都来自开源,总的回馈点什么
### github本地关联远程秘钥 1、 进入到你当前用户的根目录的.ssh文件夹下。如我的地址是C:\Users\manixchen.ssh
其实挺简单 _config.yml 全局配置文件 _posts 放置博客文章的文件夹 img 存放图片的文件夹
起因 其实近两年使用VUE场景多起来了我就想着把手上的项目都使用Vue重构一下,这样一看,我算是一个完美主义者吧,哈哈^__^ 这个项目其实也是之前的老项目基于ryby jekyll Liquid 模板解析的一个静态博客,其实经历还挺久的这个项目,应该16年我大学那会就翻墙弄的,后面因为兴趣爱好问题,静态博客无法满足自己的需求,其实有部分也在于之前精力有限,没有一直去定制所谓的模板,其实前端还是比较重要的,直接很大程度影响用户体验,所以深感前端重要性,也是打算把这个博客简单重构一下,奈何本人文化有限和能力有限,缺乏一个审美到位的UI合伙人,我的博客就一直搁浅,最近也是逼了自己一把,过年这几天就在家写了下,自己抄,哦,还是说借鉴了一部分网站的样式主题简单定制了下,其实这不是最关键的,关键的是你现在可以直接访问我的博客简单看看效果,下面是我简单重构的记录
其实挺简单 _config.yml 全局配置文件 _posts 放置博客文章的文件夹 img 存放图片的文件夹
起因 其实近两年使用VUE场景多起来了我就想着把手上的项目都使用Vue重构一下,这样一看,我算是一个完美主义者吧,哈哈^__^ 这个项目其实也是之前的老项目基于ryby jekyll Liquid 模板解析的一个静态博客,其实经历还挺久的这个项目,应该16年我大学那会就翻墙弄的,后面因为兴趣爱好问题,静态博客无法满足自己的需求,其实有部分也在于之前精力有限,没有一直去定制所谓的模板,其实前端还是比较重要的,直接很大程度影响用户体验,所以深感前端重要性,也是打算把这个博客简单重构一下,奈何本人文化有限和能力有限,缺乏一个审美到位的UI合伙人,我的博客就一直搁浅,最近也是逼了自己一把,过年这几天就在家写了下,自己抄,哦,还是说借鉴了一部分网站的样式主题简单定制了下,其实这不是最关键的,关键的是你现在可以直接访问我的博客简单看看效果,下面是我简单重构的记录
- ** 如何检测对象变化? ** 由于 JavaScript特性的限制,Vue.js不能检测到对象属性的添加或删除。因为Vue.js在初始化时将属性转化为 getter/setter,所以属性必须在data对象中定义,才能在初始化时让Vue.js转换它并让它响应,例如以下代码
** 通用脚手架 **
本脚手架主要方便个人开发,常用的项目脚手架个模板自己封装便于使用,在企业中节约重复造轮子的时间, 包含VUE脚手架常用的插件功能,其实就是提升复用率,目前完成了VUE3的PC端模版
npm i manix-sun-cli manix-sun-cli create <project name> 根据需求选择即可
- vue3 PC端后台模板
- vue2 PC端后台模板
- vue3 移动端模板
- vue2 移动端模板
- 微信小程序模板
- 题目1:数组查找指定和的下标 ``` 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
1.前端模块化打包初识 commonjs语法形式
> user.js
const login = function(formData){
console.log("logoing")
return {}
}
const register = function(formData){
console.log("register")
}
module.exports = {
login:login,
register:register
}
>login_index.js 引入
const user =require('./user.js')
const resp = user.login({})
免费激活Idea之热部署插件JRebel,解决连接失败报错
JRebel是一个实用的插件,它可以让你在不重启服务器的情况下,修改Java程序并即时生效。相信大家都有这样的经历:每次修改代码后都需要重新编译、打包、部署,然后重启服务器,这个过程非常耗时且繁琐。但是,如果你使用了JRebel,你就可以摆脱这些烦恼,轻松享受修改代码后立即生效的快感!
免费激活Idea之热部署插件JRebel,解决连接失败报错
JRebel是一个实用的插件,它可以让你在不重启服务器的情况下,修改Java程序并即时生效。相信大家都有这样的经历:每次修改代码后都需要重新编译、打包、部署,然后重启服务器,这个过程非常耗时且繁琐。但是,如果你使用了JRebel,你就可以摆脱这些烦恼,轻松享受修改代码后立即生效的快感!
免费激活Idea之热部署插件JRebel,解决连接失败报错
JRebel是一个实用的插件,它可以让你在不重启服务器的情况下,修改Java程序并即时生效。相信大家都有这样的经历:每次修改代码后都需要重新编译、打包、部署,然后重启服务器,这个过程非常耗时且繁琐。但是,如果你使用了JRebel,你就可以摆脱这些烦恼,轻松享受修改代码后立即生效的快感!