<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[k19970320j的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/k19970320j</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; k19970320j]]></copyright><item><title><![CDATA[brew安装、启动nginx，Error]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/121598653</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/121598653</guid><author>k19970320j</author><pubDate>Sun, 28 Nov 2021 21:55:29 +0800</pubDate><description><![CDATA[问题
使用brew install nginx命令安装nginx，使用brew services start nginx启动会出现一些问题：

使用brew services start nginx命令启动nginx服务的时候，提示success，但是使用地址访问不了
使用brew services ls查看服务的时候，发现nginx服务出现error
使用sudo brew services start nginx启动nginx的时候，也会出现报错，提示执行失败

解决办法
使用`brew install]]></description><category></category></item><item><title><![CDATA[VueCli4.x commit时，没有执行gitHooks]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120664723</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120664723</guid><author>k19970320j</author><pubDate>Sat, 09 Oct 2021 09:42:15 +0800</pubDate><description><![CDATA[使用vuecli4.x创建项目的时候，选择Lint and fix on commit执行commit的时候，并没有执行gitHooks，需要手动只想 node node_modules/yorkie/bin/install.js，重新生成.git目录中的.git/hoos。

]]></description><category></category></item><item><title><![CDATA[请认真阅读文档]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120428940</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120428940</guid><author>k19970320j</author><pubDate>Thu, 23 Sep 2021 09:58:52 +0800</pubDate><description><![CDATA[学习框架、库最好的起步就是阅读其官方文档，认真、仔细的阅读，做好记录、写好demo。
问题
在使用openlayers6的时候，import LineString from 'ol/geom/LineString';，new LineString 的时候需要传入经纬度是number类型

...]]></description><category></category></item><item><title><![CDATA[fatal: Not possible to fast-forward, aborting.]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120413698</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120413698</guid><author>k19970320j</author><pubDate>Wed, 22 Sep 2021 14:03:04 +0800</pubDate><description><![CDATA[问题
  fatal: Not possible to fast-forward, aborting.

出现这个问题的原因是：多个同事修改了同一个文件，并且别人比你先提交。当你拉取代码的时候，就会报错。
解决方法
// master 指代的是当前修改的分支
git pull origin master --rebase

执行完上面的命令，如果没有冲突就可以正常更新和提交代码了。如果有冲突，按照提示解决冲突即可。
// 执行此命令处理冲突
git rebase --continue


...]]></description><category></category></item><item><title><![CDATA[开发经验思考]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120258260</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120258260</guid><author>k19970320j</author><pubDate>Sun, 12 Sep 2021 23:40:27 +0800</pubDate><description><![CDATA[工作只有同事没有朋友，改配合的就得配合。有问题只能你自己背过
文档先行、按排期计划进行
思考如何提效

需求了解时间
开发文档约定
开发时间
联调时间
部署时间
测试时间




]]></description><category></category></item><item><title><![CDATA[Vue3中样式绑定]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120210540</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120210540</guid><author>k19970320j</author><pubDate>Thu, 09 Sep 2021 21:41:05 +0800</pubDate><description><![CDATA[样式绑定示例
注意事项
1、在html文件中，不能加多余的空格
// Error
&lt;h3 :class={ 'cls2' : count }&gt;{{ msg }}&lt;/h3&gt;

2、在数组中，样式可以使用三元表达式，对象中不行
&lt;h3 :class=[count?'cls1':'cls2']&gt;{{ msg }}&lt;/h3&gt;


...]]></description><category></category></item><item><title><![CDATA[shim和polyfill]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/120082831</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/120082831</guid><author>k19970320j</author><pubDate>Fri, 03 Sep 2021 16:00:49 +0800</pubDate><description><![CDATA[Shim
shim指的是在一个旧的环境中模拟出一个新的API，而且仅靠旧环境中已有的手段，以便所有的浏览器具有相同的行为。主要特征：

该API存在于现代浏览器中；
浏览器有各自的API或可通过别的API实现；
API的所有方法都被重新实现；
拦截API调用，并提供自己的实现
是一个优雅降级

Polyfill
polyfill是一个段代码（或者插件），提供了那些开发者们希望浏览器原声提供支持的功能。程序库先检查浏览器是否支持某个API，如果不支持则加载对应的polyfill。主要特征：

是浏览器API的]]></description><category></category></item><item><title><![CDATA[2020-10-20]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/109162189</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/109162189</guid><author>k19970320j</author><pubDate>Tue, 20 Oct 2020 08:38:49 +0800</pubDate><description><![CDATA[字节跳动面试题
HTML(5)

HTML语义化的理解


使用恰当语义的html标签、class类名等内容，让页面具有良好的结构与含义，从而让人和机器都能快速理解网页内容。一方面语义化的标签可以让机器在更少的人为干涉下收集并研究网页的信息，从而可以读懂网页的内容，然后将收集汇总的信息进行分析；另一方面它可以让开发人员读懂结构和用户以及屏幕阅读器能够读懂内容。
具体体现在四个方面：
1、让页面的内容结构化，在没有CSS的情况下，依然能够清楚的阅读页面
2、提高代码的可读性，便于团队的协作、后期的维护
3、有]]></description><category></category></item><item><title><![CDATA[滚动事件没有效果]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104875652</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104875652</guid><author>k19970320j</author><pubDate>Sun, 15 Mar 2020 11:32:47 +0800</pubDate><description><![CDATA[在使用VueJS项目中，使用window.onscroll事件监听页面滚动，发现没用效果，找网上查找了资料，原因是父级元素使用overflow:auto，去掉这个元素就可以。
在移动端滚动滑动效果中，使用better-scroll，有很多坑，比如：会使定位元素失效，点击事件失效，原生的window.onload事件失效


...]]></description><category></category></item><item><title><![CDATA[VueJS中的slot插槽]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104761434</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104761434</guid><author>k19970320j</author><pubDate>Mon, 09 Mar 2020 21:59:51 +0800</pubDate><description><![CDATA[VueJS中的slot插槽语法是定义组件不可获取且非常重要的语法，本篇文章将介绍一下VueJS中slot的学习笔记。

在Vue2.6.0的版本中，Vue团队为具名插槽和作用域插槽引入了一个新的统一语法（v-slot）指令。它取代了slot和slot-scope，但是旧的语法没有被移除

插槽内容
Vue实现了一套内容分发API，这套API的设计灵感源自Web Components规范草案，将&l...]]></description><category></category></item><item><title><![CDATA[Promise学习笔记]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104746755</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104746755</guid><author>k19970320j</author><pubDate>Mon, 09 Mar 2020 10:40:38 +0800</pubDate><description><![CDATA[定义

Promise是一个对象，它代表了一个异步操作的最终完成或者失败。本质上，Promise是一个被某些函数传入的对象，我们附加回调函数使用它，而不是将回调函数传入那些函数内部。

语法
new Promise( function(resolve, reject) {...} /* executor */  );

参数

executor：executor是带有resolve和reject两...]]></description><category></category></item><item><title><![CDATA[Vue CLI3.0生产环境下去掉console]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104689364</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104689364</guid><author>k19970320j</author><pubDate>Fri, 06 Mar 2020 09:34:29 +0800</pubDate><description><![CDATA[在开发过程中，必不可少的会使用console去开发调试代码，但是生产环境下，又不想让用户看到，如果手动去删除，又显得麻烦。因此我们可以使用webpack提供的插件去清楚console

安装npm install terser-webpack-plugin -D
在vue.config.js中配置

configureWebpack: config =&gt; {
   if (process.e...]]></description><category></category></item><item><title><![CDATA[vue-cli3.0 配置全局自定义变量]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104686601</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104686601</guid><author>k19970320j</author><pubDate>Thu, 05 Mar 2020 23:02:47 +0800</pubDate><description><![CDATA[在使用vuecli3.0去构建项目时，可以通过npm run serve去启动项目，使用npm run build编译项目，很多时候，针对生产和开发的环境变量是不一样的，比如：请求的地址。因此我们需要针对生产和开发环境定义不同的全局变量。


.env：全局默认配置文件
.env.development：开发环境下的配置文件
.env.production：生产环境下的配置文件
注意：在文件下的...]]></description><category></category></item><item><title><![CDATA[浅谈load和DOMContentLoaded]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104658023</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104658023</guid><author>k19970320j</author><pubDate>Wed, 04 Mar 2020 17:42:27 +0800</pubDate><description><![CDATA[load


MDN：当一个资源及其依赖资源已完成加载时，将触发load事件。
当页面上的所有资源加载完成时触发，包括：html、css、图片资源等


DOMContentLoaded


MDN：当纯HTML被完全加载以及解析时，DOMContentLoaded 事件才会被触发，而不必等待样式表、图片或者子框架加载完成


...]]></description><category></category></item><item><title><![CDATA[VueJs编程规范]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104642018</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104642018</guid><author>k19970320j</author><pubDate>Tue, 03 Mar 2020 22:16:31 +0800</pubDate><description><![CDATA[好的编程习惯能够减少错误发生的概率，编码习惯好的人写出来的代码可读性好、可维护性高，规范编码风格习惯，降低团队之间的沟通成本。本文将介绍VueJS的编码规范

组件名为多个单词
组件名应该始终是多个单词，根组件App以及&lt;transition&gt;，&lt;component&gt;之类的内置组件除外。这样做可以避免跟现有的以及未来的HTML元素相冲突，因为所以的HTML元素名称都是单个...]]></description><category></category></item><item><title><![CDATA[JSON.stringify和JSON.parse详解]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104602237</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104602237</guid><author>k19970320j</author><pubDate>Mon, 02 Mar 2020 09:30:13 +0800</pubDate><description><![CDATA[JSON.stringify()

MDN：JSON.stringify()方法将一个JavaScript值（对象或数组）转换为一个JSON字符串，如果指定了replacer是一个函数，则可选择性的替换，或者如果指定了replacer是一个数组，则可选择性地仅包含数组指定的属性。

语法
// []表示可选参数
JSON.stringify(value[, replacer [, space]])...]]></description><category></category></item><item><title><![CDATA[JavaScript的模块化]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104500010</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104500010</guid><author>k19970320j</author><pubDate>Tue, 25 Feb 2020 18:35:07 +0800</pubDate><description><![CDATA[模块化
在web应用中，随着项目的规模越来越大，模块化的出现是一个必然的结果。由于在js文件里面声明的变量都会被附加在全局的window对象上，这样很可能会污染其它全局变量，因此模块化的出现，让js文件之间互不影响，使项目更加利于维护。
主流的模块规范

CommonJS
ES6 Module

CommonJS
CommonJS定义的模块分为：模块标识(module)，模块定义(exports)...]]></description><category></category></item><item><title><![CDATA[简易的VueRouter实现]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104456940</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104456940</guid><author>k19970320j</author><pubDate>Sun, 23 Feb 2020 15:17:50 +0800</pubDate><description><![CDATA[Vue	 Router

Vue Router是VueJS官方的路由管理器。它和VueJS的核心深度集成，让构建单页面应用变得易如反掌

基于Hash模式的路由实现
kRouter.js
import Vue from 'vue'
import Home from '../views/Home.vue'
import About from '../views/About.vue'

class V...]]></description><category></category></item><item><title><![CDATA[VueJS自定义组件之弹窗组件和树形组件]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104454475</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104454475</guid><author>k19970320j</author><pubDate>Sun, 23 Feb 2020 09:47:09 +0800</pubDate><description><![CDATA[弹窗组件
这类组件的特点是在当前Vue实例之外存在，通常挂载与body，上在使用element-ui弹窗组件的时候，我们可以看到这一点：

并且它们是通过JS动态创建的，不需要在任何组件中声明。接下来我们看具体代码实现。
create.js
创建一个js文件，用来创建弹窗实例
import Vue from 'vue'
export default function create (comp, p...]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.youkuaiyun.com/k19970320j/article/details/104441680</link><guid>https://blog.youkuaiyun.com/k19970320j/article/details/104441680</guid><author>k19970320j</author><pubDate>Sat, 22 Feb 2020 16:27:16 +0800</pubDate><description><![CDATA[正则表达式的概念

MDN解释：正则表达式是用于匹配字符串中字符组合的模式。
简单理解正则就是用来匹配字符串的，根据我们的规则去匹配字符串

创建一个正则表达式
1、使用一个正则表达式字面量
//匹配一个字符串中出现abc子串
const reg = /abc/
console.log(/abc/.test('jackabc')) // true
console.log(/abc/.test('j...]]></description><category></category></item></channel></rss>