<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TZOF_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TZOF_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TZOF_]]></copyright><item><title><![CDATA[web-printscreen]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/139443928</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/139443928</guid><author>TZOF_</author><pubDate>Tue, 04 Mar 2025 17:45:51 +0800</pubDate><description><![CDATA[【代码】web-printscreen。]]></description><category></category></item><item><title><![CDATA[博客搬家到掘金了]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/142876896</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/142876896</guid><author>TZOF_</author><pubDate>Sat, 12 Oct 2024 14:14:37 +0800</pubDate><description><![CDATA[主要专栏 微信小程序、vue、node、mysql、nginx、linux、阿里云、js、css、html]]></description><category></category></item><item><title><![CDATA[proxy的特性]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/122882429</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/122882429</guid><author>TZOF_</author><pubDate>Fri, 11 Feb 2022 15:56:31 +0800</pubDate><description><![CDATA[proxy的特性

proxy作用：

拦截对象中某一个所有属性的调用和变换

基础格式：

new Proxy(obj, {get(){},set(){}});
参数一：拦截的对象
参数二：方法中get调用时触发 set赋值时触发

代码：
let obj = {
    name: 'TZOF',
    age: 23,
    msg: 'you think'
}
obj = new Proxy(obj, {
    get() {
        console.log('调用时进入get');
]]></description><category></category></item><item><title><![CDATA[defineProperty的特性]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/122880345</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/122880345</guid><author>TZOF_</author><pubDate>Fri, 11 Feb 2022 15:17:13 +0800</pubDate><description><![CDATA[defineProperty的特性

defineProperty作用：

拦截对象中某一个指定属性的调用和变换

基础格式：

Object,defineProperty(obj, key, {get(){},set(){}});
参数一：拦截的对象
参数二：指定对象的属性名
参数三：方法中get调用时触发 set赋值时触发

代码：
let obj = {
    name: 'TZOF',
    age: 23,
    msg: 'you think'
}
Object.definePropert]]></description><category></category></item><item><title><![CDATA[javascript数据类型]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/122107669</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/122107669</guid><author>TZOF_</author><pubDate>Thu, 23 Dec 2021 14:51:54 +0800</pubDate><description><![CDATA[javascript数据类型
基本类型（原始类型）

数值（number）
字符串（string）
布尔值（boolean）
null
undefined
符号（symbol）

引用类型（对象类型）

除了基本类型之外的所有值都是引用类型


数组（array）
对象（object）
函数（function）


以上三种为常见的引用类型还有：Set、Map、RegExp、Date、Error


...]]></description><category></category></item><item><title><![CDATA[for of和for in的区别]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/122106095</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/122106095</guid><author>TZOF_</author><pubDate>Thu, 23 Dec 2021 14:19:34 +0800</pubDate><description><![CDATA[for of和for in的区别
for of

of遍历的是元素item

for in

in遍历的是索引index

示例代码
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
console.log('of遍历元素item------------------------------------------');
for (let i of arr) {
    console.log(i)
}
console.log('in遍历索引index------------]]></description><category></category></item><item><title><![CDATA[前端面试题HTML篇]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117049090</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117049090</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:14:04 +0800</pubDate><description><![CDATA[前端面试题HTML篇

doctype的作⽤是什么

声明位于文档中的最前面，处于标签之前。告知浏览器的解析器，用什么文档类型规范来解析这个文档。
严格模式的排版和JS 运作模式是 以该浏览器支持的最高标准运行。
在混杂模式中，页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。

HTML、XML 和 XHTML 有什么区别

html(超文本标记语言)——xhtml(可扩展性超文本标记语言)——xml(可扩展性标记语言）
h]]></description><category></category></item><item><title><![CDATA[前端面试题Vue篇]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117063149</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117063149</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:13:55 +0800</pubDate><description><![CDATA[前端面试题Vue篇

核心问题概述：
vue生命周期

生命周期是什么？
有什么内容？
你是怎么用的？


vue生命周期是组件从创建到销毁的全部过程，在整个过程中会触发11个生命周期函数。
new Vue()初始化创建vue实例，指定vue的模板，通过判断template属性或者render函数方式默认模板。
初始化数据，触发将数据与模板结合，触发beforeCreate与created生命周期函数。beforeCreate我用于处理页面过度效果如加载，created用于页面所有的初始化内容。
将模板数据]]></description><category></category></item><item><title><![CDATA[JavaScript深入之从ECMAScript规范解读this]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048526</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048526</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:13:20 +0800</pubDate><description><![CDATA[JavaScript深入之从ECMAScript规范解读this

JavaScript深入系列第六篇，本篇我们追根溯源，从ECMAScript5规范解读this在函数调用时到底是如何确定的。

前言
在《JavaScript深入之执行上下文栈》中讲到，当JavaScript代码执行一段可执行代码(executable code)时，会创建对应的执行上下文(execution context)。
对于每个执行上下文，都有三个重要属性

变量对象(Variable object，VO)
作用域链(Scope ]]></description><category></category></item><item><title><![CDATA[JavaScript深入之词法作用域和动态作用域]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048625</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048625</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:13:15 +0800</pubDate><description><![CDATA[JavaScript深入之词法作用域和动态作用域

JavaScript深入系列的第二篇，JavaScript采用词法作用域，什么语言采用了动态作用域？两者的区别又是什么？还有一个略难的思考题，快来看看吧。

作用域
作用域是指程序源代码中定义变量的区域。
作用域规定了如何查找变量，也就是确定当前执行代码对变量的访问权限。
JavaScript 采用词法作用域(lexical scoping)，也就是静态作用域。
静态作用域与动态作用域
因为 JavaScript 采用的是词法作用域，函数的作用域在函数定义]]></description><category></category></item><item><title><![CDATA[JavaScript深入之执行上下文栈]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048638</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048638</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:13:09 +0800</pubDate><description><![CDATA[执行上下文栈
js代码执行顺序是什么，大部分人都知道同步执行
var foo = function(){
            console.log('foo1');
        }
        foo(); // foo1
        var foo = function(){
            console.log('foo2');
        }
        foo() // foo2

然后看以下下面代码

        function foo(){
      ]]></description><category></category></item><item><title><![CDATA[JavaScript深入之闭包]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048674</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048674</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:12:53 +0800</pubDate><description><![CDATA[JavaScript深入之闭包

JavaScript深入系列第八篇，介绍理论上的闭包和实践上的闭包，以及从作用域链的角度解析经典的闭包题。

定义
MDN 对闭包的定义为：

闭包是指那些能够访问自由变量的函数。

那什么是自由变量呢？

自由变量是指在函数中使用的，但既不是函数参数也不是函数的局部变量的变量。

由此，我们可以看出闭包共有两部分组成：

闭包 = 函数 + 函数能够访问的自由变量

举个例子：
var a = 1;

function foo() {
    console.log(a)]]></description><category></category></item><item><title><![CDATA[JavaScript深入之变量对象]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048665</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048665</guid><author>TZOF_</author><pubDate>Fri, 21 May 2021 09:12:43 +0800</pubDate><description><![CDATA[JavaScript深入之变量对象

JavaScript深入系列第四篇，具体讲解执行上下文中的变量对象与活动对象。全局上下文下的变量对象是什么？函数上下文下的活动对象是如何分析和执行的？还有两个思考题帮你加深印象，快来看看吧！

前言
在上篇《JavaScript深入之执行上下文栈》中讲到，当 JavaScript 代码执行一段可执行代码(executable code)时，会创建对应的执行上下文(execution context)。
对于每个执行上下文，都有三个重要属性：

变量对象(Variable]]></description><category></category></item><item><title><![CDATA[JavaScript深入之从原型到原型链]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048590</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048590</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:13:14 +0800</pubDate><description><![CDATA[JavaScript深入之从原型到原型链

JavaScript深入系列的第一篇，从原型与原型链开始讲起，如果你想知道构造函数的实例的原型，原型的原型，原型的原型的原型是什么，就来看看这篇文章吧。

构造函数创建对象
我们先使用构造函数创建一个对象：
function Person() {

}
var person = new Person();
person.name = 'Kevin';
console.log(person.name) // Kevin

在这个例子中，Person 就是一个构造函数]]></description><category></category></item><item><title><![CDATA[jsonwebtoken&&koa-jswt]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048441</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048441</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:13:07 +0800</pubDate><description><![CDATA[jsonwebtoken&amp;&amp;koa-jswt
jwt
作用：鉴权。 代替了 cookies session
jwt特点
（1）JWT 默认是不加密，但也是可以加密的。生成原始 Token 以后，可以用密钥再加密一次。
（2）JWT 不加密的情况下，不能将秘密数据写入 JWT。
（3）JWT 不仅可以用于认证，也可以用于交换信息。有效使用 JWT，可以降低服务器查询数据库的次数。
（4）JWT 的最大缺点是，由于服务器不保存 session 状态，因此无法在使用过程中废止某个 token，或者]]></description><category></category></item><item><title><![CDATA[node后端代理接口]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048427</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048427</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:13:02 +0800</pubDate><description><![CDATA[node后端代理接口
方式一
var http = require('http')
var app = http.createServer(function (req, res) { // 访问服务时候执行
    if (req.url === '/') {
        // 服务器向服务发送请求；叫做后端代理服务器；是不存在跨域问题
        // http.get() 向另一个服务器发送气请求
        // 参一请求地址；请求参数在请求地址上进行拼接的
        // 请求完毕]]></description><category></category></item><item><title><![CDATA[centos上用docker部署环境]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048373</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048373</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:12:57 +0800</pubDate><description><![CDATA[centos上用docker部署环境


下载docker

参考链接
相关命令

systemctl start docker 或者 service docker start //启动dokcer
systemctl stop docker 或者 service docker stop //关闭docker
docker images //看镜像
docker ps -a //看启动的容器
docker rmi dsad324(镜像id) //删除镜像
docker logs name(容器名称) //查]]></description><category></category></item><item><title><![CDATA[ssh操作]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048343</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048343</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:12:52 +0800</pubDate><description><![CDATA[ssh操作

mac本地免密登录远程服务器

① mac命令行
ssh-keygen -t rsa 或者 ssh-keygen -t rsa -P ''
然后一路回车即可，会在~/.ssh目录下生成 id_rsa和id_rsa.pub两个文件，id_rsa为私钥，id_rsa.pub为公钥
② 登录远程服务器
将mac公钥id_rsa.pub拷贝，并将该文件追加到~/.ssh/authorized_keys文件中，:wq保存
③ 设置文件权限
chmod 600 ~/.ssh/authorized_keys]]></description><category></category></item><item><title><![CDATA[前端性能优化常用代码]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117048146</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117048146</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:12:44 +0800</pubDate><description><![CDATA[前端性能优化常用代码

为什么要做性能优化？性能优化到底有多重要？ 网站的性能优化对于用户的留存率、转化率有很大的影响，所以对于前端开发来说性能优化能力也是重要的考察点。

性能优化的点非常的多，有的小伙伴觉得记起来非常的麻烦，所以这里主要梳理出一条线来帮助记忆。
可以将性能优化分为两个大的分类：

加载时优化
运行时优加载时性能

顾名思义加载时优化 主要解决的就是让一个网站加载过程更快，比如压缩文件大小、使用CDN加速等方式可以优化加载性能。检查加载性能的指标一般看：白屏时间和首屏时间：

白屏时间：指]]></description><category></category></item><item><title><![CDATA[centox7系统目录介绍]]></title><link>https://blog.youkuaiyun.com/TZOF_/article/details/117047929</link><guid>https://blog.youkuaiyun.com/TZOF_/article/details/117047929</guid><author>TZOF_</author><pubDate>Thu, 20 May 2021 09:12:37 +0800</pubDate><description><![CDATA[centox7系统目录介绍
## /

这就是根目录。对你的电脑来说，有且只有一个根目录。所有的东西，我是说所有的东西都是从这里开始。举个例子：当你在终端里输入“/home”，你其实是在告诉电脑，先从/(根目录)开始，再进入到home目录。

/root

是系统管理员(root user)的目录。对于系统来说，系统管理员就好比是上帝，它能对系统做任何事情，甚至包括删除你的文件。因此，请小心使用root帐号。

/bin

这里存放了标准的(或者说是缺省的)linux的工具，比如像“ls”、“vi”还有“m]]></description><category></category></item></channel></rss>