自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嘿嘿

当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。

  • 博客(49)
  • 收藏
  • 关注

转载 Java Ioc详解和实现

这章我们讲JavaSpring的Ioc控制反转,DI依赖注入。阅读此文之前,必须深入理解Java反射原理。1、 Ioc控制反转原来类对象实例的创建都是有程序员自己通过new进行的。控制反转之后,我们把创建对象的功能交给Spring,到时候我们直接用就可以了。2、 DI注入class Bclass{ …….}class Aclass{ Bclass b; }比如我们需要用到Aclass的对象Aobject时候,Spring Ioc帮我们创建了一个对...

2021-06-30 16:55:38 3339

转载 Cookie、session和localStorage、以及sessionStorage之间的区别

cookie的内容主要包括:名字、值、过期时间、路径和域。路径与域一起构成cookie的作用范围。若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘而是保存在内存里,当然这个行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再打开浏览器这些cookie仍然有效直到超过设定的过期时间。对于保存在内存里的cookie,不同的浏...

2021-06-30 11:34:55 102

转载 轻松理解HTTP缓存策略

上一篇文章我写了koa-static的源码解析,其中用到了HTTP的缓存策略,给返回的静态文件设置了一些缓存的头,比如Cache-Control之类的。于是我就跟朋友讨论了一下HTTP的缓存策略:朋友说:“HTTP里面控制缓存的头(header)太多了,啥Cache-Control,ETag,Last-Modified,一大堆,乱七八糟的,而且之间逻辑关系不强,要掌握基本靠背!”我有点惊讶:“为什么要去背这个呢?所有的技术都是为了解决问题而存在的,不了解问题而去单纯的学习技术,去,背,去,死记,确实

2021-06-25 23:26:43 263

转载 用优雅的代码武装我们的koa2项目

众所周知,koa2是基于nodejs的一款非常轻量级的服务端框架,其简单易上手的特性更是大大节省了前端人员开发服务端api的成本。尽管许多功能能够实现,但是作为一个有素养的开发人员,代码的层次性、后期可维护性都是需要考虑周到的。实话说,按照koa官方文档来照葫芦画瓢,我们的代码是写不漂亮的。这里需要我们在编码之前有一个非常清晰的认识:我们的代码如何组织?如何分层?如何复用?在经历一系列的思考斟酌以及一些项目的实践之后,我总结了一些关于koa的开发技巧,能够大幅度的提高项目的代码质量,再也不用让同

2021-06-25 22:50:54 347

原创 form-create

自定义组件过程:导出:注册组件名字:定义rule数据体:上面的json数据通过内部系统在组件内部接收:在这里处理数据和渲染组件:

2021-06-23 11:57:07 199

转载 学Vue,就要学会vue JSX(二)

学习JSX,先了解一下createElement提到JSX,不可避免的就要提到createElement,当你看完本节,你会发现,奇怪的知识又增多了。ok,我们接着上一部分继续讲。这一次的准备工作是了解createElement。从Vue编译后的代码看createElement你是否看过写的Vue代码经过编译之后的样子,比如下面这段代码 <template> <div>我喜欢<span class="emphasize">前端</span&g

2021-06-23 10:33:13 432

转载 学Vue,就要学会vue JSX(一)

最近在做一个项目,然后里面也用到了jsx。因为其实有一些功能也需要更加灵活的去处理。介绍一下JSXJSX 简介JSX是一种Javascript的语法扩展,JSX=Javascript+XML,即在Javascript里面写XML,因为JSX的这个特性,所以他即具备了Javascript的灵活性,同时又兼具html的语义化和直观性。应用场景为了让大家更方便的去理解JSX的作用及用法,我先为大家罗列了几个可能会用到JSX的应用场景。在消息框内添加html在开发过程中,经常会用...

2021-06-23 10:32:15 268

转载 学Vue,就要学会vue JSX(三)

是时候使用JSX代替createElement了接着上面的讲,当我们看到上面用createElement去实现组件,太麻烦了,别说工作效率提高了,就是那些嵌套可以嵌套正确就很赞了,所以我们需要用JSX去简化整个逻辑。当年我做项目的时候就遇到过这样的情况,嵌套太多,自己都快搞不明白了,在崩溃的边缘。 methods: { $_handleInputUser(value) { this.formInline.user = value }, $_handleChangeReg

2021-06-23 10:29:51 391

原创 vue项目为路径设置别名和关闭提示

在项目根路径下创建vue.config.jsconst path = require('path'); //引入path模块function resolve(dir) { return path.join(__dirname, dir) //path.join(__dirname)设置绝对路径}module.exports = { lintOnSave: false, chainWebpack: (config) => { config.resolv

2021-06-23 10:26:13 566

转载 一个原生JavaScript实现的简易数据视图单向绑定实例

<div id="app"> <h2 class="title" data-on="title"></h2> <div class="content" data-on="content"></div> <div class="count" data-on="count"></div> <div class="control"> <label for="content-input...

2021-06-23 09:23:21 195

转载 从JavaScript属性描述器剖析Vue.js响应式视图

学习每一门语言,一般都是从其数据结构开始,JavaScript也是一样,而JavaScript的数据结构中对象(Object)是最基础也是使用最频繁的概念和语法,坊间有言,JavaScript中,一切皆对象,基本可以描述对象在JavaScript中的地位,而且JavaScript中对象的强大也使其地位名副其实,本篇介绍JavaScript对象属性描述器接口及其在数据视图绑定方向的实践,然后对Vue.js的响应式原理进行剖析。前言JavaScript的对象,是一组键值对的集合,可以拥有任意数量的.

2021-06-23 09:12:23 135

转载 从JavaScript属性描述器剖析Vue.js响应式视图

前言JavaScript的对象,是一组键值对的集合,可以拥有任意数量的唯一键,键可以是字符串(String)类型或标记(Symbol,ES6新增的基本数据类型)类型,每个键对应一个值,值可以是任意类型的任意值。对于对象内的属性,JavaScript提供了一个属性描述器接口PropertyDescriptor,大部分开发者并不需要直接使用它,但是很多框架和类库内部实现使用了它,如avalon.js,Vue.js,本篇介绍属性描述器及相关应用。定义对象属性在介绍对象属性描述之前,先介绍一下如何定义对

2021-06-23 09:10:51 127

转载 Vue里require(‘../config‘) 如何加载index.js

1. 前言最近在学习Vue,直接用vue-cli构建项目后,在 webpack-base-conf.js 里有 var config = require('../config') 这段代码,执行中实际是 var config = require('../config/index.js') , 参考了阮大大的文章:传送门终于明白如何加载的。(只想明白require用法直接看下面即可)2.require的用法 2.1当 Node 遇到 require(X) 时,按下面的顺序处理。2.1.1...

2021-06-23 09:09:56 385

转载 Vue render函数

前几天想学学Vue中怎么编写可复用的组件,提到要对Vue的render函数有所了解。可仔细一想,对于Vue的render函数自己只是看了官方的一些介绍,并未深入一点去了解这方面的知识。为了更好的学习后续的知识,又折回来了解Vue中的render函数,这一切主要都是为了后续能更好的学习Vue的知识。回忆Vue的一些基本概念今天我们学习的目的是了解和学习Vue的render函数。如果想要更好的学习Vue的render函数相关的知识,我们有必要重温一下Vue中的一些基本概念。那么先上一张图,这张图从宏观上

2021-06-23 09:06:28 355

转载 正确开启Mockjs的三种姿势:入门参考(一)

一、文章初衷阅读本文章需要注意以下几点:文章不主要介绍Mockjs的使用语法 文章暂不涉及Mockjs的第三方封装框架 文章会结合以往做过上线项目的方式总结想主要介绍如何使用Mockjs,是因为发现网上针对这方面的资料好像并不多,并且比较分散。想要做一次总结,希望能帮助解决入门Mockjs的新人使用的一些疑惑1.1 简单介绍一下Mock.js众所周知Mock.js因为两个重要的特性风靡前端: 数据类型丰富 支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片..

2021-06-22 10:33:44 1462

转载 vue插槽(slot)的模板与JSX写法

vue官网API:插槽:https://cn.vuejs.org/v2/guide/components-slots.htmlJSX:https://cn.vuejs.org/v2/guide/render-function.html说明:vue版本2.6.0以上语法一、插槽模板传值子组件:child.vue<template> <div> <!-- 默认插槽 --> <slot :info="i

2021-06-20 15:37:38 6306

转载 element-ui 通用表单封装及VUE JSX应用

一、存在及需要解决的问题一般在做后台OA的时候会发现表单重复代码比较多,且逻辑基本一样,每次新加一个表单都需要拷贝基本一致的代码结构,然后只是简单地修改对应的字段进行开发二、预期结果提取重复的表单逻辑形成通用的组件,通过约定的JSON数据结构配置生成表单1、使用方法...

2021-06-20 13:17:20 1785 1

转载 Git是什么?

Git历史同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,于是整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关

2021-06-18 18:08:39 219

转载 Vue里require(‘../config‘) 如何加载index.js

1. 前言最近在学习Vue,直接用vue-cli构建项目后,在 webpack-base-conf.js 里有 var config = require('../config') 这段代码,执行中实际是 var config = require('../config/index.js') , 参考了阮大大的文章:传送门终于明白如何加载的。(只想明白require用法直接看下面即可)2.require的用法2.1当 Node 遇到 require(X) 时,按下面的顺序处理。2.1.1 ...

2021-06-16 15:40:16 595

转载 js属性对象的hasOwnProperty方法

Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。判断自身属性是否存在var o = new Object();o.prop = 'exists';function changeO() { o.newprop = o.prop; delete o.prop;}o.hasOwnProperty('prop'); // truechangeO();o.hasOwnProperty('prop'); // false

2021-06-16 09:08:26 154

转载 vue cli4.0 快速搭建项目详解

搭建项目之前,请确认好你自己已经安装过node, npm, vue cli。没安装的可以参考下面的链接安装。如何安装node?安装好node默认已经安装好npm了,所以不用单独安装了。如何安装vue cli?剧场环境已搭建好,开始表演!1.进入一个目录,创建项目对应命令:vue create project-one2.我们这里选择手动配置按↓选择“Manually select features”,再按Enter3.选择你需要的配置项通过...

2021-06-15 10:49:58 94

转载 Vue之自定义组件的v-model

下面是转载最近在学习vue,今天看到自定义事件的表单输入组件,纠结了一会会然后恍然大悟...官方教程写得不是很详细,所以我决定总结一下。v-model语法糖v-model实现了表单输入的双向绑定,我们一般是这么写的:1 <div id="app">2 <input v-model="price">3 </div>1 new Vue({2 el: '#app',3 data: {4 price...

2021-06-14 22:12:19 1198

原创 VsCode常用插件

Postcode:类似Postman,基本上postman常用的功能它都有。drawio:vs code 流程图神器

2021-06-14 18:55:05 538

转载 nodejs/Sequelize/MySQL——基础、联表及优化

本文你将看到:MySQL、SQL、ORM、Sequelize 在概念上的关系 Sequelize 的用法 Sequelize 中联表关系的概念、用法、原理、区别 如何优化数据库查询1 概念MySQL大部分人对 MySQL、SQL 是有了解的,毕竟教科书里都写着。 MySQL 是一种典型的关系型数据库嘛,怎么叫关系呢?简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。这里两个点:::二维行列表::(体现在个体表数据结构上)、::互相连接::(体现在表关系和库引擎特点

2021-06-14 17:39:09 605

转载 深入理解vue 一些底层原理

一  理解vue的核心理念使用vue会让人感到身心愉悦,它同时具备angular和react的优点,轻量级,api简单,文档齐全,简单强大,麻雀虽小五脏俱全.倘若用一句话来概括vue,那么我首先想到的便是官方文档中的一句话:Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。这句话可能大家并不陌生,但是真正理解这句话的可能并不多,其实,读懂了这句话,也就明白了vue的核心理念.那么,怎样理解什么是渐进式框架?在这之前,我们首先要理解什么是框...

2021-06-08 12:05:45 439

转载 Vue.extend的理解

在使用element-ui的过程中,我相信你在使用到类似this.$message功能的时候,会觉得这个功能真的非常方便,不用import入组件,全局都可以调用。它就是通过Vue.extend + $mount实现。扩展实例构造器Vue.extend返回的是一个“扩展实例构造器”,也就是一个预设了部分选项的 Vue 实例构造器。刚学的时候对“扩展实例构造器”这一名词感觉很疑惑,其实它就像构造函数,构造函数中会事先定义好一些属性,new出来的对象也就默认有构造函数中的属性,同理Vue.extend.

2021-06-05 22:41:43 149

转载 20 张图彻底弄懂 HTTPS 的原理!

前言近年来各大公司对信息安全传输越来越重视,也逐步把网站升级到 HTTPS 了,那么大家知道 HTTPS 的原理是怎样的吗,到底是它是如何确保信息安全传输的?网上挺多介绍 HTTPS,但我发现总是或多或少有些点有些遗漏,没有讲全,今天试图由浅入深地把 HTTPS 讲明白,相信大家看完一定能掌握 HTTPS 的原理,本文大纲如下: HTTP 为什么不安全 安全通信的四大原则 HTTPS 通信原理简述 对称加密 数字证书 非对称加密

2021-06-05 07:11:36 158

转载 在EggJS中使用Sequelize做联表查询

1.EggJS引用Sequelize安装sequelize依赖和mysql驱动cnpm i egg-sequelize mysql2 -S启用sequelize插件在config/plugin.js里面添加sequelize: { enable: true, package: 'egg-sequelize',},配置数据库在config/config.default.js里面添加 config.sequelize = { dialect: 'm

2021-06-04 19:44:39 400

转载 前端环境部署如何配置后端接口地址

前端环境部署如何配置后端接口地址这是我参与更文挑战的第3天,活动详情查看:更文挑战前端打包目前主要是两个方面:打包压缩文件以及后台api访问地址。当然也涉及到其他的诸如nginx和docker部署,这些不在本文范畴。打包命令其实很简单npm run build复制代码后台访问地址前端访问后台地址其实是需要区分本地开发和服务器部署。本地开发访问:本地开发是开发环境,因为本地启动项目,开发环境可以通过接口代理的方式解决跨域相关问题,所以我们配置访问地址的时..

2021-06-03 22:35:06 21104

转载 面试官:前端跨页面通信,你知道哪些方法?

引言在浏览器中,我们可以同时打开多个Tab页,每个Tab页可以粗略理解为一个“独立”的运行环境,即使是全局对象也不会在多个Tab间共享。然而有些时候,我们希望能在这些“独立”的Tab页面之间同步页面的数据、信息或状态。正如下面这个例子:我在列表页点击“收藏”后,对应的详情页按钮会自动更新为“已收藏”状态;类似的,在详情页点击“收藏”后,列表页中按钮也会更新。跨页面通信实例这就是我们所说的前端跨页面通信。你知道哪些跨页面通信的方式呢?如果不清楚,下面我就带大家来看看七种跨页面通信的方.

2021-06-03 22:10:42 529

转载 从页面 A 打开一个新页面 B,B 页面关闭(包括意外崩溃),如何通知 A 页面?

本题是 html 页面通信题,可以拆分成:A 页面打开 B 页面,A、B 页面通信方式? B 页面正常关闭,如何通知 A 页面? B 页面意外崩溃,又该如何通知 A 页面?A 页面打开 B 页面,A、B 页面通信方式据我所知,A、B 页面通信方式有:url 传参 postmessage localStorage WebSocket SharedWorker Service Workerurl 传参url 传参数没什么可说的<!-- A.html --&gt.

2021-06-03 22:08:16 312

转载 vue的$on,$emit

使用 $on(eventName) 监听事件使用 $emit(eventName) 触发事件Api 中的解释:vm.$emit( event, […args] )参数:{string} event[…args]触发当前实例上的事件。附加参数都会传给监听器回调。vm.$on( event, callback )参数:{string | Array} event (数组只在 2.2.0+ 中支持) {Function} callback用法:监听当前实例上的自定义事件。

2021-06-03 21:49:58 430

转载 Vue Vuex 中mutations 与 actions 返回值问题

Vuex 是中大型项目必备状态管理器,具体使用参考官网这里说一下关于返回值的问题:1.actions 方法中的返回值由于在actions中写的方法是异步执行的,往往我们需要给方法加一个Promise的返回值,以便上层访问者回调,这里的返回值会直接作为dispatch方法的返回值返回。常见的写法如下:this.$store.dispatch('name', payload).then(res => { // 这里的then就是actions方法中返回的promise被作.

2021-06-03 20:19:39 2759

转载 手把手教你构建 C 语言编译器(9)- 总结

恭喜你完成了自己的 C 语言编译器,本章中我们发一发牢骚,说一说编写编译器值得注意的一些问题;编写编译器时遇到的一些难题。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手把手教你构建 C 语言编译器(5)——变量定义 手把手教你构建 C 语言

2021-06-02 22:47:43 233

转载 手把手教你构建 C 语言编译器(8)- 表达式

这是整个编译器的最后一部分,解析表达式。什么是表达式?表达式是将各种语言要素的一个组合,用来求值。例如:函数调用、变量赋值、运算符运算等等。表达式的解析难点有二:一是运算符的优先级问题,二是如何将表达式编译成目标代码。我们就来逐一说明。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你

2021-06-02 22:46:36 526

转载 手把手教你构建 C 语言编译器(7)- 语句

整个编译器还剩下最后两个部分:语句和表达式的解析。它们的内容比较多,主要涉及如何将语句和表达式编译成汇编代码。这章讲解语句的解析,相对于表达式来说它还是较为容易的。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手把手教你构建 C 语言编译器(5

2021-06-02 22:45:21 147

转载 手把手教你构建 C 语言编译器(6)- 函数定义

由于语法分析本身比较复杂,所以我们将它拆分成 3 个部分进行讲解,分别是:变量定义、函数定义、表达式。本章讲解函数定义相关的内容。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手把手教你构建 C 语言编译器(5)——变量定义 手把手教你构建

2021-06-02 22:44:00 288

转载 手把手教你构建 C 语言编译器(5)- 变量定义

本章中我们用 EBNF 来大致描述我们实现的 C 语言的文法,并实现其中解析变量定义部分。由于语法分析本身比较复杂,所以我们将它拆分成 3 个部分进行讲解,分别是:变量定义、函数定义、表达式。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手

2021-06-02 22:40:30 432

转载 手把手教你构建 C 语言编译器(4)- 递归下降

本章我们将讲解递归下降的方法,并用它完成一个基本的四则运算的语法分析器。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手把手教你构建 C 语言编译器(5)——变量定义 手把手教你构建 C 语言编译器(6)——函数定义 手把手教你构建 C 语

2021-06-02 22:39:14 889

转载 手把手教你构建 C 语言编译器(3)- 词法分析器

本章我们要讲解如何构建词法分析器。手把手教你构建 C 语言编译器系列共有10个部分:手把手教你构建 C 语言编译器(0)——前言 手把手教你构建 C 语言编译器(1)——设计 手把手教你构建 C 语言编译器(2)——虚拟机 手把手教你构建 C 语言编译器(3)——词法分析器 手把手教你构建 C 语言编译器(4)——递归下降 手把手教你构建 C 语言编译器(5)——变量定义 手把手教你构建 C 语言编译器(6)——函数定义 手把手教你构建 C 语言编译器(7)——语句 手把手教你构

2021-06-02 22:37:49 1663

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除