<?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>2023-03-15T09:20:23+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[本站内容将停止更新，老域名contactu.cn已经出售]]></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=9" label="服务报价" /> 
	  <updated>2023-03-15T09:20:23+08:00</updated>
	  <published>2023-03-15T09:20:23+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="font-size: 18px;">本博客是2005年建立的，功能性已经落后于时代。所以决定今年以后，<span style="color: rgb(255, 0, 0);">不再继续维护,只做资料留存使用</span>。</span></p>
<p><span style="font-size: 18px;">老域名contactu.cn已经出售，本站目录使用二级域名blog.258754.cn访问。</span></p>
<p><span style="font-size: 18px;">关心前端知识的新老朋友移步：</span></p>
<p><a href="https://www.zhihu.com/column/c_1040198727197237248" target="_blank">www.zhihu.com/column/c_1040198727197237248</a></p>
<p><span style="font-size: 26px;">（低水平前端）</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=291" /> 
	  <id>http://blog.258754.cn/default.asp?id=291</id>
  </entry>	
		
  <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[一个swiper双向移动的例子]]></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=3" label="我们的作品" /> 
	  <updated>2022-03-25T22:09:40+08:00</updated>
	  <published>2022-03-25T22:09:40+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="font-size: 26px;">&nbsp;</span><a href="http://258754.cn/2017/92005/" target="_blank"><span style="font-size: 26px;">点击查看DEMO</span></a></p>
<p><img src="http://blog.258754.cn/download.asp?id=153" alt="" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=285" /> 
	  <id>http://blog.258754.cn/default.asp?id=285</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=3" label="我们的作品" /> 
	  <updated>2022-03-25T21:28:56+08:00</updated>
	  <published>2022-03-25T21:28:56+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="font-size: 26px;">&nbsp;</span><a href="http://258754.cn/2017/turang/" target="_blank"><span style="font-size: 26px;">点击查看DEMO</span></a></p>
<p>&nbsp;</p>
<p><img src="http://blog.258754.cn/download.asp?id=152" alt="" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://blog.258754.cn/article.asp?id=284" /> 
	  <id>http://blog.258754.cn/default.asp?id=284</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>	
		
</feed>
