<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[湖南长沙前端开发与培训－通途工作室 - 前端研究]]></title>
  <subtitle type="html"><![CDATA[前端开发,技术培训,动效研究,求职信息]]></subtitle>
  <id>http://blog.258754.cn/</id>
  <link rel="alternate" type="text/html" href="http://blog.258754.cn/" /> 
  <link rel="self" type="application/atom+xml" href="http://blog.258754.cn/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2022-11-17T10:58:36+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[一键启动平行目录的node服务端 / vue前端项目，并热更新]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-11-17T10:58:36+08:00</updated>
	  <published>2022-11-17T10:58:36+08:00</published>
		  <summary type="html"><![CDATA[<p>同步发到 https://zhuanlan.zhihu.com/p/584197370</p>
<p>&nbsp;</p>
<p>项目是用一个git进行管理的。开发时经常需要三端联动调试，一个个启动太麻烦了。于是找了个办法进行多端同时启动，并实现了前后端的热更新。</p>
<p>package.json是根目录的那个，并不是admin(vue)的那一个。主要配置如下：</p>
<p>concurrently用来同时启动两个npm run命令</p>
<p>nodemon是普通node命令的一个替代品，可以实现node开发时的热更新</p>
<p>运行npm run dev就可以同时运行serve和admin两个命令，更多端命令也是以此类推。</p>
<p>npm run admin命令中的--prefix admin意思是，运行admin目录下的vue命令：npm run local，这个很有用，我查了好多资料才搞清楚，用上这个参数，就可以子目录下启动vue项目。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=290" /> 
	  <id>http://blog.258754.cn/default.asp?id=290</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[element-ui主题编辑器报request timeout的解决办法]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-07-13T09:53:15+08:00</updated>
	  <published>2022-07-13T09:53:15+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;2022年7月，element-ui主题（theme)编辑器一段时间老是报timeout问题，等了一二周也没见解决。一个偶然机会找到一个网上项目，让element官网可以在本地跑起来，当然也可以做theme编辑，特此分享。用这种方法编辑element外观，才是最正规的方法。</p>
<div>&nbsp;</div>
<div>使用起来很简单，先按package.json中的配置，把项目把本地站跑起来。</div>
<div>&nbsp;</div>
<div>在本地站编辑完，点&ldquo;下载&rdquo;，生成zip压缩包，将压缩包中的theme目录放到特定位置，然后在项目的main.js中引入这个index.css就行了。</div>
<div>&nbsp;</div>
<div><a href="https://zhuanlan.zhihu.com/p/540945216" target="_blank"><span style="font-size: 20px;">资源在我知乎的文章</span></a></div>
<div id="qb-sougou-search" style="display: none; opacity: 0;">
<p>搜索</p>
<p class="last-btn">复制</p>
<iframe src=""></iframe></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=289" /> 
	  <id>http://blog.258754.cn/default.asp?id=289</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[websocket前后端通讯模拟]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-06-13T16:08:45+08:00</updated>
	  <published>2022-06-13T16:08:45+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;前端VUE代码：</p>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>test_ws()&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;let&nbsp;websocket;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;let&nbsp;url&nbsp;=&nbsp;`ws:<span class="comment">//192.168.0.73:54000?id=888`;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;let&nbsp;websocket&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;WebSocket(url,[</span><span class="string">'token340987340697'</span><span>]);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;建立连接</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;websocket.onopen&nbsp;=&nbsp;()&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;发送数据</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.clear();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;websocket发送数据中&quot;</span><span>,websocket);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;websocket.send(<span class="string">&quot;发送数据!!!!!!&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;客户端接收服务端返回的数据</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;websocket.onmessage&nbsp;=&nbsp;evt&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;websocket返回的数据：&quot;</span><span>,&nbsp;evt.data);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;发生错误时</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;websocket.onerror&nbsp;=&nbsp;evt&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;websocket错误：&quot;</span><span>,&nbsp;evt);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;关闭连接</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;websocket.onclose&nbsp;=&nbsp;evt&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;websocket关闭：&quot;</span><span>,&nbsp;evt);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.my_ws&nbsp;=&nbsp;websocket&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>},&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>后端node.js+koa：</p>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>app.ws.use((ctx,&nbsp;next)&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*&nbsp;每打开一个连接就往&nbsp;上线文数组中&nbsp;添加一个上下文&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ctxs.push(ctx);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;console.log(&quot;🚀&nbsp;###&nbsp;ctx1&quot;,ctx.query.id)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;🚀&nbsp;@@@@@@@@@@@&quot;</span><span>,&nbsp;ctx.header[</span><span class="string">&quot;sec-websocket-protocol&quot;</span><span>])&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;ctx.websocket.send(<span class="string">&quot;start!!!!&quot;</span><span>+_.random(999,&nbsp;9999))&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ctx.websocket.on(<span class="string">&quot;message&quot;</span><span>,&nbsp;(msg)&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;🚀&nbsp;###&nbsp;msg2&quot;</span><span>,&nbsp;msg.toString())&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(ctx.query.id&nbsp;==&nbsp;</span><span class="string">'10001'</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg1.push(msg.toString())&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(ctx.query.id&nbsp;==&nbsp;</span><span class="string">'10002'</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg2.push(msg.toString())&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*&nbsp;for(let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;ctxs.length;&nbsp;i++)&nbsp;{</span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ctx&nbsp;!=&nbsp;ctxs[i])&nbsp;{</span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctxs[i].websocket.send(message)</span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;客户端主动断开链接时候用&nbsp;可以先不管</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ctx.websocket.on(<span class="string">&quot;close&quot;</span><span>,&nbsp;(message)&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(ctx.query.id,<span class="string">&quot;🚀&nbsp;###&nbsp;close###########&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(msg1);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">'---------------'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(msg2);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*&nbsp;连接关闭时,&nbsp;清理&nbsp;上下文数组,&nbsp;防止报错&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;index&nbsp;=&nbsp;ctxs.indexOf(ctx);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctxs.splice(index,&nbsp;1);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<div id="qb-sougou-search" style="display: none; opacity: 0;">
<p>搜索</p>
<p class="last-btn">复制</p>
<iframe src=""></iframe></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=288" /> 
	  <id>http://blog.258754.cn/default.asp?id=288</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[关于faker.js，中文化/删库后地址/国内镜像]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-05-31T11:04:44+08:00</updated>
	  <published>2022-05-31T11:04:44+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;一个中文化做得比较全的版本，比如中文名，省份，地址，公司名啥的，亲测可用。</p>
<p>https://github.com/layerssss/Faker-zh-cn.js/</p>
<p>&nbsp;</p>
<p>原作者删库后，被github给冻结了，志愿者重新维护了这个库：https://github.com/faker-js/faker</p>
<p>GITEE国内镜像，未测，https://gitee.com/mirrors/faker-js</p>
<p>&nbsp;</p>
<p>在网上找了一下，也没找到比faker更好用的假数据中文插件了。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=287" /> 
	  <id>http://blog.258754.cn/default.asp?id=287</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[vue2实现Teleport，用来做跨组件DOM挂载]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-04-20T16:07:50+08:00</updated>
	  <published>2022-04-20T16:07:50+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;父组件调用：（<span style="font-family: &quot;Courier New&quot;, monospace;">to=</span><span class="string" style="color: blue; font-family: &quot;Courier New&quot;, monospace;">&quot;#app&quot;的意思是把#</span><span style="color: rgb(0, 0, 255); font-family: &quot;Courier New&quot;, monospace;">divPopup挂载到#app节点上</span>）</p>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;Teleport&nbsp;to=</span><span class="string">&quot;#app&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id=<span class="string">&quot;divPopup&quot;</span><span>&nbsp;style=</span><span class="string">&quot;z-index:20000;&quot;</span><span>&nbsp;v-show=</span><span class="string">&quot;dialogVisible&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;el-button&nbsp;@click=<span class="string">&quot;clickH1&quot;</span><span>&gt;yes&lt;/el-button&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;el-button&nbsp;@click=<span class="string">&quot;clickH2&quot;</span><span>&gt;no&lt;/el-button&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span></li>
    <li><span>&lt;/Teleport&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>子组件：</p>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;script&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">export</span><span>&nbsp;</span><span class="keyword">default</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;<span class="string">'teleport'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props:&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*&nbsp;移动至哪个标签内，最好使用id&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to:&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;String,&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required:&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mounted()&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(<span class="keyword">this</span><span>.to).appendChild(</span><span class="keyword">this</span><span>.$el)&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroyed()&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(<span class="keyword">this</span><span>.to).removeChild(</span><span class="keyword">this</span><span>.$el)&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render()&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&lt;div&gt;{</span><span class="keyword">this</span><span>.$scopedSlots.</span><span class="keyword">default</span><span>()}&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=286" /> 
	  <id>http://blog.258754.cn/default.asp?id=286</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[一个帧动画--仿做]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-03-25T20:29:21+08:00</updated>
	  <published>2022-03-25T20:29:21+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;<img src="http://blog.258754.cn/download.asp?id=151" alt="" /></p>
<p><a href="http://258754.cn/2018/tyfp/test.html#" target="_blank"><span style="font-size: 24px;">点击此处查看DEMO</span></a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=283" /> 
	  <id>http://blog.258754.cn/default.asp?id=283</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[json-server+mock.js构建vue/小程序均可用的mock体系]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-03-03T11:32:49+08:00</updated>
	  <published>2022-03-03T11:32:49+08:00</published>
		  <summary type="html"><![CDATA[<p><span>
<div style="-en-clipboard:true;">前端开发经常在vue-cli、小程序中切换，所以要搭建一个独立的mock环境，json-server就很符合我的需要。它就是独立的node程序，使用时用单独的命令行启动。常见使用场景就是， json-server全局安装，每个项目需要的mock配置放在mock目录下，要使用时，只要用单独的命令行启动即可。</div>
<div style="-en-clipboard:true;">&nbsp;</div>
<div style="-en-clipboard:true;"><img src="http://blog.258754.cn/download.asp?id=149" alt="" /></div>
<div style="-en-clipboard:true;">&nbsp;</div>
<div style="-en-clipboard:true;">
<div>常用的启动命令如下：</div>
<div>json-server --watch --port 53000 ./mock/mock.js --middlewares ./mock/middlewares.js</div>
<div>&nbsp;</div>
<div>在vue中使用时，可以在package.json中做如下关联：</div>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="string">&quot;scripts&quot;</span><span>:&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="string">&quot;mock&quot;</span><span>:&nbsp;</span><span class="string">&quot;json-server&nbsp;--watch&nbsp;--port&nbsp;53000&nbsp;./mock/mock.js&nbsp;--middlewares&nbsp;./mock/middlewares.js&quot;</span><span>...&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>},&nbsp;&nbsp;</span></li>
</ol>
</div>
<div>
<div>这样就可以使用npm run mock来启动了。生成的接口类似这样：</div>
<div><img src="http://blog.258754.cn/download.asp?id=150" alt="" /></div>
<div><img src="http://blog.258754.cn/download.asp?id=149" alt="" /></div>
<div>mock.js是项目配置文件，我加了一段函数walkSync，用于遍历mock/api目录，这样复杂点的接口，直接在api目录下写个js文件就可以模拟了(支持mock.js语法)。</div>
<div>&nbsp;</div>
<div>还是以项目中的login.js为例：</div>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="comment">//login.js</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>module.exports&nbsp;=&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;token&quot;</span><span>:&nbsp;</span><span class="string">&quot;@guid()&quot;</span><span>,&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;user_info&quot;</span><span>:&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'uid|3333-9999'</span><span>:&nbsp;100,&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'organ'</span><span>:&nbsp;</span><span class="string">'@ctitle(2,&nbsp;3)研究所'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'name'</span><span>:&nbsp;</span><span class="string">'@cname'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'level|1'</span><span>:&nbsp;[0]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div>简单点的接口，比如那种只要返回个成功信息的接口，我就在mock.js中直接生成了，比如：</div>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;code&quot;</span><span>:&nbsp;200,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;data&quot;</span><span>:&nbsp;{flag:</span><span class="keyword">true</span><span>},&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;msg&quot;</span><span>:&nbsp;</span><span class="string">''</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div>&nbsp;json-server及mock.js的常规用法，网上文档很多，不赘述。</div>
</div>
</div>
</span></p>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=282" /> 
	  <id>http://blog.258754.cn/default.asp?id=282</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[lodash的get函数来判断对象深处的空值，太有用了！]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2022-01-21T09:33:19+08:00</updated>
	  <published>2022-01-21T09:33:19+08:00</published>
		  <summary type="html"><![CDATA[<div>例题，比如，有这样一个对象：</div>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>let&nbsp;arr&nbsp;=&nbsp;[&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;{id:1,tit:<span class="string">'ttt1'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{id:2,tit:<span class="string">'ttt2'</span><span>,bb:{&nbsp;cc:{dd:12}&nbsp;}},&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;{id:3,tit:<span class="string">'ttt3'</span><span>,bb:{}},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{id:5,tit:<span class="string">'ttt5'</span><span>,bb:{&nbsp;cc:{dd:</span><span class="string">''</span><span>}}},&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;{id:6,tit:<span class="string">'ttt6'</span><span>,bb:{&nbsp;cc:{dd:</span><span class="keyword">null</span><span>}}},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{id:7,tit:<span class="string">'ttt7'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li><span>]&nbsp;&nbsp;</span></li>
</ol>
</div>
<div>分支内的数据不太规范，有的分支多，有的少。现在要求：输出所有<span style="font-weight: bold;">含有dd属性</span>的一级分支（dd如为空值也要排除掉）</div>
<div>想想，怎么写?</div>
<div>&nbsp;</div>
<div>直接给答案吧，lodash大法好，清晰优美，而且是带变量的写法，不管有多深，一探到底：</div>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>_.each(arr,&nbsp;item=&gt;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;let&nbsp;flag&nbsp;=&nbsp;_.get(item,&nbsp;[&nbsp;<span class="string">'bb'</span><span>,&nbsp;</span><span class="string">'cc'</span><span>,&nbsp;</span><span class="string">'dd'</span><span>&nbsp;])&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">if</span><span>(flag){&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;console.log(item)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>})&nbsp;&nbsp;</span></li>
</ol>
</div>
<div>另外，_.isEmpty这个函数也很好用，用于空值判断，可以判断各种不同的空值，比如对象空，数组空，字符空。</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=281" /> 
	  <id>http://blog.258754.cn/default.asp?id=281</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[在contenteditable的div中的段落文字中获取光标位置，并在光标处插入字符]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2021-12-23T14:09:11+08:00</updated>
	  <published>2021-12-23T14:09:11+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;vue项目中的一个小需求如题，代码整理如下：</p>
<p><img src="http://blog.258754.cn/download.asp?id=148" alt="" /></p>
<div class="codeText">
<div class="codeHead">Javascri&#112;t代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;template&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&lt;el-container&nbsp;<span class="keyword">class</span><span>=</span><span class="string">&quot;about&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;el-main&gt;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;section&nbsp;<span class="keyword">class</span><span>=</span><span class="string">&quot;bgBox&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;在诗句上任意位置点击，再点击&ldquo;插入字符&rdquo;按钮，即可在光标处插入字符&lt;/h1&gt;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<span class="keyword">class</span><span>=</span><span class="string">&quot;h20&quot;</span><span>&gt;&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;el-button&nbsp;type=<span class="string">&quot;primary&quot;</span><span>&nbsp;@click=</span><span class="string">&quot;insertChar&quot;</span><span>&gt;插入字符&lt;/el-button&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<span class="keyword">class</span><span>=</span><span class="string">&quot;h30&quot;</span><span>&gt;&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<span class="keyword">class</span><span>=</span><span class="string">&quot;edit&quot;</span><span>&nbsp;contenteditable&gt;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v-<span class="keyword">for</span><span>=</span><span class="string">&quot;(item,&nbsp;index)&nbsp;in&nbsp;sentenses&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:key=<span class="string">&quot;item&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@click=<span class="string">&quot;getCurrentSent(index)&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{&nbsp;item&nbsp;}}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/section&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/el-main&gt;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&lt;/el-container&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/template&gt;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;script&gt;&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">const</span><span>&nbsp;insertStr&nbsp;=&nbsp;(soure,&nbsp;start,&nbsp;newStr)=&gt;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;soure.slice(0,&nbsp;start)&nbsp;+&nbsp;newStr&nbsp;+&nbsp;soure.slice(start);&nbsp;&nbsp;</span></span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">import</span><span>&nbsp;{&nbsp;getTableList,&nbsp;uploadFile&nbsp;}&nbsp;from&nbsp;</span><span class="string">&quot;@/api/system/api_user&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">export</span><span>&nbsp;</span><span class="keyword">default</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;data()&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_sent:&nbsp;<span class="keyword">null</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sentenses:&nbsp;[&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;凌波不过横塘路。但目送、芳尘去。&quot;</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;锦瑟华年谁与度。月桥花院，琐窗朱户。只有春知处。&nbsp;&quot;</span><span>,&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;飞云冉冉蘅皋暮。彩笔新题断肠句。若问闲情都几许。&quot;</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;一川烟草，满城风絮。梅子黄时雨。&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;computed:&nbsp;{&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;methods:&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;getCurrentSent(index)&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获取当前句子</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.current_sent&nbsp;=&nbsp;index;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;insertChar()&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获取getSelection对象，这个对象有很多内容，自己找到有用的数据</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;select&nbsp;=&nbsp;window.getSelection();&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;利用insertStr函数，在光标位置插入###三个字符</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;newSent&nbsp;=&nbsp;insertStr(&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.sentenses[</span><span class="keyword">this</span><span>.current_sent],&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select.anchorOffset&nbsp;-&nbsp;1,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;###&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;更新sentenses数组视图</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vue.set(<span class="keyword">this</span><span>.sentenses,&nbsp;</span><span class="keyword">this</span><span>.current_sent,&nbsp;newSent);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>};&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
    <li><span>&lt;style&nbsp;lang=<span class="string">&quot;scss&quot;</span><span>&gt;&lt;/style&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=280" /> 
	  <id>http://blog.258754.cn/default.asp?id=280</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[纯CSS实现文字水波动画]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://blog.258754.cn/</uri>
		 <email>dudu@258754.cn</email>
	  </author>
	  <category term="" scheme="http://blog.258754.cn/default.asp?cateID=12" label="前端研究" /> 
	  <updated>2021-10-11T21:34:53+08:00</updated>
	  <published>2021-10-11T21:34:53+08:00</published>
		  <summary type="html"><![CDATA[<p><iframe src="/2021/test_water/test_water.html" width="800" height="500"></iframe></p>
<p>点击打开：</p>
<p><a href="http://blog.258754.cn/2021/test_water/test_water.html" target="_blank">http://blog.258754.cn/2021/test_water/test_water.html</a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=277" /> 
	  <id>http://blog.258754.cn/default.asp?id=277</id>
  </entry>	
		
</feed>
