Skip to content
  • TypeScript基础知识:Type 和 Interface的区别

    在学习TypeScript的时候,我觉得最迷惑的地方就是Type和Interface到底有什么区别?看着好像没什么区别?那为什么要有这两个不同的关键字呢,找到一篇文章说的还不错,翻译过来分享给各位。

    声明合并

    通常我们使用type都是作为变量或者参数的限定类型,interface更倾向于OOP的编程思维,相当于定义一个接口,和他的名字差不多,通常他们可以混用,但是也有一些区别,首先是interface能够进行声明合并,也就是说定义了两个相同名称的接口,TS会讲interface进行合并,但是type会报错,如下:

    inter
    inter
  • 设计模式:观察者模式和发布订阅模式的区别?

    不知道各位在学习设计模式的时候有没有遇到这个问题:观察者(observer)模式发布订阅(publish-subscribe)模式有什么区别?

    经常在网上看到有人把他们混为一谈,其实他们是不一样的,被误导可能是因为《Head Fisrt Design Patterns》这本书里面有提到:Publishers + subscribers = observer pattern。这段话的意思是观察者+订阅者=观察者模式,但是并不是说观察者模式=发布订阅模式,下面我来具体说说他们的区别。

    观察者模式(Observer Pattern

  • openssl载入私钥unable to load Private Key错误

    今天在使用openssl生成公钥的时候遇到了一个坑,遇到了无法载入私钥的报错信息如下:

    openssl rsa -inform pem -in rsa.key -pubout > public-key.pem
    unable to load Private Key
    4341825004:error:09FFF064:PEM routines:CRYPTO_internal:bad base64 decode:/System/Volumes/Data/SWE/macOS/BuildRoots/38cf1d983f/Library/Caches/c
    openssl rsa -inform pem -in rsa.key -pubout > public-key.pem
    unable to load Private Key
    4341825004:error:09FFF064:PEM routines:CRYPTO_internal:bad base64 decode:/System/Volumes/Data/SWE/macOS/BuildRoots/38cf1d983f/Library/Caches/c
  • 前端开发命名规范文档

    这篇文章是我在推进前端团队命名规范总结整理的,这里分享给各位,有需要的朋友可以看看,有什么问题可以留言评论。

    命名方法论介绍

    现在市面上流行的几中命名方法有如下5种:

    驼峰命名法(camelCase)

    驼峰命名是最常用的一种命名方法,通常被用在,函数,变量,如:

    getUser()
    let userInfo = {}
    let isLogin = false
    getUser()
    let userInfo = {}
    let isLogin = false

    帕斯卡命名法(PascalCase)

    帕斯卡命名方法一般常见于Class类、接口、组件等,如:

    class Person {}
    inte
    class Person {}
    inte
  • JavaScript基础知识:搞懂深拷贝-浅拷贝-多方法详解

    各位同学又见面了,我是我,今天带来的JavaScript基础知识深拷贝浅拷贝,浅拷贝比较简单,但是我们学习嘛,就要由浅入深(听起来有点怪怪的),不能还没学会走路就想跑,在我做前端的时候,别人喜欢叫前端『切图仔』,现在大前端的概念深入人心,我们前端可以不再是『切图仔』,要是看后端不爽,他的工作我们也顺手做了,但是呢,能这样做,还需要建立在扎实的基础,和不断学习探索的精神上,我分享的JavaScript基础知识,都是曾经困扰我的一些点,现在对这些知识有了新的,全面的理解,分享出来给大家,也有可能理解有错,如果你觉得不对,就留言评

  • 网站服务器安全优化-CSP内容安全策略

    今天我要来聊聊CSP(Content Security Policy)内容安全策略,这是HTTP层的内容,主要目的就是设置安全白名单,前面我已经介绍过**XSS跨站脚本攻击**,CSP的作用主要就是防止加载不安全的内容,就算网站有可以注入JS脚本的地方,只要不加载和访问外部资源,也会相对安全些。

    如何启用CSP

    启用CSP的方法有两种:服务器配置Http头,在html页面设置Meta标签。

    就拿Apac

  • JavaScript基础:clientX/Y、pageX/Y、screenX/Y、offsetX/Y的区别

    有做过拖拽项目的前端小伙伴一定有遇到过这几个鼠标事件属性:clientX、clientY、pageX、pageY、screenX、screenY、offsetX、offsetY,WTF!一开始我看到这么多XY也是一头雾水头大的很,读了MDN的文档还是不是很清楚,后面看了几篇文章,又找到一些图片,终于再也不会把他们混在一起了,在这里记录分享给大家:

    • clientX/Y:当前鼠标点击位置相对于浏览器窗口左上角的X/Y值,不会随着文档滚动而变化
    • pageX/Y:当前鼠标点击位置相对于文档左上角的X/Y值,如果DOM文档,也就是页面滚动,这个值会变化
  • 从零开始开发WordPress主题教程(五):自定义头部导航-register_nav_menu

    这是从零开始开发wordpress主题系列教程的第七篇,但是标题是五,因为我把最开始的两篇剔除出去作为基础知识,这样github源码库的分支名称就能和文章名称对应上,这样比较容易理解,也比较容易找到相关的文章记录,如果是一路看下来的朋友,应该知道,我们已经通过默认WordPress主循环获取到文章数据,和**WordPress自定义循环**获取分类的文章数据,并展示他们,如果还搞不清楚的,就返回到前面的几篇看

  • 网站服务器安全优化-CORS跨域资源共享

    做过前端开发的小伙伴肯定会遇到下面这样报红的error经历:

    fetch-cors-site-error

    CORS资源请求错误

    如果没有遇到,那你就还需要多努力努力了,这个错误就是今天我要说的CORS(Cross-origin resource sharing)跨域资源共享,这是在前端开发中再常见不过的问题,比如我们本地开发,使用的域名地址是localhost,或者IP如192.x.x.x之类的,如果请求后端API服务器和前端服务器不是

  • 从零开始开发WordPress主题教程(四):自定义查询WP_Query

    上一篇我已经讲了在WordPress中使用Loop主循环显示Post文章,这篇文章要介绍下WordPress开发中的重点内容,那就是WP_Query类,如果搞明白这个类,就可以算入门WordPress开发了,无论是开发主题还是插件,今天我们通过使用WP_Query类自定义查询特定的文章内容。

    接着上一篇的源码,我们改造下布局,如果没有源码的可以拉到文章最底部Github源码仓库下载,因为这是入门教程,所以都是使