<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[木子聊前端]]></title><description><![CDATA[提供匠心精神一起学习]]></description><link>https://blog.youkuaiyun.com/qq_35617751</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_35617751]]></copyright><item><title><![CDATA[fdsafdsaf]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/128949204</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/128949204</guid><author>qq_35617751</author><pubDate>Thu, 09 Feb 2023 10:57:18 +0800</pubDate><description><![CDATA[gfdsgdfsg]]></description><category></category></item><item><title><![CDATA[vite.config.ts 基本通用配置]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/128869025</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/128869025</guid><author>qq_35617751</author><pubDate>Fri, 03 Feb 2023 15:48:39 +0800</pubDate><description><![CDATA[vite配置 基本满足日常大型开发，vite本身也默认支持很多。]]></description><category></category></item><item><title><![CDATA[ESLint 的一些理解]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/126310000</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/126310000</guid><author>qq_35617751</author><pubDate>Thu, 02 Feb 2023 16:19:38 +0800</pubDate><description><![CDATA[ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具，它的目标是保证代码的一致性和避免错误。]]></description><category></category></item><item><title><![CDATA[ts 移动端h5 拍照预览]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/115954371</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/115954371</guid><author>qq_35617751</author><pubDate>Wed, 21 Apr 2021 15:39:58 +0800</pubDate><description><![CDATA[通过typescript实现一个简单版本 移动端 拍照 和预览功能
1. 需求列表

点击拍照唤起手机后置摄像头
拍照完成在页面预览照片

2. 技术实现
2.1 布局和唤起后置摄像头
唤起摄像头采用  input 里面 type=‘file’ 类型，为了调用后置摄像头，需要一些组合属性：
这段是整个拍照端核心
&lt;input type="file" class="take-picture" id="take-event" accept="image/*,camera" capture="camera"]]></description><category></category></item><item><title><![CDATA[JavaScript 之this的使用场景和理解]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/115716286</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/115716286</guid><author>qq_35617751</author><pubDate>Thu, 15 Apr 2021 11:37:18 +0800</pubDate><description><![CDATA[JavaScript 的 this 总是指向一个对象，而具体指向哪个对象是在 运行时基于函数的执行环境动态绑定的，而非函数被声明时的环境。而在 es6 中 箭头函数 中得到来改善，在定义的时候确定，多数情况是一个比较灵活，还是需要依据执行的环境推理判断
从四个大的方向去推理this指向的具体对象

作为对象的方法调用
作为普通函数调用
作为构造函数调用
函数的 call 或 apply 方法调用

1. 作为对象的方法调用
当函数作为对象的方法被调用时，this 指向该对象
let obj={
    a:]]></description><category></category></item><item><title><![CDATA[有趣的setTimeout--节流和防抖的实现]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/115349859</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/115349859</guid><author>qq_35617751</author><pubDate>Tue, 13 Apr 2021 17:22:41 +0800</pubDate><description><![CDATA[1. setTimeout
setTimeout() 是一个默认是全局方法，用来设置一个定时器，该方法在定时器到期后执行一个函数或指定的一段代码
语法：
let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...)

参数说明：
func|code
想要执行的函数或代码字符串。 一般传入的都是函数。由于某些历史原因，支持传入代码字符串，但是不建议这样做。
delay
执行前的延时，以毫秒为单位（1000 毫秒 = 1 秒），默认值是 0；]]></description><category></category></item><item><title><![CDATA[proxy 基础-实现响应性和双向数据绑定]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/115301060</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/115301060</guid><author>qq_35617751</author><pubDate>Tue, 30 Mar 2021 10:26:18 +0800</pubDate><description><![CDATA[proxy 基础用法
Proxy 是一个包含另一个对象或函数并允许你对其进行拦截的对象。可以理解为‘代理’；使用proxy，就可以不再操作源数据而实现效果；
语法：
new Proxy(target,handle)

target：监听的目标对象或者方法
handle： 参数也是一个对象，用来定制拦截行为，即需要对源对象操作对操作
一个完整基础写法：
const target={name:'王麻子'};
	const handle={
		get:function(target,key,receiver){]]></description><category></category></item><item><title><![CDATA[ES6 扩展运算符 三点 ...  rest 知识点记录和运用]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/115163164</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/115163164</guid><author>qq_35617751</author><pubDate>Wed, 24 Mar 2021 15:35:02 +0800</pubDate><description><![CDATA[1. 扩展运算符
含义：（狭义）将一个数组转化为用逗号隔开的参数序列，用三个点（...）表示
翻译成代码：
// 直接输出数组
console.log([1,2]); // [1,2]

// 输出参数序列
console.log(...[1,2]); // 1,2


再看来一个例子 … 后面用字符串和对象看看效果

// 字符串
console.log(...'sfsaf'); // s f s a f

// 对象
console.log(...{a:'s'}); 
// Uncaught TypeE]]></description><category></category></item><item><title><![CDATA[webpack 之vue多页面打包（二）（脚手架） 一招学会常年无忧]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/107764391</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/107764391</guid><author>qq_35617751</author><pubDate>Tue, 16 Mar 2021 10:04:42 +0800</pubDate><description><![CDATA[接上一篇《VUE多页面打包一》

]]></description><category></category></item><item><title><![CDATA[Error: Cannot find module ‘webpack-cli/bin/config-yargs‘ 升级 webpack 5.0 以后遇到]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/114537719</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/114537719</guid><author>qq_35617751</author><pubDate>Mon, 08 Mar 2021 16:47:08 +0800</pubDate><description><![CDATA[错误场景
升级 webpack 以后 运行 npm run dev
Error: Cannot find module 'webpack-cli/bin/config-yargs'

查看 安装包版本
"devDependencies": {
    "webpack": "^5.2.0",
    "webpack-cli": "^4.1.0",
    "webpack-dev-server": "^3.11.0"
}

如果是这样的版本，那么问题是这样 的
If you upgrade webpack]]></description><category></category></item><item><title><![CDATA[npm 一些常用操作记录]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/114371393</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/114371393</guid><author>qq_35617751</author><pubDate>Thu, 04 Mar 2021 16:24:10 +0800</pubDate><description><![CDATA[初始化
npm init


可以自动生成package.json 文件
如果存在 package.json 文件 则可以自动安装相关的包

npm i -D
下载安装到开发环境使用，会自动分配到package.json 的 devDependencies 字段里面
如
npm i -D webpack

安装成功之后，package.json 的 devDependencies 字段自动记录
"devDependencies": {
    "webpack": "^5.24.3"
  }

npm i ]]></description><category></category></item><item><title><![CDATA[Syntax Error: TypeError: this.getOptions is not a function]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/114064431</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/114064431</guid><author>qq_35617751</author><pubDate>Thu, 25 Feb 2021 10:34:53 +0800</pubDate><description><![CDATA[场景重现
通过vue-cli搭建一个vue3.0项目，在使用less 的时候报错，依据官方的安装：
npm install -D less-loader less

安装的都是最新的 其中less-loader 是今天最新的 8.0.0 版本。
这时候运行
npm run serve

提下如下错误

通常提示
Syntax Error: TypeError: this.getOptions is not a function
提示语法错误都是 版本问题
解决
1，通过降级版本号是最快捷的方法
卸载 les]]></description><category></category></item><item><title><![CDATA[npm 包发布与升级--拥有自己的npm包]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/113781934</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/113781934</guid><author>qq_35617751</author><pubDate>Wed, 10 Feb 2021 15:09:41 +0800</pubDate><description><![CDATA[npm 对于大多数前端开发来说早已经不在陌生，是否也想过拥有一个自己的npm 包，提供给自己或者别人使用；
npm 本质和理解
NPM的全称是Node Package Manager，是一个NodeJS包管理和分发工具，已经成为了非官方的发布Node模块（包）的标准
npm 包的发布和管理，可以简单理解为上传代码和下载并使用它们。这样可以快速的发布代码哈哈
前期准备
1、需要有一个账户，毕竟是要传到别人的服务器上，注册地址：
https://www.npmjs.com/

记住注册账户的名字和密码，npm ]]></description><category></category></item><item><title><![CDATA[写了多年的javascript在看 变量类型和类型检查突然明白了什么？]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/113523980</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/113523980</guid><author>qq_35617751</author><pubDate>Fri, 05 Feb 2021 18:17:02 +0800</pubDate><description><![CDATA[一个变量引发的提交数据bug

A同学定义了一个提交对象 submitData ={name:‘xx’,sex:‘x’}, 同时这个对象要展示一个页面 给用户确认
姓名：xx ，性别：x ，
然后用户点击确认就提交服务端，同时限制了只能是两个属性，一切很美好，测试通过，这天A同学有事休息了。工作交接给B同学，恰好来了一个需求，需要在确认页面，添加一个展示字段，年龄，但是这个年龄不用提交，B同学一想，好简单，按照惯例，增加代码尽量不修改原来的逻辑，这个时候B同学定义了一个变量 showData = submi]]></description><category></category></item><item><title><![CDATA[vue3.0+cli 4 .0^ 单页面配置系列（三）-- 路由 vue-router4 基础使用]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/112009963</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/112009963</guid><author>qq_35617751</author><pubDate>Thu, 31 Dec 2020 17:04:45 +0800</pubDate><description><![CDATA[前言
vue 升级到3.0以后，vue-router 也发布了配套到升级 4.0+，使用路由的逻辑还是一样的只是一些方法改变了而已；
在vue开发单页面中，就算没有路由也一样可以正常使用组件完成工作，但是通常还是加入路由进行管理；
路由执行：组件（映射到）== &gt;  路由配置   == &gt;  渲染页面
项目目录分配
一般在使用路由的时会按照，路由执行功能，建立不同文件夹方便管理，在src目录下面；
...省略
+stc
 +routes
   index.js    // 存放路由配置
 +vi]]></description><category></category></item><item><title><![CDATA[vue3.0+cli 4 .0^ 单页面配置系列（二）--vue.config.js 基础配置]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/111936429</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/111936429</guid><author>qq_35617751</author><pubDate>Wed, 30 Dec 2020 13:56:07 +0800</pubDate><description><![CDATA[vue.config.js 是一个可选的配置文件，在安装cli的时候并不会自动生产，需要使用的时候自己手动编写，名字不能错，放在更目录下面，它会被 @vue/cli-service 自动加载，执行；
详细的介绍见官网，初略使用看下面
由于使用的官网cli很多都帮我们处理好了。以后在写自定义脚手架
打包自动加入公用样式css
在环境变量一节介绍分离不同的配置文件，自动加入公用样式比如定义变量和公用样式放到一个less文件comm.less， 这个文件生产和开发环境都需要，就配置在base.config.js ]]></description><category></category></item><item><title><![CDATA[vue3.0+cli 4 .0^  单页面配置系列（一）--环境变量]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/111358057</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/111358057</guid><author>qq_35617751</author><pubDate>Fri, 18 Dec 2020 18:12:05 +0800</pubDate><description><![CDATA[依据vue-cli 搭建一个 vue3.0 的项目
通过这个命令
// vue create 项目名称 
vue create muzi

然后通过 npm 命令,把项目启动
npm run serve 

查看项目启动成功，不成功找找原因。
npm run serve 是如何启动
要完全解释这个问题，需要另外一片文章，这里主要围绕vue3.0环境变量。那么在vue这个项目中，发生了什么事情？
打开 项目的 package.json：找到如下代码
"scripts": {
    "serve": "vue]]></description><category></category></item><item><title><![CDATA[vue 过滤器实现和使用场景举例]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/109580762</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/109580762</guid><author>qq_35617751</author><pubDate>Mon, 09 Nov 2020 16:41:24 +0800</pubDate><description><![CDATA[在生活中把一些含有我们需要的东西但是比较粗旷通过一定的装置过滤出更接近需要的产品，这个装置大概就是过滤器。
比如：过滤沙子的纱网，经过纱网过滤可以得出精细的沙子；程序编写通常也会有很多类似的骚操作，在vue中提供自定义过滤器，
得到更需要的精准数据，来了解一下
需求：

展示一个产品的价格price。

解析需求：

产品的价格可能包含小数点，可能该产品还未定义用‘–’来表示

开发需求

前端从后端获取一个价格数据字段price，这个字段可能包含的结果是null，‘ ’，或者是undefined ，这个时]]></description><category></category></item><item><title><![CDATA[Mac系统下初始化MySQL密码--自用]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/107929597</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/107929597</guid><author>qq_35617751</author><pubDate>Tue, 11 Aug 2020 10:48:32 +0800</pubDate><description><![CDATA[第一步：关闭mysql
sudo /usr/local/mysql/support-files/mysql.server stop

第二步：进入终端设置
cd /usr/local/mysql/bin/

输入（sudo su）回车以获取管理员权限
sudo su

输入（./mysqld_safe --skip-grant-tables &amp;）回车以禁止mysql验证功能，mysql会自动重启
./mysqld_safe --skip-grant-tables &amp;

输入命令（./mysq]]></description><category></category></item><item><title><![CDATA[mac 下源码安装 mysql-8.0.20以及初始化MySQL密码]]></title><link>https://blog.youkuaiyun.com/qq_35617751/article/details/107929167</link><guid>https://blog.youkuaiyun.com/qq_35617751/article/details/107929167</guid><author>qq_35617751</author><pubDate>Tue, 11 Aug 2020 10:24:22 +0800</pubDate><description><![CDATA[下载
下载mysql-8.0.20-macos10.15-x86_64.tar.gz 可以从mysql官网下载
https://dev.mysql.com/downloads/mysql/
解压
tar zxvf mysql-8.0.20-macos10.15-x86_64.tar.gz

移动解压后的二进制包到安装目录
sudo mv mysql-8.0.20-macos10.15-x86_64 /usr/local/mysql

在 /usr/local/mysql 目录新建 data目录文件
cd /]]></description><category></category></item></channel></rss>