- 博客(42)
- 资源 (24)
- 收藏
- 关注
原创 由跨域引发一些思考
最近加了个群,今天有人在群里问了一个问题“前端配置了跨域代理,项目发布到线上还需要配置 nginx 反向代理吗?”,由此,在群里展开了激烈的讨论。讨论的主要点就是在跨域和代理上面,由此引发了我的一些思考。首先记录一些基本的概念。跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种行为。
2024-07-01 21:43:35
1007
原创 在Koa中常见的中间件的原理及使用
我们都知道,在一个完整的Http请求过程中,我们需要在其中做一些处理,比如说请求路径和参数的处理,cookie的处理,返回的结果处理……对于Koa来说,我们可以使用中间件来进行处理,但是Koa本身是不提供中间件的,因此就需要我们引入第三方的,或者是根据自己实际的业务需求,来实现一些处理过程的中间件。就简单的介绍几个在Koa中会经使用的一些中间件(这里的版本是基于Koa 2.x,如果想了解Koa 1.x可以参考这些思想去找适用于Koa 1.x的中间件)。当然这里有关第三方中间件的介绍过程中,都会简单的聊一些这
2022-05-18 00:26:43
3454
原创 初识Koa
📌Koa -- 基于 Node.js 平台的下一代 web 开发框架。上面的那句话是Koa官方讲的。首先Koa是一个新的web框架,由Express幕后的原班人马打造。我们都知道现在市面上很多的Node 服务框架或者是功能,都是基于Express来进行开发的,比如说(webpack-dev-server,Nest,NodeBB等等)。这主要是因为Express出来的时间比较久,而且相对来说比较稳定;Express的生态相对的会完善一些;另外一点就是Express相对于来说比较容易入门。可以基于官方的
2022-05-10 22:33:45
506
原创 前端组件封装原则
对于当今的前端开发,模块化已经成了一种通用的解决方案,不管是vue还是React还是Angular,其中都会涉及的组件的封装。对于各现在的前端开发来说,如何去封装一个组件,以及封装组件的过程中,应该注意哪些东西都已经是每个前端的必备的基础技能了。但是在很多的时候,对于一些刚刚进入这个行业的新人来说,可能有部分的老人,不是很清楚什么时候应该去封装组件。接下来我就以下的问题聊一下组件的封装。我们为什么要封装组件? 什么时候应该封装组件? 应该如何去设计一个组件?为什么要封装组件?对于这个问
2022-04-17 19:47:03
9290
原创 我理解的前端发展方向
这是我个人的理解的前端2022年,甚至以后的前端发展的方向。这里没有太多的干货的知识,不会告诉你说Javascript怎么写,也不会告诉某个页面需要怎么排版……那都是一些很基础的东西(但是并不能我的本篇文章和思考有多么的高大上),这些方向的了解可能会贯穿我们整个前端的职业生涯;也可能等你在前端这个行业中摸爬滚打了多年之后,你才在某个清晨恍然大悟,原来这么多年我都是个机器:把设计稿转换成页面,每天做着这样重复但是看似有意思的工作。而我就是其中的后者。先简单的介绍一下为什么我会有这样的想法吧。我的前端经
2022-01-09 22:49:38
3187
原创 我理解的前端工程化
前言现在越来越多的前端人员都在聊前端工程化。可能很多初学者认为前端工程化就是我会使用webpack,我能够使用某些cli工具来搭建我们公司的项目等等;也有一部分的人认为前端工程化就是涵盖了前端从立项到上线过程中的每一步,前端的每个项目即是前端的一个工程在前端工程中包含有项目的创建过程,开发过程,测试过程,上线过程等一系列的工作流程的内容等。那么什么是前端工程化?对于这个问题,我这里就从我个人的角度来聊一下,这个前端工程化的内容。前端工程化的由来对于前端开发来说从最初的切图仔到现在的可以称..
2021-12-27 23:47:41
618
原创 加密算法学习
加密算法主要作用是把明文变成密文,防止信息泄露。加密后的密文看起来和乱码很像,但却不是乱码。大部分乱码是由于编码不一致导致的,编码不属于加密算法,只是改变了显示格式而已。加密算法需要保证以下三点:1.机密性:保证数据即使被盗取,小偷也不知道是啥。2.完整性:保证数据在传输过程中即使被劫持修改,接收方能够发现信息已被截取,而选择换掉。3.可用性:保证加密算法的开销、复杂度都在可用范围。满足上述要求的加密算法经历了从古典密码过渡到现代密码的漫长历史发展时期。加密算法的起源早在古罗马的
2021-12-06 23:15:37
641
原创 nginx学习笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言作为一个Web开发者来说对于nginx的应该是再熟悉不过了,但是对于我来说,对于nginx的了解就相对比较少,由于自己是做前端开发的,有关后台的配置相关的内容了解的不多,因此有关Nginx的了解也只是趋于表面的,因此,花了一段时间来对Nginx进行了一个比较深入的学习。一、Web服务器?1. 什么是we
2021-10-09 07:42:20
185
原创 有关WebRTC(一)——初识WebRTC
文章目录前言一、什么是WebRTC?二、WebRTC的特点三、WebRTC的使用场景四、如何在网页中使用音视频获取浏览器设备使用麦克风录制声音摄像头捕捉信息使用摄像头使用摄像头进行拍照使用摄像头 进行录像录制桌面信息总结前言大家对在线音频和视频并不陌生。日常的网络应用程序,如抖音和快手,为数百万人提供音频和视频内容。另一方面,对于网络实时通信来说,大家也并不陌生。像腾讯会议,企业微信,在线直播等。对于这些地方,这就是网络实时通信(WebRTC)发挥作用的地方。由于最近各个企业都在搞在线办公等相关的内
2021-03-30 08:26:36
465
原创 如何设置process.env.NODE_ENV
NODE_ENV是一个由 Node.js 暴露给执行脚本的系统环境变量。通常用于确定在开发环境还是生产环境(dev-vs-prod)下,服务器工具、构建脚本和客户端 library 的行为。NODE_ENV会赋值给process.env对象,作为它的一个属性,其值通常为“production”(生产环境)和“development”(开发环境),或者“prod”和“dev”,以此来区分不同环境下的逻辑行为,例如:if(process.env.NODE_ENV === 'development'){
2021-03-29 23:09:11
6833
1
原创 如何理解浏览器缓存
前言缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。对于一个数据请求来说,可以分为发起网络请求、后端处理、浏览器响应三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。接下来的内容中我们将通过缓存位置、缓存策略以及实际场景应用缓存策略来探讨浏览器缓存机制
2021-03-29 23:08:02
359
原创 什么是重排和重绘
当浏览器下载完页面所需元素(html标记,css层叠样式表,javascript,图片)之后,会生成两个东西:Dom树和渲染树。Dom树Dom树,主要是用来表示页面的Dom结构。渲染树渲染树主要是用来表示页面是如何进行渲染的。Dom树中,除了隐藏节点,其余的节点需要与渲染树中的至少存在一个对应的节点。渲染树中的每一个节点,被称为帧或者是盒子。盒子具有内边距,外边距,边框,位置等属性。一旦渲染树构建完成之后,浏览器就开始进行绘制页面。当Dom的变化影响到了元素的几何属性(宽和高等)——比如说修改了
2021-03-29 23:07:04
406
原创 深入理解Promise.all
深入理解Promise.all了解es6的Promise的人应该都听过Promise.all,而且应该是大多数的人都用过Promise.all这个方法。首先Promise.all可以将多个Promise实例包装成一个Promise实例。let p = Promise.all([p1, p2, p3])Promise.all方法可以接受一个数组作为参数,数组中的每一项都是一个Promise的对象实例(如果不是,就会先调用Promise.reslove方法,将参数转化为Promise对象实例,再进行下一
2021-03-29 23:03:49
3004
原创 Axios使用方法
axios简介Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。axios的优势:从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御 XSRFaxios的基本使用如何引入axios可以通过npm安装来进行使用$ npm install axio也可以使用 bower进行安装,然后在页
2021-03-29 23:03:08
20299
原创 如何判断一个变量是否为数组(isArray)
在我们平时的工作中经常会用到如何判断一个变量是否为数组。常用的方法很多,有用常用框架里面的,isArray。但是关于这个isArray的实现,各有不同。常用的方法有如下几种1、instanceof function isArray (obj) { return obj instanceof Array; }2、Array对象的 isArray方法 function isArray (obj) { return Array.isArray(obj);
2021-03-29 23:02:13
1726
原创 javascript中的toString()
基本介绍javascript中的toString方法是我们在写前端时经常要用的一个函数,也就是将我们的变量转换成字符串的方法。javascript中各种类型的toString方法javascript中定义了7种数据类型,其中包含了6种原始的数据类型:BooleanNullUndefinedNumberStringSymbol(ECMAScript 6 新定义)和Object,在这7中数据类型中,除了undefined和null类型之外,都有toString方法。Boolean 类...
2021-03-29 22:59:53
5915
1
转载 dec加密
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Security.Cryptography;using System.Text;namespace SSO_Explorer.Utility{ public class DecUtility
2015-03-05 18:03:18
769
转载 全国省市县sql(完整版)
省Insert into PROVINCE (PROVINCE_ID, NAME, SEQ) Values (4, '山西', 4);Insert into PROVINCE (PROVINCE_ID, NAME, SEQ) Values (5, '内蒙古', 5);Insert into PROVINCE (PROVINCE_ID, NAME
2014-03-29 21:26:54
4504
转载 基于java的ajax操作
一、开门见山 这些时间,瞎子也看得见,AJAX正大踏步的朝我们走来。不管我们是拥护也好,反对也罢,还是视而不见,AJAX像一阵潮流,席转了我们所有的人。 关于AJAX的定义也好,大话也好,早有人在网上发表了汗牛充栋的文字,在这里我也不想照本宣科。 只想说说我感觉到的一些优点,对于不对,大家也可以和我讨论: 首先是异步交互,用户感觉不到页面的提交,
2014-03-26 06:53:41
1414
原创 Sql 中的where 1=1 问题
很多时候我们在学习Sql的时候我么总是会看到有些时候会用到一些看起来没有用的东西,比如说:select * from table where 1= 1;但是为什么我们要用到那个where 1 = 1呢1.首先我们先来看一下不用where 1 = 1会出现什么情况;举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构
2014-03-01 13:04:29
1377
2
原创 CSharp学习笔记之十三 反射
今天接触到了一个新词,就是反射,当我看到反射这个词的时候我不知道这个是什么东西。于是乎就问老人,老人给我说可以参看一个方法就是GetTipy()方法,但是这个到底是什么东西呢,通过我查找的资料我这里发表一下我自己的小小的理解吧。一、什么是反射 当然对于反射这个词来说,我们并不是很陌生,比如说镜子可以反射,B超也是利用反射的原理进行成像的。但是对于C#中来说反射也是一样的一个道
2014-02-13 21:47:19
8897
原创 CSharp学习笔记之十二 委托与事件(续)
尼玛,当把刚才的文章给保存发表之后,想看看其他方面你的文章,这时候又看到了另外的一个比较不错的文章,名字与本题同名,正觉得纳闷呢,仔细一看,原来是同一作者的东西,顿时有一种被骗的感觉。这些都不重要,真心的不重要,重要的是这些东西我们都能够学到比较多的东西。所以,这里就又将那篇文章给转了,原作者的地址还按老规矩留给大家。原文链接:http://www.tracefact.net/CSharp-P
2013-12-27 17:19:56
1892
原创 CSharp学习笔记之十一 委托与事件
对C#的委托和事件,其实想写点东西,但是偶然间翻到一篇文章,感觉挺好的,所以就直接转过来吧。其实好的东西都是要用来分享的么,不管是不是我自己的,但是学会了,就是我自己的。学习么就是这样的,这篇博文不算是原创,之所以还写原创,是为了保持格式一致。我把链接地址给你们,这是原作者的权利。原文章:http://www.tracefact.net/CSharp-Programming/Delegates
2013-12-27 16:26:18
10425
3
原创 CSharp学习笔记之十 类的修饰符
前面对C#中的类有了一定的解释,但是关于类的很多的东西前面并没有介绍的很清楚,其实C#并不是像我们想象的那样简单,我们要想将C#学的更深一步还是需要多花点时间来进行学习的。努力才会又收获的么。好的来下面来介绍一下C#中的类的修饰符:其实大家应该都知道,类有好多种,什么抽象类了,什么虚类了等等。如何判定呢,首先是来说说抽象类吧。什么是抽象类呢,为什么要有抽象类呢。大家都知道,C#是一中面向对象的
2013-12-27 11:17:25
3278
原创 CSharp学习笔记之九 多线程编程
今天就来学习一下C#中的线程和进程的问题吧在C#中要操作线程就要借助Thread这个类来进行的一些操作的,首先要事例化一个thread的类,再在这个类的基础上进行操,在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。在.net中提供了两种启动线程的方式,一种是不带参数的启动方式,另一种是带参数的启动的方式。下面给出一个多线程的
2013-12-18 12:56:23
8229
原创 CSharp学习笔记之八 文件的读写
在我们的程序的编写过程中,总避免不了对文件的读写,比如说要读取一个软件的配置,这时候不就需要我么来设计的文件的读写么,但是对于C#来说,是如何对文件进行读写的呢。下面的我们来看一个列子: class Test { static void Main(string[] args) { string filePath =
2013-12-16 16:49:37
1262
原创 可以在win7上使用的编程软件
由于学习的计算机语言的时间不是太长久,就目前来说我们只学了C语言,对于计算及语言,要想学好就要好好的去实践,一般老师是推荐使用vc++6.0的,但是现在的和很多的学生的电脑使用的都是win7操作系统。有的会发现VC++6.0有时候会不兼容,所以我在这里推荐几款比较不错的可以在
2013-12-16 16:41:10
3671
原创 CSharp学习笔记之七 异常处理
异常处理的概述:在C#编程中,我们可以通过异常处理语句对异常进行处理。我们经常使用到的异常处理语句有throw语句、try…catch语句和try…catch…finally语句。异常处理的方法:在异常处理中常用throw来进行处理的异常的。其实对于throw来说,他的主要功能就是用来引发一个异常的,然后呢通过cath来捕获异常。也可以通过throw再次捕捉一个异常,因
2013-12-13 09:58:55
3649
原创 CSharp学习笔记之六 类
众所周知,C#是一种面向对象的语言。对于面向对象语言,所具备的特征就是抽象、继承、封装、多态。抽象:所谓的抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。继承:所谓的继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共
2013-12-11 14:51:37
1095
转载 逐步认识C#四种判断相等的方法
C#有四种判断相等的方法?不少人看到这个标题,会对此感到怀疑。事实上确是如此,。Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个函数之间有细微的关系,改变其中一个函数的实现会影响到其他函数的操作结果。 首先要说的是Object.ReferenceEquals和Object.Equals这两个静态函数,对于它们俩来
2013-12-09 13:58:58
924
原创 CSharp学习笔记之五 结构
结构是 .NET Framework 中的常规类型系统的一种基本构造。在本质上属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。 数据和行为是该结构的“成员”,包含各自的方法、属性和事件等。 结构是一种值类型。创建结构时,结构赋值到的变量保存该结构的实际数据。 将结构赋给新变量时,将复制该结构。 因此,新变量和原始变量包含同一数据的两个不同的副本。 对一个副本的
2013-12-06 11:21:15
1947
原创 CSharp学习笔记之四 关键字、语句、表达式和运算符
在C#中,其实也并不一定是在C#,在java、C、C++中构成程序的,也无非就是关键字,表达式和运算语句。C#中的关键字:其实没中语言中都是有关键字的,这里给出C#中的部分关键字,这些关键字在变量命名的时候是不能够被使用的:abstract event new struct as explicit null switch base extern object th
2013-12-05 09:26:31
5943
原创 CSharp学习笔记之三 C#中的字符串
什么是字符串:字符串是 String类型的对象,它的值是文本。在内部,文本被存储为Char对象的顺序只读集合。 C# 字符串末尾没有以 null 结尾的字符;因此 C# 字符串可以包含任意数目的嵌入式 null 字符(“\0”)。 字符串的 Length属性代表它包含的 Char 对象的数量,而不是 Unicode 字符的数量。 若要访问字符串中的各个 Unicode 码位,请使
2013-12-04 10:15:49
7437
原创 CSharp学习笔记之二 C#中的数组
所谓的数组就是具有相同的数据类型且按一定次序排列的一组变量的集合体,构成一个数组的这些变量称为数组元素。其实数组并不仅仅局限于存在在C#中,在C、C++、java等语言中也都存在着数组。对于数组首先我们来看一个例子,就是关于数组的创建:class TestArraysClass{ static void Main() { // 定义一个一维的整形数组,其中
2013-12-04 09:44:28
3291
Enterprise Architect
2012-08-05
3D MAX 2012注册机
2012-07-26
VC-MFC编程实例
2012-07-03
JavaScript网页设计300例
2012-07-03
ASP函数参考手册
2012-05-29
编程代码风格
2012-05-29
codesmart+安装+破解
2012-05-26
Think php 的技術手冊
2011-08-10
c语言经典结构算法实例
2011-08-08
PHP游戏编程设计[PHP Game Programing]
2011-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人