-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathatom.xml
509 lines (286 loc) · 140 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>前端开发者说</title>
<icon>https://www.gravatar.com/avatar/46ae1663601bb0d8d81023f699fae75b</icon>
<subtitle>记录开发的故事</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://huixisheng.github.io/"/>
<updated>2019-03-02T16:55:53.615Z</updated>
<id>http://huixisheng.github.io/</id>
<author>
<name>huixisheng</name>
<email>[email protected]</email>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>清空 git 的 commit 记录</title>
<link href="http://huixisheng.github.io/git-init-commit-log/"/>
<id>http://huixisheng.github.io/git-init-commit-log/</id>
<published>2019-03-02T16:29:23.000Z</published>
<updated>2019-03-02T16:55:53.615Z</updated>
<content type="html"><![CDATA[<p>有时候 git 提交不该提交的内容或者有些 log 过于多余,在我的博客提交记录含有草稿文件,先抹去这些提交记录。本文介绍如何初始化 git commit log。</p><p>是不是很干净呢?<br><img src="/images/git/git-commit-init.jpg" alt=""></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">$ git checkout --orphan empty-branch</span><br><span class="line">$ git branch</span><br><span class="line">$ git status</span><br><span class="line">$ git rm --cached -rf themes</span><br><span class="line">$ git diff</span><br><span class="line">$ git add .</span><br><span class="line">$ git commit -n -m <span class="string">'init git log'</span></span><br><span class="line">$ git checkout dev</span><br><span class="line">$ git checkout -b dev-bak</span><br><span class="line">$ git checkout empty-branch</span><br><span class="line">$ git status</span><br><span class="line">$ git branch -D dev</span><br><span class="line"><span class="comment"># 重命名分支</span></span><br><span class="line">$ git branch -m dev</span><br><span class="line">$ git <span class="built_in">log</span></span><br><span class="line">$ git push -f origin dev</span><br></pre></td></tr></table></figure><h2 id="Sublime-的列选择"><a href="#Sublime-的列选择" class="headerlink" title="Sublime 的列选择"></a>Sublime 的列选择</h2><p>以上内容来自 history,那么多行进行多行编辑呢?<br><code>Ctrl + Shift + Up</code>。当然相同内容可以使用 <code>Command + D</code></p><p>更多内容可以点击<a href="https://feliving.github.io/Sublime-Text-3-Documentation/column_selection.html" target="_blank" rel="noopener">列选择 - Sublime Text 3 文档</a></p><h2 id="VSCode-的列选择"><a href="#VSCode-的列选择" class="headerlink" title="VSCode 的列选择"></a>VSCode 的列选择</h2><p>option + 鼠标点选</p><p>option + shift + 鼠标拖动</p><p>同时也可以设置快捷键同 Sublime</p><p>更多内容可以点击<a href="https://www.zhihu.com/question/36723216" target="_blank" rel="noopener">怎样在 VSCode 中进行列选择? - 知乎</a></p>]]></content>
<summary type="html">
<p>有时候 git 提交不该提交的内容或者有些 log 过于多余,在我的博客提交记录含有草稿文件,先抹去这些提交记录。本文介绍如何初始化 git commit log。</p>
<p>是不是很干净呢?<br><img src="/images/git/git-commit-in
</summary>
<category term="git" scheme="http://huixisheng.github.io/tags/git/"/>
</entry>
<entry>
<title>centos如何升级nodejs</title>
<link href="http://huixisheng.github.io/centos-update-nodejs/"/>
<id>http://huixisheng.github.io/centos-update-nodejs/</id>
<published>2018-07-08T15:53:33.000Z</published>
<updated>2018-07-09T15:12:51.326Z</updated>
<content type="html"><![CDATA[<h2 id="更新日志"><a href="#更新日志" class="headerlink" title="更新日志"></a>更新日志</h2><p>curl –silent –location <a href="https://rpm.nodesource.com/setup_8.x" target="_blank" rel="noopener">https://rpm.nodesource.com/setup_8.x</a> | sudo bash -<br>yum -y install nodejs<br>记得删除老版本的npm node<br>rm /usr/local/bin/npm</p><p>yum remove nodesource-release<em> nodejs<br>yum clean all<br>rm -rf /var/cache/yum/</em><br>rm /etc/yum.repos.d/nodesource-el.repo<br>yum -y remove nodejs</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2>]]></content>
<summary type="html">
<h2 id="更新日志"><a href="#更新日志" class="headerlink" title="更新日志"></a>更新日志</h2><p>curl –silent –location <a href="https://rpm.nodesource.com/set
</summary>
</entry>
<entry>
<title>node如何设置process.env</title>
<link href="http://huixisheng.github.io/node-process-env/"/>
<id>http://huixisheng.github.io/node-process-env/</id>
<published>2018-07-08T15:40:59.000Z</published>
<updated>2018-07-09T15:12:55.659Z</updated>
<content type="html"><![CDATA[<p>在使用<a href="https://www.npmjs.com/package/debug" target="_blank" rel="noopener">debug</a>需要设置<code>$env:DEBUG = "*,-not_this"</code>执行相应的环境。</p><p><code>echo $DEBUG</code>输出相应的环境配置。Mac下是可以使用<code>DEBUG="*" node bin/before-parse.js</code>。</p><p><a href="https://github.com/visionmedia/debug/blob/master/src/node.js" target="_blank" rel="noopener">https://github.com/visionmedia/debug/blob/master/src/node.js</a></p><p>“dev-mac”: “ export NODE_ENV=development&& nodemon –harmony –use_strict index.js -w “,<br>“dev-win”: “ set NODE_ENV=development&& nodemon –harmony –use_strict index.js -w “,</p><p>windows 不太清楚,*NIX 系统下规则如下:<br>export NODE_ENV=production && node xxx.js 这样在当前命令行下后续的命令中读取 NODE_ENV,都会得到 production 值;<br>如果直接使用 NODE_ENV=production node xxx.js,则 NODE_ENV 的有效性仅限当前命令,不会对后续命令有影响。</p><p>可以使用<a href="https://www.npmjs.com/package/cross-env" target="_blank" rel="noopener"><code>cross-env</code></a></p><ul><li><a href="http://sorex.cnblogs.com/p/6200940.html" target="_blank" rel="noopener">http://sorex.cnblogs.com/p/6200940.html</a></li><li><a href="http://yijiebuyi.com/blog/1bfcf43248a873b39a3471901e764b68.html" target="_blank" rel="noopener">http://yijiebuyi.com/blog/1bfcf43248a873b39a3471901e764b68.html</a></li></ul>]]></content>
<summary type="html">
<p>在使用<a href="https://www.npmjs.com/package/debug" target="_blank" rel="noopener">debug</a>需要设置<code>$env:DEBUG = &quot;*,-not_this&quot;</
</summary>
<category term="nodejs" scheme="http://huixisheng.github.io/tags/nodejs/"/>
</entry>
<entry>
<title>docker-start</title>
<link href="http://huixisheng.github.io/docker-start/"/>
<id>http://huixisheng.github.io/docker-start/</id>
<published>2018-06-24T04:30:28.000Z</published>
<updated>2018-06-26T06:29:39.427Z</updated>
<content type="html"><![CDATA[<p>给一个正在运行的Docker容器动态添加Volume <a href="http://dockone.io/article/149" target="_blank" rel="noopener">http://dockone.io/article/149</a><br><a href="https://blog.csdn.net/dream_broken/article/details/52314993" target="_blank" rel="noopener">https://blog.csdn.net/dream_broken/article/details/52314993</a><br><a href="https://deepzz.com/post/the-docker-volumes-basic.html" target="_blank" rel="noopener">https://deepzz.com/post/the-docker-volumes-basic.html</a></p><p>docker machine 静态ip</p><ul><li><a href="https://github.com/fivestars/docker-machine-ipconfig" target="_blank" rel="noopener">https://github.com/fivestars/docker-machine-ipconfig</a></li></ul><p>docke固定ip <a href="https://github.com/johnnian/Blog/issues/16" target="_blank" rel="noopener">https://github.com/johnnian/Blog/issues/16</a></p><p>docker run -itd –network bridge –ip 192.168.3.88 springjk/webdev /bin/bash</p><p>docker run -itd –network host –ip 192.168.3.88 springjk/webdev /bin/bash</p><p>docker: Error response from daemon: user specified IP address is supported on user defined networks only.</p><p>larvel 环境</p><p>ssh登录 <code>docker exec -it de1aeb89e0f5 /bin/bash</code><br><a href="https://blog.csdn.net/qq_34021712/article/details/73379851" target="_blank" rel="noopener">https://blog.csdn.net/qq_34021712/article/details/73379851</a></p><p>docker镜像位置:</p><p>For someone who is using Docker toolbox (that uses docker-machine), the answers concerning boot2docker on Mac OS X is not valid. The docker-machine VM is called “default” and it exists in the /Users/<username>/.docker/machine/machines/default/ directory.</username></p><p>docker image是什么,存储在什么位置</p><p>ps -u $USER | grep Docker<br>docker镜像地址 /Users/{YourUserName}/Library/Containers/com.docker.docker/Data</p><p>下载地址: <a href="https://www.docker.com/community-edition#/download" target="_blank" rel="noopener">https://www.docker.com/community-edition#/download</a><br><a href="https://github.com/docker/kitematic/releases" target="_blank" rel="noopener">https://github.com/docker/kitematic/releases</a></p><p>rsync</p><p><a href="https://github.com/yeasy/docker_practice/blob/master/appendix/faq/README.md" target="_blank" rel="noopener">常见问题</a></p><h2 id="更新日志"><a href="#更新日志" class="headerlink" title="更新日志"></a>更新日志</h2><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2>]]></content>
<summary type="html">
<p>给一个正在运行的Docker容器动态添加Volume <a href="http://dockone.io/article/149" target="_blank" rel="noopener">http://dockone.io/article/149</a><br><a
</summary>
<category term="docker" scheme="http://huixisheng.github.io/tags/docker/"/>
</entry>
<entry>
<title>Mac配置终端梯子</title>
<link href="http://huixisheng.github.io/terminal-proxy-ladder/"/>
<id>http://huixisheng.github.io/terminal-proxy-ladder/</id>
<published>2018-06-23T11:57:53.000Z</published>
<updated>2019-02-15T07:14:14.827Z</updated>
<content type="html"><![CDATA[<p>最初的起因是由于<a href="https://gist.github.com/" target="_blank" rel="noopener">https://gist.github.com/</a>作为submodule的时候无法更新,于是想到终端配置访问该网站。最初以为<code>ShadowsocksX-NG</code>配置全局代理就可以,然后并无软用。</p><p>首先你得有相关的ss账号,可以自己部署,也可以购买相关的服务。</p><h2 id="ss服务"><a href="#ss服务" class="headerlink" title="ss服务"></a>ss服务</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> sublime ~/.zshrc</span></span><br></pre></td></tr></table></figure><p>相关的配置信息可以从这里获取</p><p><img src="/images/proxy/ShadowsocksX-NG-config.jpeg" alt=""></p><p>方法1:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">export http_proxy=http://127.0.0.1:1087</span><br><span class="line">export https_proxy=http://127.0.0.1:1087</span><br></pre></td></tr></table></figure><p>方法2:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export ALL_PROXY=socks5://127.0.0.1:1086</span><br></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> <span class="built_in">source</span> ~/.zshrc</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> curl www.google.com</span></span><br></pre></td></tr></table></figure><p>另外推荐<a href="https://httpie.org/" target="_blank" rel="noopener"><code>httpie</code></a>。在终端使用http命令,调试api接口</p><blockquote><p>HTTPie—aitch-tee-tee-pie—is a command line HTTP client with an intuitive UI, JSON support, syntax highlighting, wget-like downloads, plugins, and more.</p></blockquote><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ brew install httpie</span><br></pre></td></tr></table></figure><h2 id="ss服务推荐"><a href="#ss服务推荐" class="headerlink" title="ss服务推荐"></a>ss服务推荐</h2><ul><li>吾皇 <a href="http://kingfast.club/index.php/index/register/?yqi=6711" target="_blank" rel="noopener">http://kingfast.club/index.php/index/register/?yqi=6711</a> 可按月按年按流量付费,价格实惠,就光查阅资料够用</li><li><a href="https://www.vultr.com/?ref=7872193-4F" target="_blank" rel="noopener">https://www.vultr.com/?ref=7872193-4F</a> 需要自己搭建。参考教程<a href="https://github.com/Alvin9999/new-pac/wiki/%E8%87%AA%E5%BB%BAss%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%99%E7%A8%8B" target="_blank" rel="noopener">自建ss服务器教程 · Alvin9999/new-pac Wiki</a> <a href="https://www.diycode.cc/topics/738?from=groupmessage&isappinstalled=0" target="_blank" rel="noopener">轻松在 VPS 搭建 Shadowsocks 翻墙 ($5/月 支付宝) - DiyCode</a></li><li>linode</li><li><a href="https://www.yunti.website/" target="_blank" rel="noopener">https://www.yunti.website/</a></li><li><a href="https://pandafan.im/" target="_blank" rel="noopener">https://pandafan.im/</a> 同事用过</li><li><a href="https://duotai.love/" target="_blank" rel="noopener">多态</a> 体验过一个月,有多终端App</li><li><a href="https://monocloud.me/" target="_blank" rel="noopener">https://monocloud.me/</a> 借同事的账号用过,速度还不错</li><li>~鱼摆摆~</li></ul><h3 id="相关教程"><a href="#相关教程" class="headerlink" title="相关教程"></a>相关教程</h3><ul><li><a href="https://github.com/Alvin9999/new-pac/wiki/自建ss服务器教程" target="_blank" rel="noopener">https://github.com/Alvin9999/new-pac/wiki/自建ss服务器教程</a></li><li><a href="https://www.diycode.cc/topics/738?from=groupmessage&isappinstalled=0" target="_blank" rel="noopener">https://www.diycode.cc/topics/738?from=groupmessage&isappinstalled=0</a></li></ul><h2 id="客户端"><a href="#客户端" class="headerlink" title="客户端"></a>客户端</h2><ul><li>wingy</li><li>GoAgentX</li><li>ShadowsocksX / ShadowsocksX-NG-R8</li></ul><h2 id="其他相关的软件"><a href="#其他相关的软件" class="headerlink" title="其他相关的软件"></a>其他相关的软件</h2><blockquote><p>以下并未实践过,看到关键词做个简单的记录</p></blockquote><ul><li>Proxifier</li><li>privoxy <a href="http://blog.devtang.com/2012/12/08/use-privoxy/" target="_blank" rel="noopener">http://blog.devtang.com/2012/12/08/use-privoxy/</a></li><li>proxychains-ng</li></ul>]]></content>
<summary type="html">
<p>最初的起因是由于<a href="https://gist.github.com/" target="_blank" rel="noopener">https://gist.github.com/</a>作为submodule的时候无法更新,于是想到终端配置访问该网站。最初
</summary>
<category term="Mac" scheme="http://huixisheng.github.io/tags/Mac/"/>
<category term="工具" scheme="http://huixisheng.github.io/tags/%E5%B7%A5%E5%85%B7/"/>
</entry>
<entry>
<title>使用wepy开发小程序总结</title>
<link href="http://huixisheng.github.io/wepy-summary/"/>
<id>http://huixisheng.github.io/wepy-summary/</id>
<published>2018-04-07T02:55:35.000Z</published>
<updated>2018-04-17T08:47:11.267Z</updated>
<content type="html"><![CDATA[<p>使用<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>开发小程序效率提升了很多,相比使用小程序原生框架开发,开发体验提升了好几个等级。如果是从<a href="https://github.com/vuejs/vue" target="_blank" rel="noopener">Vue</a>过来的,可能会对<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>部分语法不熟悉,导致自己掉进想当然(Vue习惯的写法)的坑里,所以还是要熟读<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>的<a href="https://tencent.github.io/wepy/document.html#/" target="_blank" rel="noopener">文档</a>,理解一些新的概念。我个人觉得<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>是类Vue。<a href="https://github.com/Meituan-Dianping/mpvue" target="_blank" rel="noopener">mpvue</a>跟Vue更加亲一些。当然还是要感谢作者<a href="https://github.com/Gcaufy" target="_blank" rel="noopener">@Gcaufy</a>提供这么好的框架,这也是为何个人项目会收入到公司项目的原因吧。</p><a id="more"></a><blockquote><p>WePY 是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。框架的细节优化,Promise,Async Functions的引入都是为了能让开发小程序项目变得更加简单,高效。</p></blockquote><h2 id="环境配置"><a href="#环境配置" class="headerlink" title="环境配置"></a>环境配置</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ npm install wepy-cli -g</span><br><span class="line">$ wepy init standard</span><br><span class="line">$ npm install</span><br><span class="line">$ wepy build --watch</span><br></pre></td></tr></table></figure><p>使用微信开发者工具导入项目,<strong>关闭ES6 转 ES5</strong></p><h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><p>微信小程序 button 去除 border</p><ul><li><a href="https://blog.csdn.net/Wu_shuxuan/article/details/78209125" target="_blank" rel="noopener">https://blog.csdn.net/Wu_shuxuan/article/details/78209125</a></li><li><a href="https://www.cnblogs.com/miu-key/p/7156070.html" target="_blank" rel="noopener">https://www.cnblogs.com/miu-key/p/7156070.html</a></li><li><a href="https://www.jianshu.com/p/2e5ce95c213e" target="_blank" rel="noopener">https://www.jianshu.com/p/2e5ce95c213e</a></li></ul><p>wepy-plugin-image</p><p>无法转换<br> // function createDemoComponents(prefix, component, lenght) {<br> // const components = {}<br> // for (let i = 0; i < lenght; i++) {<br> // const key = prefix + i<br> // components[key] = component<br> // }<br> // return components<br> // }</p><p> // const demoComponents = createDemoComponents(‘btn’, DoButton, 10)<br> // console.log(demoComponents)</p><p>// 组件无效</p><view class=""><slot></slot></view><p> 1:1 error Resolve error: plugins.forEach is not a function import/no-unresolved<br> 1:1 error Resolve error: plugins.forEach is not a function import/no-extraneous-dependencies<br> 1:1 error Resolve error: plugins.forEach is not a function import/no-duplicates<br> 1:1 error Resolve error: plugins.forEach is not a function import/extensions<br> 1:1 error Resolve error: plugins.forEach is not a function import/no-named-as-default<br> 1:1 error Resolve error: plugins.forEach is not a function import/no-named-as-default-member<br> 1:19 error Unable to resolve path to module ‘utils/service’ import/no-unresolved</p><p> repeat<br> 不支持添加 @tap</p><p> wepy input 数据绑定</p><ul><li><a href="https://github.com/Tencent/wepy/issues/321" target="_blank" rel="noopener">https://github.com/Tencent/wepy/issues/321</a></li></ul><p>less import 路径 alias<br><a href="https://www.google.com/search?q=wepy+less+import&oq=wepy+less+import&aqs=chrome..69i57.628j0j4&sourceid=chrome&ie=UTF-8" target="_blank" rel="noopener">https://www.google.com/search?q=wepy+less+import&oq=wepy+less+import&aqs=chrome..69i57.628j0j4&sourceid=chrome&ie=UTF-8</a></p><ol><li>小程序 media 支持</li><li>image mode background-size</li><li>wepy 图片上传资源服务器</li><li>base64支持</li><li>twoWay: true ?双向绑定?</li></ol><p>小程序 canvas如何隐藏 display: none; 可行</p><h2 id="周边工具"><a href="#周边工具" class="headerlink" title="周边工具"></a>周边工具</h2><ul><li><a href="https://github.com/wdfe/weweb" target="_blank" rel="noopener">https://github.com/wdfe/weweb</a></li><li><a href="https://chemzqm.github.io/wept/#/home?id=%E7%AE%80%E4%BB%8B" target="_blank" rel="noopener">https://chemzqm.github.io/wept/#/home?id=%E7%AE%80%E4%BB%8B</a><h2 id="方案对比"><a href="#方案对比" class="headerlink" title="方案对比"></a>方案对比</h2></li></ul><h3 id="dowe"><a href="#dowe" class="headerlink" title="dowe"></a>dowe</h3><h3 id="vue2mina"><a href="#vue2mina" class="headerlink" title="vue2mina"></a>vue2mina</h3><h3 id="labrador"><a href="#labrador" class="headerlink" title="labrador"></a>labrador</h3><h2 id="资源"><a href="#资源" class="headerlink" title="资源"></a>资源</h2><ul><li><a href="https://github.com/aben1188/awesome-wepy" target="_blank" rel="noopener">awesome-wepy</a></li><li><a href="https://github.com/Meituan-Dianping/mpvue" target="_blank" rel="noopener">mpvue</a></li></ul><h2 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h2><ul><li><a href="https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html" target="_blank" rel="noopener">小程序官方文档</a></li><li><a href="https://tencent.github.io/wepy/document.html#/" target="_blank" rel="noopener">微信小程序组件化开发框架WePY官方文档</a></li></ul>]]></content>
<summary type="html">
<p>使用<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>开发小程序效率提升了很多,相比使用小程序原生框架开发,开发体验提升了好几个等级。如果是从<a href="https://github.com/vuejs/vue" target="_blank" rel="noopener">Vue</a>过来的,可能会对<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>部分语法不熟悉,导致自己掉进想当然(Vue习惯的写法)的坑里,所以还是要熟读<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>的<a href="https://tencent.github.io/wepy/document.html#/" target="_blank" rel="noopener">文档</a>,理解一些新的概念。我个人觉得<a href="https://tencent.github.io/wepy/" target="_blank" rel="noopener">wepy</a>是类Vue。<a href="https://github.com/Meituan-Dianping/mpvue" target="_blank" rel="noopener">mpvue</a>跟Vue更加亲一些。当然还是要感谢作者<a href="https://github.com/Gcaufy" target="_blank" rel="noopener">@Gcaufy</a>提供这么好的框架,这也是为何个人项目会收入到公司项目的原因吧。</p>
</summary>
<category term="wepy" scheme="http://huixisheng.github.io/tags/wepy/"/>
<category term="小程序" scheme="http://huixisheng.github.io/tags/%E5%B0%8F%E7%A8%8B%E5%BA%8F/"/>
</entry>
<entry>
<title>利用trivas自动部署hexo的blog</title>
<link href="http://huixisheng.github.io/travis-auto-publish-blog/"/>
<id>http://huixisheng.github.io/travis-auto-publish-blog/</id>
<published>2018-04-06T06:41:16.000Z</published>
<updated>2018-04-06T09:21:12.292Z</updated>
<content type="html"><![CDATA[<p>是什么原因让你折腾<a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>?是懒!懒!懒!每次提交代码后台又要手动输一次<code>hexo d -g</code>,真心觉得麻烦,作为程序猿,就应该学会偷懒,可以少输几次相同的命令,心情甚是愉悦。</p><p>当然之前也有接触过<a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>,比如<a href="https://github.com/huixisheng/x-ci" target="_blank" rel="noopener">x-ci</a><a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>的简单使用,<a href="https://github.com/cosmeapp/cosmeapp.github.com/blob/dev/.travis.yml" target="_blank" rel="noopener">团队博客的部署</a>。</p><a id="more"></a><h2 id="相关步骤记录"><a href="#相关步骤记录" class="headerlink" title="相关步骤记录"></a>相关步骤记录</h2><h3 id="travis-ci-添加项目"><a href="#travis-ci-添加项目" class="headerlink" title="travis-ci 添加项目"></a>travis-ci 添加项目</h3><p>使用github账号登录<a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a> 并添加相关的项目</p><h3 id="GitHub生成Personal-Access-Token"><a href="#GitHub生成Personal-Access-Token" class="headerlink" title="GitHub生成Personal Access Token"></a>GitHub生成Personal Access Token</h3><p><a href="https://github.com/settings/profile" target="_blank" rel="noopener">settings</a>-><a href="https://github.com/settings/developers" target="_blank" rel="noopener">Developer settings</a>-><a href="https://github.com/settings/tokens" target="_blank" rel="noopener">Personal access tokens</a>->点击<a href="https://github.com/settings/tokens/new" target="_blank" rel="noopener">Generate new token</a></p><p>生成完后拷贝记录下来,后面<code>travis</code>登录需要用到。刷新页面后台<code>token</code>将不可见,只能重新生成。</p><h3 id="配置-travis-yml"><a href="#配置-travis-yml" class="headerlink" title="配置.travis.yml"></a>配置.travis.yml</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">➜ gem install travis --no-rdoc --no-ri</span><br><span class="line">➜ huixisheng.github.com git:(dev) ✗ travis login --github-token [上一步记录的token]</span><br><span class="line">Successfully logged in as huixisheng!</span><br><span class="line">➜ huixisheng.github.com git:(dev) ✗ travis encrypt-file ~/.ssh/github --add</span><br><span class="line">➜ huixisheng.github.com git:(dev) ✗ travis encrypt-file ~/.ssh/github-ci --add</span><br><span class="line">encrypting /Users/huixisheng/.ssh/github-ci for huixisheng/huixisheng.github.com</span><br><span class="line">storing result as github-ci.enc</span><br><span class="line">storing secure env variables for decryption</span><br><span class="line"></span><br><span class="line">Make sure to add github-ci.enc to the git repository.</span><br><span class="line">Make sure not to add /Users/huixisheng/.ssh/github-ci to the git repository.</span><br><span class="line">Commit all changes to your .travis.yml.</span><br></pre></td></tr></table></figure><blockquote><p>如果安装travis无反应,可以更新<code>gem sources --add https://gems.ruby-china.org/</code>国内镜像源</p></blockquote><p>然后看下<code>.travis.yml</code>是不是增加了:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">- openssl aes-256-cbc -K $encrypted_11753ec45e06_key -iv $encrypted_11753ec45e06_iv</span><br><span class="line"> -in github-ci.enc -out ~\/.ssh/github-ci -d</span><br><span class="line">``` 目录下生成`github-ci.enc`。</span><br><span class="line"></span><br><span class="line">## 其他方法 ##</span><br><span class="line"></span><br><span class="line">主要原理是通过 `https://<token 刚才要记录的>@github.com/owner/repo.git</span><br><span class="line">`去提交构建生成的内容。</span><br><span class="line"></span><br><span class="line">相关阅读</span><br><span class="line">- [Authenticate with GitHub using token</span><br><span class="line">](https://stackoverflow.com/questions/18935539/authenticate-with-github-using-token)</span><br><span class="line">- https://developer.github.com/v3/auth/#working-with-two-factor-authentication</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">## 总结 ##</span><br><span class="line"></span><br><span class="line">网上确实有很多的教程,但是如果不去实际操作下,那个教程永远是别人的,还有就是根据相同的教程,别人可以配置成功,而我们不一定可以配置成功,比如存在电脑环境不一样。nodejs版本不一样等等。有可能你会碰到意想不到的问题。只有自己真正折腾过了,才知道坑有多深,城市套路有多少。</span><br><span class="line"></span><br><span class="line">## 碰到问题 ##</span><br></pre></td></tr></table></figure><p>travis No such file or directory:bss_file.c:398:fopen(‘~/.ssh/id_rsa’,’w’)<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">`-out ~\/.ssh/id_rsa -d` -> `-out ~/.ssh/id_rsa -d`</span><br><span class="line">- https://github.com/travis-ci/travis.rb/issues/555</span><br></pre></td></tr></table></figure></p><p>remote: Invalid username or password.<br>fatal: Authentication failed for ‘<a href="https://github.com/huixisheng/huixisheng.github.com.git/'" target="_blank" rel="noopener">https://github.com/huixisheng/huixisheng.github.com.git/'</a><br>FATAL Something’s wrong. Maybe you can find the solution here: <a href="http://hexo.io/docs/troubleshooting.html" target="_blank" rel="noopener">http://hexo.io/docs/troubleshooting.html</a><br>Error: remote: Invalid username or password.<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">在`.travis.yml`添加`ssh -T [email protected]`测试,发现ssh的配置是没问题的。</span><br></pre></td></tr></table></figure></p><p>0.59s$ ssh -T <a href="mailto:[email protected]" target="_blank" rel="noopener">[email protected]</a><br>Warning: Permanently added the RSA host key for IP address ‘192.30.253.112’ to the list of known hosts.<br>Hi cosmeapp/cosmeapp.github.com! You’ve successfully authenticated, but GitHub does not provide shell access.<br>The command “ssh -T <a href="mailto:[email protected]" target="_blank" rel="noopener">[email protected]</a>“ failed and exited with 1 during .<br><code>`</code><br>再次添加<code>travis-ci</code>居然成功了。</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="http://lotabout.me/2016/Hexo-Auto-Deploy-to-Github/" target="_blank" rel="noopener">Hexo 自动部署到 Github</a></li><li><a href="https://segmentfault.com/a/1190000009054888" target="_blank" rel="noopener">使用 Travis 自动部署 Hexo 到 Github 与 自己的服务器</a></li><li><a href="http://www.itfanr.cc/2017/08/09/using-travis-ci-automatic-deploy-hexo-blogs/" target="_blank" rel="noopener">使用Travis CI自动部署Hexo博客</a></li><li><a href="https://cosmeapp.github.io/2017/09/18/travis-ci-auto-build/" target="_blank" rel="noopener">Travis CI 系列:自动化部署博客</a></li></ul>]]></content>
<summary type="html">
<p>是什么原因让你折腾<a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>?是懒!懒!懒!每次提交代码后台又要手动输一次<code>hexo d -g</code>,真心觉得麻烦,作为程序猿,就应该学会偷懒,可以少输几次相同的命令,心情甚是愉悦。</p>
<p>当然之前也有接触过<a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>,比如<a href="https://github.com/huixisheng/x-ci" target="_blank" rel="noopener">x-ci</a><a href="https://travis-ci.org/" target="_blank" rel="noopener">travis</a>的简单使用,<a href="https://github.com/cosmeapp/cosmeapp.github.com/blob/dev/.travis.yml" target="_blank" rel="noopener">团队博客的部署</a>。</p>
</summary>
<category term="trivas" scheme="http://huixisheng.github.io/tags/trivas/"/>
<category term="hexo" scheme="http://huixisheng.github.io/tags/hexo/"/>
</entry>
<entry>
<title>App呼起京东和淘宝指定的页面</title>
<link href="http://huixisheng.github.io/callapp-taobao-jd/"/>
<id>http://huixisheng.github.io/callapp-taobao-jd/</id>
<published>2018-04-01T15:45:06.000Z</published>
<updated>2018-04-06T06:04:58.283Z</updated>
<content type="html"><![CDATA[<p>需求: 需要在自己的App直接打开京东和淘宝指定的页面。<br><a id="more"></a></p><p>对于ios,首先想到的是根据页面的js找到对应的universal link。ios9以下和安卓就用schema跳转。</p><p>对于京东的链接 <a href="https://pro.m.jd.com/mall/active/3pR34myNmV7cXiR4DjzUSRuu5hqA/index.html?ad_od=1&utm_source=kong&utm_medium=zssc&utm_campaign=t_1000210271_100854&utm_term=ea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854&jd_pop=ea62df13-dc13-44c8-ae00-59b5683ec8f2&abt=0" target="_blank" rel="noopener">https://pro.m.jd.com/mall/active/3pR34myNmV7cXiR4DjzUSRuu5hqA/index.html?ad_od=1&utm_source=kong&utm_medium=zssc&utm_campaign=t_1000210271_100854&utm_term=ea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854&jd_pop=ea62df13-dc13-44c8-ae00-59b5683ec8f2&abt=0</a> 分析源码<a href="https://st.360buyimg.com/common/commonH_B/js/m_common_merge2.1.js" target="_blank" rel="noopener">https://st.360buyimg.com/common/commonH_B/js/m_common_merge2.1.js</a> 网上还找到这个<a href="http://st.360buyimg.com/m/js/2014/module/plugIn/downloadAppPlugIn_imk2.js?v=jd201612271841" target="_blank" rel="noopener">版本的js</a></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">aE(e.openAppBtnId, "click", function() {</span><br><span class="line"> aw("0");</span><br><span class="line"> var aU = this.getAttribute("id");</span><br><span class="line"> var aR = aI[aU];</span><br><span class="line"> // 添加断点,跟踪代码</span><br><span class="line"> if (!i) {</span><br><span class="line"> var aT = document.createElement("iframe");</span><br><span class="line"> aT.id = aj;</span><br><span class="line"> document.body.appendChild(aT);</span><br><span class="line"> document.getElementById(aj).style.display = "none";</span><br><span class="line"> document.getElementById(aj).style.width = "0px";</span><br><span class="line"> document.getElementById(aj).style.height = "0px";</span><br><span class="line"> i = true</span><br><span class="line"> }</span><br><span class="line"> if (aR.openAppCallback) {</span><br><span class="line"> var aS = aR.openAppCallbackSource ? aR.openAppCallbackSource : null;</span><br><span class="line"> aR.openAppCallback.call(this, aS)</span><br><span class="line"> }</span><br><span class="line"> f(aR, "appDownOpenIntervalTime");</span><br><span class="line"> aH(aR);</span><br><span class="line"> if (l.isUseUniversalLinks && !aR.noJdApp) {</span><br><span class="line"> az(aR)</span><br><span class="line"> } else {</span><br><span class="line"> af(aR)</span><br><span class="line"> }</span><br><span class="line">})</span><br></pre></td></tr></table></figure><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">function az(aS) {</span><br><span class="line"> var aV = aQ(aS, true);</span><br><span class="line"> var aT = aS.universalLinksUrl + "/ul/ul.action?" + aV;</span><br><span class="line"> // 可以判定aT应该就是universal links</span><br><span class="line"> if (navigator.userAgent.indexOf("baidubrowser") >= 0) {</span><br><span class="line"> window.location.href = aT</span><br><span class="line"> } else {</span><br><span class="line"> var aR = document.createElement("a");</span><br><span class="line"> aR.setAttribute("href", aT);</span><br><span class="line"> aR.style.display = "none";</span><br><span class="line"> document.body.appendChild(aR);</span><br><span class="line"> var aU = document.createEvent("HTMLEvents");</span><br><span class="line"> aU.initEvent("click", !1, !1);</span><br><span class="line"> aR.dispatchEvent(aU)</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>测试发现根据代码获得universal link只能打开京东的首页<code>https://linkst.m.jd.com/ul/ul.action?openApp.jdMobile://virtual?params={"category":"jump","des":"m","sourceValue":"babel-act","sourceType":"babel","url":"https%3A%2F%2Fpro.m.jd.com%2Fmall%2Factive%2F3pR34myNmV7cXiR4DjzUSRuu5hqA%2Findex.html%3Fad_od%3D1%26utm_source%3Dkong%26utm_medium%3Dzssc%26utm_campaign%3Dt_1000210271_100854%26utm_term%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854%26jd_pop%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2%26abt%3D0","M_sourceFrom":"H5_UL","msf_type":"click","NoJumpDownLoadPage":false,"downAppIos":"https%3A%2F%2Fst.360buyimg.com%2Fcommon%2FdownLoadCommon%2FdownLoadAppIOSMPage.html","locationHref":"https%3A%2F%2Fpro.m.jd.com%2Fmall%2Factive%2F3pR34myNmV7cXiR4DjzUSRuu5hqA%2Findex.html%3Fad_od%3D1%26utm_source%3Dkong%26utm_medium%3Dzssc%26utm_campaign%3Dt_1000210271_100854%26utm_term%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854%26jd_pop%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2%26abt%3D0","m_param":{"m_source":"0","event_series":{},"jda":"122270672.2074471510.1521534916.1522766295.1522991099.5","usc":"kong","ucp":"t_1000210271_100854","umd":"zssc","utr":"ea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854","jdv":"122270672%7Ckong%7Ct_1000210271_100854%7Czssc%7Cea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854%7C1522991529755","ref":"https%3A%2F%2Fpro.m.jd.com%2Fmall%2Factive%2F3pR34myNmV7cXiR4DjzUSRuu5hqA%2Findex.html%3Fad_od%3D1%26utm_source%3Dkong%26utm_medium%3Dzssc%26utm_campaign%3Dt_1000210271_100854%26utm_term%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854%26jd_pop%3Dea62df13-dc13-44c8-ae00-59b5683ec8f2%26abt%3D0","psn":"2074471510|5","psq":14,"unpl":"V2_ZzNsbRBVFkAiXE9dZx5dVTUfFwlEUV9FdwFHSClNDgFkURpaF1MXQWlJKFRzEVQZJkB8XUNRRAklTShUehhVAWIzEVxCXl8UdxREVWoaXw5mBRldRGdDJXUJR1V4GV0GYQMibXJXQSV0OEVVfRxZA2cHElxyURNHdV1PBC8FCVJvAw5YRABBCSYIE1JnGQhWbwQRW0FQQ0ImOEBS","pc_source":"","mba_muid":"2074471510","mba_sid":"15229910996761532999810513868","mt_xid":"","mt_subsite":""},"SE":{"mt_subsite":"","__jdv":"122270672%7Ckong%7Ct_1000210271_100854%7Czssc%7Cea62df13-dc13-44c8-ae00-59b5683ec8f2-p_1999-pr_1076-at_100854%7C1522991529755","unpl":"V2_ZzNsbRBVFkAiXE9dZx5dVTUfFwlEUV9FdwFHSClNDgFkURpaF1MXQWlJKFRzEVQZJkB8XUNRRAklTShUehhVAWIzEVxCXl8UdxREVWoaXw5mBRldRGdDJXUJR1V4GV0GYQMibXJXQSV0OEVVfRxZA2cHElxyURNHdV1PBC8FCVJvAw5YRABBCSYIE1JnGQhWbwQRW0FQQ0ImOEBS","__jda":"122270672.2074471510.1521534916.1522766295.1522991099.5"}}</code></p><p>初步怀疑:</p><ul><li>是不是参数没有encode</li><li>schema的大小写是不是有问题</li></ul><p>猜测的结论</p><ul><li>京东和微信的关系,京东的schema是白名单,打开App没有限制,而对universal link 的测试不充分,导致相应的链接有问题</li></ul><p>通过测试其他的app打开京东的页面,首次有弹框是否打开京东的提示,确认后下次就没有,然而美妆心得的App就是无反应。</p><blockquote><p>近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。 来自 <a href="https://www.jianshu.com/p/a8cce94d508e" target="_blank" rel="noopener">https://www.jianshu.com/p/a8cce94d508e</a></p></blockquote><p>对于淘宝的链接<a href="https://h5.m.taobao.com/awp/core/detail.htm?id=528294025825&scm=1007.12144.81309.242610_242610&pvid=2f68b234-58a1-47de-aa7b-266c7abe0b48&spm=a217e.7680114.75b100109.d5n0" target="_blank" rel="noopener">https://h5.m.taobao.com/awp/core/detail.htm?id=528294025825&scm=1007.12144.81309.242610_242610&pvid=2f68b234-58a1-47de-aa7b-266c7abe0b48&spm=a217e.7680114.75b100109.d5n0</a></p><p>定位<a href="https://g.alicdn.com/mtb/lib-smb-wake/0.0.37/wake.js" target="_blank" rel="noopener">代码</a><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">e.exports = function(e) {</span><br><span class="line">var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};</span><br><span class="line">if ("TB" != n.aliapp.appname && "TB-PD" != n.aliapp.appname) {</span><br><span class="line"> t.point = t.point || {},</span><br><span class="line"> t.point.callType = t.callType;</span><br><span class="line"> var a = (0,</span><br><span class="line"> r.default)(e, t)</span><br><span class="line"> , s = {</span><br><span class="line"> package: "com.taobao.taobao"</span><br><span class="line"> };</span><br><span class="line"> switch (t.callType) {</span><br><span class="line"> case "universalLink":</span><br><span class="line"> if (n.os.isIPhone && n.os.version.gte("9.0")) {</span><br><span class="line"> var l = (0,</span><br><span class="line"> o.appendParams)(t.universalLink || "//b.mashort.cn/ulk/taobao", {</span><br><span class="line"> smburl: encodeURIComponent(a)</span><br><span class="line"> });</span><br><span class="line"> t.redirectUrl && (l = (0,</span><br><span class="line"> o.appendParams)(l, {</span><br><span class="line"> redirectUrl: encodeURIComponent(t.redirectUrl)</span><br><span class="line"> })),</span><br><span class="line"> (0,</span><br><span class="line"> i.default)(l, "universalLink")</span><br><span class="line"> } else</span><br><span class="line"> (0,</span><br><span class="line"> i.default)(a, "scheme", s);</span><br><span class="line"> break;</span><br></pre></td></tr></table></figure></p><p>获得的<a href="//b.mashort.cn/ulk/taobao?smburl=tbopen%3A%2F%2Fm.taobao.com%2Ftbopen%2Findex.html%3Faction%3Dali.open.nav%26module%3Dh5%26bootImage%3D0%26source%3Dsb%26appkey%3D24585258%26smbSid%3DSCNgEI25%252FmcCAXAKKjvEkBJ5_1522993546044%26rbbt%3Dbc.mainDetail.6.2.7c9ce02c41d449c1b84a71b4eb8c2f63%26params%3D%257B%2522fingerCode%2522%253A%2522273be573e1389f93c81ec4a9a63c9a54%2522%252C%2522fingerCostTime%2522%253A%2522252%2522%252C%2522mtopCostTime%2522%253A%2522251%2522%252C%2522_t%2522%253A%25221522994027375%2522%257D%26point%3D%257B%2522from%2522%253A%2522h5%2522%252C%2522h5_uid%2522%253A%2522SCNgEI25%252FmcCAXAKKjvEkBJ5%2522%252C%2522ap_uri%2522%253A%2522sb_redirect_manual%2522%252C%2522page%2522%253A%2522mainDetail%2522%252C%2522callType%2522%253A%2522universalLink%2522%257D%26h5Url%3Dhttps%253A%252F%252Fh5.m.taobao.com%252Fawp%252Fcore%252Fdetail.htm%253Fid%253D528294025825%2526scm%253D1007.12144.81309.242610_242610%2526pvid%253D2f68b234-58a1-47de-aa7b-266c7abe0b48%2526spm%253Da217e.7680114.75b100109.d5n0%2526point%253D%25257B%252522from%252522%25253A%252522h5%252522%25252C%252522h5_uid%252522%25253A%252522SCNgEI25%25252FmcCAXAKKjvEkBJ5%252522%25252C%252522ap_uri%252522%25253A%252522sb_redirect_manual%252522%25252C%252522page%252522%25253A%252522mainDetail%252522%25252C%252522callType%252522%25253A%252522universalLink%252522%25257D">universal link</a>。测试发现其实<a href="http://m.tb.cn/h.WE82pie" target="_blank" rel="noopener">分享的淘宝口令http://m.tb.cn/h.WE82pie</a>本身就是universal link</p><h2 id="扩展阅读"><a href="#扩展阅读" class="headerlink" title="扩展阅读"></a>扩展阅读</h2><ul><li><a href="https://sdk.cn/news/7019" target="_blank" rel="noopener">MobLink网页跳转app指定界面技术简介之 URL Scheme</a></li><li><a href="https://github.com/eleme/mobilists/blob/master/source/_posts/%E7%AA%81%E7%A0%B4%E5%BE%AE%E4%BF%A1%E8%B7%B3%E8%BD%AC%E9%99%90%E5%88%B6%EF%BC%8DUniversal-Links%E9%82%A3%E4%BA%9B%E5%9D%91.md" target="_blank" rel="noopener">突破微信跳转限制-Universal-Links那些坑</a></li><li><a href="https://futu.im/posts/h5-callup-native/" target="_blank" rel="noopener">关于通过H5页面唤起Native客户端的介绍</a></li><li><a href="http://www.magicwindow.cn/doc/universal-link-info.html" target="_blank" rel="noopener">Universal links 介绍</a></li></ul><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="https://github.com/AlanZhang001/H5CallUpNative" target="_blank" rel="noopener">H5端唤醒移动客户端程序</a></li><li><a href="https://segmentfault.com/a/1190000006929722" target="_blank" rel="noopener">京东在html5页面中打开本地app的解决方案</a></li></ul>]]></content>
<summary type="html">
<p>需求: 需要在自己的App直接打开京东和淘宝指定的页面。<br>
</summary>
<category term="schema" scheme="http://huixisheng.github.io/tags/schema/"/>
<category term="App" scheme="http://huixisheng.github.io/tags/App/"/>
</entry>
<entry>
<title>前端精彩文章收集</title>
<link href="http://huixisheng.github.io/front-end-articles-collected/"/>
<id>http://huixisheng.github.io/front-end-articles-collected/</id>
<published>2018-04-01T12:40:26.000Z</published>
<updated>2018-07-16T01:06:13.394Z</updated>
<content type="html"><![CDATA[<p>本文收集整理优秀的前端资源。方便随时查阅。</p><h2 id="目录结构"><a href="#目录结构" class="headerlink" title="目录结构"></a>目录结构</h2><!-- START doctoc generated TOC please keep comment here to allow auto update --><!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --><ul><li><a href="#web%E5%89%8D%E7%AB%AF%E5%B8%B8%E7%94%A8%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C">Web前端常用参考手册</a></li><li><a href="#%E4%BC%98%E7%A7%80%E7%9A%84%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E5%8D%9A%E5%AE%A2">优秀的前端技术博客</a></li><li><a href="#css3%E7%B3%BB%E5%88%97">CSS3系列</a></li><li><a href="#web%E5%89%8D%E7%AB%AF%E9%97%AE%E7%AD%94%E7%A4%BE%E5%8C%BA">Web前端问答社区</a></li><li><a href="#web%E5%89%8D%E7%AB%AF%E7%BD%91%E5%9D%80%E5%AF%BC%E8%88%AA">Web前端网址导航</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6%E7%B3%BB%E5%88%97">前端框架系列</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E7%B3%BB%E5%88%97">前端性能系列</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E8%A7%84%E8%8C%83%E7%B3%BB%E5%88%97">前端规范系列</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E5%85%BC%E5%AE%B9%E6%80%A7%E7%B3%BB%E5%88%97">前端兼容性系列</a></li><li><a href="#css%E7%B3%BB%E5%88%97">CSS系列</a></li><li><a href="#javascript%E7%B3%BB%E5%88%97">JavaScript系列</a></li><li><a href="#%E4%B8%8D%E5%8F%AF%E9%94%99%E8%BF%87%E7%9A%84%E7%BD%91%E7%AB%99%E6%8E%A8%E8%8D%90%E7%B3%BB%E5%88%97">不可错过的网站推荐系列</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E6%80%BB%E7%BB%93%E6%96%87%E7%AB%A0%E7%B3%BB%E5%88%97">前端总结文章系列</a></li><li><a href="#%E5%85%B6%E5%AE%83%E6%80%BB%E7%BB%93">其它总结</a></li><li><a href="#%E5%89%8D%E7%AB%AF%E7%A4%BE%E5%8C%BA%E6%B4%BB%E5%8A%A8">前端社区活动</a></li><li><a href="#%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2">更新历史</a></li></ul><!-- END doctoc generated TOC please keep comment here to allow auto update --><a id="more"></a><h2 id="Web前端常用参考手册"><a href="#Web前端常用参考手册" class="headerlink" title="Web前端常用参考手册"></a>Web前端常用参考手册</h2><ol><li><a href="http://w3help.org/" title="w3chelp" target="_blank" rel="noopener">w3chelp</a>W3help.org是由国内多家关注Web标准的公司、团体、标准组织,及科研单位等共同创立的Web标准推广网站。</li><li><a href="http://css.doyoe.com/" target="_blank" rel="noopener">CSS3参考手册</a></li><li><a href="http://caniuse.com/#search=border" target="_blank" rel="noopener">caniuse</a> <a href="http://www.browsersupport.net/" target="_blank" rel="noopener">browsersupport</a>非常霸气,输入css属性可以查看该属性在各种浏览器下面的兼容性问题。</li><li><a href="http://overapi.com/" target="_blank" rel="noopener">overapi</a> 超全Cheat Sheet网站,涵盖几乎所有主流开发语言及框架API与常用命令,工程师必备。</li><li><a href="http://wowubuntu.com/markdown/" target="_blank" rel="noopener">Markdown 语法说明</a></li><li><a href="http://ecmascript.cn/" target="_blank" rel="noopener">ECMAScript 5.1中文版</a></li><li><a href="http://w3c.github.io/html/" target="_blank" rel="noopener">http://w3c.github.io/html/</a></li></ol><h2 id="前端兼容性相关超级实用工具"><a href="#前端兼容性相关超级实用工具" class="headerlink" title="前端兼容性相关超级实用工具"></a>前端兼容性相关超级实用工具</h2><ul><li><a href="https://ruanyf.github.io/es-checker/index.cn.html" target="_blank" rel="noopener">ES6 的功能侦测库 ES-Checker</a> <a href="http://www.ruanyifeng.com/blog/2015/06/es-checker.html" target="_blank" rel="noopener">相关文章</a></li><li><a href="https://kangax.github.io/compat-table/es6/" target="_blank" rel="noopener">ECMAScript 6 compatibility table</a></li><li><a href="https://node.green/" target="_blank" rel="noopener">Node.js ES2015/ES6, ES2016 and ES2017 support</a></li><li><a href="http://css3test.com/" target="_blank" rel="noopener">The CSS3 Test</a></li><li><a href="https://html5test.com/" target="_blank" rel="noopener">HTML5test - How well does your browser support HTML5?</a></li><li><a href="http://mediaqueriestest.com/" target="_blank" rel="noopener">CSS Media Queries Test</a></li><li><a href="https://modernizr.com/" target="_blank" rel="noopener">Modernizr: the feature detection library for HTML5/CSS3</a></li><li><a href="https://caniuse.com/#home" target="_blank" rel="noopener">Can I use… Support tables for HTML5, CSS3, etc</a></li><li><a href="http://mobilehtml5.org/" target="_blank" rel="noopener">Mobile HTML5 compatibility on iPhone, Android, Windows Phone, BlackBerry, Firefox OS and other mobile devices</a></li><li><a href="https://github.com/browserslist/browserslist" target="_blank" rel="noopener">🦔 Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-preset-env</a> 其他<a href="http://browserl.ist/" target="_blank" rel="noopener">http://browserl.ist/</a></li><li><a href="https://www.ssllabs.com/ssltest/analyze.html" target="_blank" rel="noopener">https证书测试在线工具</a></li><li><a href="https://www.chinassl.net/ssltools/ssl-checker.html" target="_blank" rel="noopener">https://www.chinassl.net/ssltools/ssl-checker.html</a></li><li><a href="https://mobilehtml5.org/ts/" target="_blank" rel="noopener">Test your HTML5 support</a></li><li><a href="http://chrome.360.cn/test/html5/index.html" target="_blank" rel="noopener">http://chrome.360.cn/test/html5/index.html</a></li><li><a href="https://github.com/kripken/html5test" target="_blank" rel="noopener">https://github.com/kripken/html5test</a> <a href="https://github.com/WebPlatformTest/HTML5test" target="_blank" rel="noopener">https://github.com/WebPlatformTest/HTML5test</a></li><li><a href="http://html6test.com/about.html" target="_blank" rel="noopener">http://html6test.com/about.html</a></li></ul><h2 id="优秀的前端技术博客"><a href="#优秀的前端技术博客" class="headerlink" title="优秀的前端技术博客"></a>优秀的前端技术博客</h2><ol><li><a href="http://www.w3cplus.com/" target="_blank" rel="noopener">w3cplus</a>这是我经常去的一个Blog,感觉站长和其他维护改Blog的成员分享的技术和写的精彩文章,在这里我学到了很多,开拓了视野。在此感谢w3cplus。</li><li><a href="http://www.zhangxinxu.com/wordpress/" target="_blank" rel="noopener">张鑫旭BLOG</a>张爷,就这么称呼吧。虽然未识其庐山正面目。但是风趣的写作风格和精彩的文章,对知识的探索和执着,都给人留下了深刻的影响。</li><li><a href="http://www.cnblogs.com/lhb25" target="_blank" rel="noopener">梦想天空</a>这个博客应该是前端程序员门的资源宝藏吧。</li><li><a href="http://www.cnblogs.com/TomXu/" target="_blank" rel="noopener">汤姆大叔的博客</a>这是搜牛的同事推荐的。之前知道有这么一号牛人,只是其文章都没有好好地阅读过。就单单看了下首页,在这里肯定能学到很多js方面的知识。有空一定要好好读下。</li><li><a href="http://www.cnblogs.com/rubylouvre/" target="_blank" rel="noopener">司徒正美</a>感觉博主在业界很低调,但是他写的博文,特别是js方面的文章真的好高调。就目前为止我印象最深了就是博主写的mass框架和博文</li><li><a href="http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html" target="_blank" rel="noopener">javascript正则表达式</a>。当然肯定是我关注的太少了,里面肯定有很多很多的干货的。</li><li><a href="http://www.cn-cuckoo.com/" target="_blank" rel="noopener">为之漫笔(李松峰)</a>为之漫笔(李松峰),本博客专注于Web前后端技术、移动平台开发技术、交互设计和技术翻译。js圣经-《JavaScript高级程序设计》译者。</li><li><a href="http://zp.zuixiami.com/" target="_blank" rel="noopener">鬼群作品秀</a></li></ol><h2 id="CSS3系列"><a href="#CSS3系列" class="headerlink" title="CSS3系列"></a>CSS3系列</h2><ol><li><a href="http://css3lib.alloyteam.com/" target="_blank" rel="noopener">CSS3 UI 库</a></li><li><a href="http://www.w3cplus.com/resources/css3-tutorial-and-case" target="_blank" rel="noopener">CSS3 属性详解</a>学习CSS3很好的资源。w3cplus是一个致力于推广国内前端行业的技术博客。它以探索为己任,不断活跃在行业技术最前沿,努力提供高质量前端技术博文;其文章范围广泛,主要以css3、html5、Javascript和各类demo为主。</li><li><a href="https://daneden.github.io/animate.css/" target="_blank" rel="noopener">Animate.css</a></li></ol><h2 id="Web前端问答社区"><a href="#Web前端问答社区" class="headerlink" title="Web前端问答社区"></a>Web前端问答社区</h2><p>项目中碰到了问题,该去哪,谷歌、度娘不行的话,不妨试试以下网址,或许你就可以找到解决问题的办法。</p><ol><li><a href="http://ask.w3cplus.com/" target="_blank" rel="noopener">Ask.W3CPLUS社区!</a>Ask.W3cplus社区是由W3CPLUS全体成员创建,主要目的为前端爱好者提供一个交流平台,欢迎大家在此提问和回复!</li><li><a href="http://stackoverflow.com/" target="_blank" rel="noopener">stackoverflow</a>是全球IT界最受欢迎的技术问答网站(更为准确的说,stackoverflow Stack Overflow 现在只是 Stack Exchange network 的子站点而已)之一,目前,其每月不重复的访问用户超过1600万;每月网页浏览量(PV)增长了近6倍,达到9500万。</li><li><a href="http://www.dewen.org/" target="_blank" rel="noopener">德问</a>尊德性,道问学,以致知。德问,编程领域的社交问答。帮您解答各类编程问题,交流与扩展专业知识及技能。</li><li><a href="http://www.zhihu.com/" target="_blank" rel="noopener">知乎</a>知乎是一个真实的网络问答社区,社区氛围友好、理性、认真,连接了各行各业的精英。他们分享着彼此的专业知识、经验、见解,为中文互联网源源不断地提供高质量的信息。“在这里,发现更大的世界。”</li><li><a href="http://segmentfault.com/" target="_blank" rel="noopener">segmentfault</a>这是一个专业面向开发者的技术问答社区,你可以在这里提出任何与开发相关的问题,并得到同行的解答和评价。</li><li><a href="http://www.w3cfuns.com/" target="_blank" rel="noopener">w3cfuns</a>是一个专注于web前端开发行业的综合性门户网站,以”互联网标准化”为目标,致力于推动前端开发在互联网的发展,通过众多专业的服 务形式,服务于中国互联网产业,以推动web标准在中国的发展。自创建以来吸引了众多web前端开发工程师的加盟,引领着中国互联网的标准化潮流。</li><li><a href="http://fp.labs.lugir.com/" target="_blank" rel="noopener">传送之门</a>这个网站应该还是在开发中。程序员专属于学习、休闲社区。收藏网页链接,轻松珍藏优秀资源,制作资源特辑,整理和分享精彩内容,发现兴趣爱好,生活远不只是编码</li><li><a href="http://cnodejs.org/" target="_blank" rel="noopener">CNode:Node.js专业中文社区</a></li><li><a href="http://stackoverflow.com/" target="_blank" rel="noopener">stack overflow</a>是全球IT界最受欢迎的技术问答网站(更为准确的说,Stack Overflow 现在只是 Stack Exchange network 的子站点而已)之一,目前,其每月不重复的访问用户超过1600万;每月网页浏览量(PV)增长了近6倍,达到9500万。</li><li><a href="https://www.quora.com/" target="_blank" rel="noopener">quora</a> 国外的知乎</li></ol><h2 id="Web前端网址导航"><a href="#Web前端网址导航" class="headerlink" title="Web前端网址导航"></a>Web前端网址导航</h2><ol><li><a href="http://uedfans.cn/" target="_blank" rel="noopener">UED网址导航</a></li><li><a href="http://www.ux265.net/" target="_blank" rel="noopener">web前端开发联盟</a></li><li><a href="http://sentsin.com/daohang/" target="_blank" rel="noopener">贤心-前端圈</a></li><li><a href="http://uxd123.com/" target="_blank" rel="noopener">uxd123-前端设计导航</a></li><li><a href="http://hao.uisdc.com/goods/" target="_blank" rel="noopener">设计师网站导航</a>优设网设计师网址导航为设计师提供ps教程、UI设计、素材下载、高清图库、配色方案、用户体验、网页设计等全方位设计师网站导航指引。每周更新及时,是优秀网页设计联盟(SDC)旗下最实用、最专业、最全面、最好用的设计师导航!</li><li><a href="http://123.jser.us/" target="_blank" rel="noopener">123.jser.us/</a></li><li><a href="http://www.daqianduan.com/nav/" target="_blank" rel="noopener">前端网址导航</a></li><li><a href="http://codingheroes.io/resources/" target="_blank" rel="noopener">http://codingheroes.io/resources/</a></li></ol><h2 id="前端框架系列"><a href="#前端框架系列" class="headerlink" title="前端框架系列"></a>前端框架系列</h2><ol><li><a href="http://twitter.github.com/bootstrap/" target="_blank" rel="noopener">bootstrap</a>大名鼎鼎!!!Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。</li><li><a href="http://www.bootcss.com/" target="_blank" rel="noopener">Bootstrap中文网</a>翻译bootsrap,当然不仅仅只是bootstrap,还有其他优秀的前端框架。</li><li><a href="http://www.w3cplus.com/solution/index/index.html" target="_blank" rel="noopener">css解决方案</a>这是<a href="http://www.w3cplus.com/content/643.html" target="_blank" rel="noopener">为之</a>将把项目中经常碰到的前端的问题整理成一套解决方案。非常实用。</li><li><a href="http://aliceui.org/" target="_blank" rel="noopener">支付宝的Alice</a>Alice是漫游仙境的童话女神,是支付宝的样式解决方案,是一套精选的基于 CMD 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式。</li><li><a href="http://www.alloyteam.com/2012/05/the-javascript-framework-list/" target="_blank" rel="noopener">国内优秀Web前端Javascript框架库汇总列表(会长期更新)</a></li><li><a href="http://nec.netease.com/" target="_blank" rel="noopener">NEC : 更好的CSS样式解决方案</a></li><li><a href="https://github.com/polymer/polymer" target="_blank" rel="noopener">Google Polymer Webui</a></li><li><a href="http://www.keqie.com/" target="_blank" rel="noopener">渴切-获取轻量级 响应css框架</a></li></ol><h2 id="前端性能系列"><a href="#前端性能系列" class="headerlink" title="前端性能系列"></a>前端性能系列</h2><ol><li><a href="http://www.kuqin.com/web/20121209/333935.html" target="_blank" rel="noopener">浏览器的工作原理:新式网络浏览器幕后揭秘</a></li><li><a href="http://www.iyunlu.com/view/Front-end/60.html" target="_blank" rel="noopener">PNG的秘密—— 一淘前端分享会</a></li></ol><h2 id="前端规范系列"><a href="#前端规范系列" class="headerlink" title="前端规范系列"></a>前端规范系列</h2><ol><li><a href="http://alloyteam.github.com/JX/doc/specification/google-javascript.xml" target="_blank" rel="noopener">Google Javascript编程规范</a></li><li><a href="http://udc.weibo.com/2012/02/%E6%8F%AD%E7%A7%98wdl-%E5%BE%AE%E5%8D%9A%E4%BA%A4%E4%BA%92%E8%A7%84%E8%8C%83%E7%9A%84%E6%88%90%E9%95%BF%E5%8E%86%E7%A8%8B/" target="_blank" rel="noopener">揭秘wdl-微博交互规范的成长历程</a></li></ol><h2 id="前端兼容性系列"><a href="#前端兼容性系列" class="headerlink" title="前端兼容性系列"></a>前端兼容性系列</h2><ol><li><a href="http://www.w3cfuns.com/thread-297-1-1.html" target="_blank" rel="noopener">原创-IE6 PNG透明终极解决方案-打造W3Cfuns-IE6PNG最强帖</a></li><li><a href="http://www.iyunlu.com/view/css-xhtml/64.html" target="_blank" rel="noopener">inline-block 前世今生</a></li><li><a href="http://www.iyunlu.com/view/css-xhtml/55.html" target="_blank" rel="noopener">那些年我们一起清除过的浮动</a></li><li><a href="http://www.cnblogs.com/hooray/archive/2011/05/20/2052269.html" target="_blank" rel="noopener">完美解决IE6不支持position:fixed的bug</a></li><li><a href="http://www.cnblogs.com/wdq1103/archive/2010/06/12/1757321.html" target="_blank" rel="noopener">CSS的盒子模型(Box Model)</a></li></ol><h2 id="CSS系列"><a href="#CSS系列" class="headerlink" title="CSS系列"></a>CSS系列</h2><ol><li><a href="http://www.iyunlu.com/view/css-xhtml/62.html" target="_blank" rel="noopener">可用性更好的CSS隐藏文字技术(CSS图片替换文字)</a></li><li><a href="http://www.w3cplus.com/solution/index/index.html" target="_blank" rel="noopener">css解决方案</a></li><li><a href="http://www.w3cplus.com/framework/index.php" target="_blank" rel="noopener">html常用结构</a></li></ol><h2 id="JavaScript系列"><a href="#JavaScript系列" class="headerlink" title="JavaScript系列"></a>JavaScript系列</h2><ol><li><a href="http://www.laruence.com/2009/05/28/863.html" target="_blank" rel="noopener">Javascript作用域原理</a></li><li><a href="http://www.zhangxinxu.com/wordpress/2011/06/javascript%E6%9C%89%E5%85%B3%E7%9A%8410%E4%B8%AA%E6%80%AA%E7%99%96%E5%92%8C%E7%A7%98%E5%AF%86/" target="_blank" rel="noopener">javascript有关的10个怪癖和秘密</a></li><li><a href="http://bonsaiden.github.com/JavaScript-Garden/zh/" target="_blank" rel="noopener">JavaScript 秘密花园</a></li><li><a href="http://www.cn-cuckoo.com/deconstructed/" target="_blank" rel="noopener">JavaScript库 解构</a> 深入JavaScript库源代码,条分缕析,顿悟最优秀JavaScript库的核心机制</li></ol><h2 id="不可错过的网站推荐系列"><a href="#不可错过的网站推荐系列" class="headerlink" title="不可错过的网站推荐系列"></a>不可错过的网站推荐系列</h2><ol><li><a href="http://2012.qq.com/2012_show.htm" target="_blank" rel="noopener">腾讯2012年伦敦奥运会设计:前端项目回顾</a></li><li><a href="http://www.zensorium.com/tinke/" target="_blank" rel="noopener">国外的视差滚动效果</a></li></ol><h2 id="前端总结文章系列"><a href="#前端总结文章系列" class="headerlink" title="前端总结文章系列"></a>前端总结文章系列</h2><ol><li><a href="http://hi.baidu.com/lijing00333/item/1c28309d8b46c7d41e427118" target="_blank" rel="noopener">十日谈</a></li><li><a href="http://julying.com/blog/how-to-become-a-good-web-front-end-engineer/" target="_blank" rel="noopener">如何成为一名优秀的web前端工程师(前端攻城师)?</a></li></ol><h2 id="其它总结"><a href="#其它总结" class="headerlink" title="其它总结"></a>其它总结</h2><ol><li><a href="https://github.com/JSBa/jsba.github.io/blob/master/main.md" target="_blank" rel="noopener">Web开发相关资源、网站、工具推荐</a></li></ol><h2 id="前端社区活动"><a href="#前端社区活动" class="headerlink" title="前端社区活动"></a>前端社区活动</h2><ol><li><a href="http://www.w3ctech.com/event" target="_blank" rel="noopener">w3ctech</a></li><li><a href="http://fequan.com/" target="_blank" rel="noopener">前端圈</a></li><li><a href="http://d2forum.alibaba-inc.com/" target="_blank" rel="noopener">D2前端技术论坛</a></li><li><a href="http://www.webrebuild.org/" target="_blank" rel="noopener">WebRebuild</a></li><li><a href="http://www.html5dw.com/" target="_blank" rel="noopener">HTML5梦工场</a></li></ol><h2 id="更新历史"><a href="#更新历史" class="headerlink" title="更新历史"></a>更新历史</h2><p>2018-04-01</p><ul><li>add 前端兼容性相关超级实用工具</li></ul><p>2016-10-22</p><ul><li>文章简要修改</li><li>添加文章目录结构</li></ul>]]></content>
<summary type="html">
本文收集整理优秀的前端资源。
</summary>
<category term="前端资源" scheme="http://huixisheng.github.io/tags/%E5%89%8D%E7%AB%AF%E8%B5%84%E6%BA%90/"/>
<category term="收藏夹" scheme="http://huixisheng.github.io/tags/%E6%94%B6%E8%97%8F%E5%A4%B9/"/>
<category term="前端文档" scheme="http://huixisheng.github.io/tags/%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3/"/>
</entry>
<entry>
<title>Object.assign引起的页面显示空白</title>
<link href="http://huixisheng.github.io/object-assign/"/>
<id>http://huixisheng.github.io/object-assign/</id>
<published>2018-03-29T13:48:45.000Z</published>
<updated>2018-03-29T14:35:04.590Z</updated>
<content type="html"><![CDATA[<p>线上的页面在华为的设备出现空白,通过真机调试发现报错如下:</p><p><img src="/images/es6/object-assign/huawei-P7-L07.jpeg" alt=""></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Uncaught TypeError: Object function Object() { [native code] } has no method 'assign'</span><br></pre></td></tr></table></figure><p><img src="/images/es6/object-assign/compatibility.jpeg" alt=""></p><p>解决版本<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">import 'core-js/fn/object/assign';</span><br></pre></td></tr></table></figure></p><h2 id="其他相关问题解决"><a href="#其他相关问题解决" class="headerlink" title="其他相关问题解决"></a>其他相关问题解决</h2><p>ant-design <a href="https://github.com/ant-design/ant-design-mobile/issues/87" target="_blank" rel="noopener">直接使用Object.assign 有兼容性问题(Android5,iOS8.4) #87</a></p><blockquote><p>统一使用 object-assign</p></blockquote><p><a href="https://stackoverflow.com/questions/28346115/how-do-i-get-object-assign-to-work-with-6to5-polyfill" target="_blank" rel="noopener">How do I get Object.assign to work with 6to5 polyfill?</a></p><h2 id="兼容性"><a href="#兼容性" class="headerlink" title="兼容性"></a>兼容性</h2><ul><li><a href="https://kangax.github.io/compat-table/es6/#test-Proxy,_internal_'get'_calls_Object.assign" target="_blank" rel="noopener">https://kangax.github.io/compat-table/es6/#test-Proxy,_internal_'get'_calls_Object.assign</a></li><li><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign" target="_blank" rel="noopener">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign</a></li><li><a href="http://ruanyf.github.io/es-checker/index.cn.html" target="_blank" rel="noopener">浏览器es支持检测</a></li></ul>]]></content>
<summary type="html">
<p>线上的页面在华为的设备出现空白,通过真机调试发现报错如下:</p>
<p><img src="/images/es6/object-assign/huawei-P7-L07.jpeg" alt=""></p>
<figure class="highlight plain">
</summary>
<category term="es6" scheme="http://huixisheng.github.io/tags/es6/"/>
<category term="javascript" scheme="http://huixisheng.github.io/tags/javascript/"/>
<category term="Object" scheme="http://huixisheng.github.io/tags/Object/"/>
</entry>
<entry>
<title>自动化打包App</title>
<link href="http://huixisheng.github.io/ci-build-app/"/>
<id>http://huixisheng.github.io/ci-build-app/</id>
<published>2018-03-28T16:01:09.000Z</published>
<updated>2018-03-28T16:11:39.361Z</updated>
<content type="html"><![CDATA[<h2 id="jenkins安装"><a href="#jenkins安装" class="headerlink" title="jenkins安装"></a>jenkins安装</h2><h2 id="cocoapods"><a href="#cocoapods" class="headerlink" title="cocoapods"></a>cocoapods</h2><h2 id="xcodebuild"><a href="#xcodebuild" class="headerlink" title="xcodebuild"></a>xcodebuild</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ pod update --verbose --no-repo-update</span><br></pre></td></tr></table></figure><h2 id="推荐阅读"><a href="#推荐阅读" class="headerlink" title="推荐阅读"></a>推荐阅读</h2><h2 id="文档"><a href="#文档" class="headerlink" title="文档"></a>文档</h2>]]></content>
<summary type="html">
<h2 id="jenkins安装"><a href="#jenkins安装" class="headerlink" title="jenkins安装"></a>jenkins安装</h2><h2 id="cocoapods"><a href="#cocoapods" class
</summary>
</entry>
<entry>
<title>unit-test</title>
<link href="http://huixisheng.github.io/unit-test/"/>
<id>http://huixisheng.github.io/unit-test/</id>
<published>2018-03-27T15:36:50.000Z</published>
<updated>2018-03-28T15:57:51.869Z</updated>
<content type="html"><![CDATA[<h2 id="测试框架"><a href="#测试框架" class="headerlink" title="测试框架"></a>测试框架</h2><ul><li><a href="http://karma-runner.github.io/0.12/index.html" target="_blank" rel="noopener">karma</a></li><li><a href="https://mochajs.org" target="_blank" rel="noopener">https://mochajs.org</a></li><li>Jasmine</li><li>Qunit</li><li>JsTestDriver</li><li>JSUnit</li><li><a href="https://github.com/totorojs/totoro" target="_blank" rel="noopener">https://github.com/totorojs/totoro</a></li></ul><h3 id="测试框架对比"><a href="#测试框架对比" class="headerlink" title="测试框架对比"></a>测试框架对比</h3><ul><li><a href="http://www.zuojj.com/archives/440.html" target="_blank" rel="noopener">Javascript单元测试框架Qunit和Jasmine的比较</a></li></ul><h2 id="断言库"><a href="#断言库" class="headerlink" title="断言库"></a>断言库</h2><ul><li><a href="http://chaijs.com" target="_blank" rel="noopener">chai</a></li></ul><h2 id="教程"><a href="#教程" class="headerlink" title="教程"></a>教程</h2><ul><li><a href="https://github.com/ruanyf/mocha-demos" target="_blank" rel="noopener">ruanyf/mocha-demos</a> <a href="http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html" target="_blank" rel="noopener">测试框架 Mocha 实例教程</a></li><li><a href="http://wiki.jikexueyuan.com/project/node-lessons/mocha-chai-phantomjs.html" target="_blank" rel="noopener">http://wiki.jikexueyuan.com/project/node-lessons/mocha-chai-phantomjs.html</a></li></ul><h2 id="BDD-TDD区别"><a href="#BDD-TDD区别" class="headerlink" title="BDD / TDD区别"></a>BDD / TDD区别</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">// TDD</span><br><span class="line">suite('Array', function() {</span><br><span class="line"> setup(function() {</span><br><span class="line"> });</span><br><span class="line"></span><br><span class="line"> test('equal -1 when index beyond array length', function() {</span><br><span class="line"> assert.equal(-1, [1,2,3].indexOf(4));</span><br><span class="line"> });</span><br><span class="line">});</span><br><span class="line"></span><br><span class="line">// BDD</span><br><span class="line">describe('Array', function() {</span><br><span class="line"> before(function() {</span><br><span class="line"> });</span><br><span class="line"></span><br><span class="line"> it('should return -1 when no such index', function() {</span><br><span class="line"> [1,2,3].indexOf(4).should.equal(-1);</span><br><span class="line"> });</span><br><span class="line">});</span><br></pre></td></tr></table></figure><blockquote><p>来自: <a href="http://taobaofed.org/blog/2015/12/10/nodejs-unit-tests/" target="_blank" rel="noopener">http://taobaofed.org/blog/2015/12/10/nodejs-unit-tests/</a></p></blockquote><ul><li><a href="http://www.cnblogs.com/ustbwuyi/archive/2012/10/26/2741223.html" target="_blank" rel="noopener">关于TDD、BDD和DDD的一些看法</a></li><li><a href="http://ilucas.me/2016/03/07/difference-between-tdd-and-bdd/" target="_blank" rel="noopener">TDD与BDD的差别</a></li></ul><h2 id="覆盖率"><a href="#覆盖率" class="headerlink" title="覆盖率"></a>覆盖率</h2><ul><li>istanbul</li></ul><h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><pre><code>-- recursive执行子目录</code></pre><blockquote><p>Mocha默认运行test子目录里面的测试脚本。所以,一般都会把测试脚本放在test目录里面,然后执行mocha就不需要参数了。</p></blockquote><p>mocha.opts</p><h2 id="api-接口测试"><a href="#api-接口测试" class="headerlink" title="api 接口测试"></a>api 接口测试</h2><ul><li><a href="https://testerhome.com/topics/5372" target="_blank" rel="noopener">接口测试 测试来带个节奏之 API 测试工具篇</a></li><li><a href="http://pythonhackers.com/p/tsq/node-autotest" target="_blank" rel="noopener">http://pythonhackers.com/p/tsq/node-autotest</a></li><li><a href="https://log.zvz.im/2016/06/07/Make-your-Nodejs-API-robust/" target="_blank" rel="noopener">让你的 Node.js 应用接口稳如狗:如何使用 Mocha, Chai 和 SuperTest 写测试代码</a></li><li><a href="https://www.npmjs.com/package/moa-api" target="_blank" rel="noopener">https://www.npmjs.com/package/moa-api</a></li><li><a href="http://www.bayescafe.com/tools/use-postman-to-test-api-automatically.html" target="_blank" rel="noopener">API自动化测试利器——Postman</a></li><li><a href="http://blog.kazaff.me/2016/08/24/casperjs+mocha+chai搭建E2E测试环境/" target="_blank" rel="noopener">casperjs+mocha+chai搭建E2E测试环境</a></li></ul><h2 id="相关文档"><a href="#相关文档" class="headerlink" title="相关文档"></a>相关文档</h2><ul><li><a href="http://www.jianshu.com/p/9c78548caffa" target="_blank" rel="noopener">Mocha.js官方文档翻译 —— 简单、灵活、有趣</a></li><li><a href="https://www.zhihu.com/question/20075367" target="_blank" rel="noopener">在Node.js上用什么测试框架好?</a></li><li><a href="http://www.infoq.com/cn/articles/virtual-panel-tdd-bdd" target="_blank" rel="noopener">虚拟座谈会:代码测试比率、测试驱动开发及行为驱动开发</a></li><li><a href="https://www.zhihu.com/question/29922082" target="_blank" rel="noopener">如何进行前端自动化测试?</a></li><li><a href="https://gold.xitu.io/entry/57dbc89c7db2a24eb1a99604" target="_blank" rel="noopener">前端单元测试探索</a></li><li><a href="https://github.com/kuangwk/myblog/issues/1" target="_blank" rel="noopener">前端自动化测试工具总结 </a></li><li><a href="https://testerhome.com/topics/5189" target="_blank" rel="noopener">前端测试工具集锦</a></li></ul><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><ul><li><a href="http://sinonjs.org/" target="_blank" rel="noopener">sinon</a></li><li><a href="https://github.com/visionmedia/superagent/tree/master/test/node" target="_blank" rel="noopener">https://github.com/visionmedia/superagent/tree/master/test/node</a></li><li>supertest</li></ul>]]></content>
<summary type="html">
<h2 id="测试框架"><a href="#测试框架" class="headerlink" title="测试框架"></a>测试框架</h2><ul>
<li><a href="http://karma-runner.github.io/0.12/index.html"
</summary>
<category term="单元测试" scheme="http://huixisheng.github.io/tags/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/"/>
<category term="资源" scheme="http://huixisheng.github.io/tags/%E8%B5%84%E6%BA%90/"/>
</entry>
<entry>
<title>mocha</title>
<link href="http://huixisheng.github.io/mocha/"/>
<id>http://huixisheng.github.io/mocha/</id>
<published>2018-03-27T15:35:12.000Z</published>
<updated>2018-03-28T15:58:05.157Z</updated>
<content type="html"><![CDATA[<h2 id="例子"><a href="#例子" class="headerlink" title="例子"></a>例子</h2><ul><li><a href="https://github.com/huixisheng/lab/tree/master/test" target="_blank" rel="noopener">https://github.com/huixisheng/lab/tree/master/test</a></li><li><a href="https://github.com/ruanyf/mocha-demos" target="_blank" rel="noopener">https://github.com/ruanyf/mocha-demos</a></li><li><a href="https://github.com/mochajs/mocha/tree/master/test" target="_blank" rel="noopener">https://github.com/mochajs/mocha/tree/master/test</a></li><li><a href="https://github.com/vuejs/vue-test-utils-mocha-webpack-example" target="_blank" rel="noopener">https://github.com/vuejs/vue-test-utils-mocha-webpack-example</a></li><li><a href="https://github.com/mochajs/mocha/tree/f24607e6b04d129610613592d19f5a5af9b65d51/docs/example" target="_blank" rel="noopener">https://github.com/mochajs/mocha/tree/f24607e6b04d129610613592d19f5a5af9b65d51/docs/example</a></li><li><a href="https://github.com/airware/webdriver-mocha-async-await-example" target="_blank" rel="noopener">https://github.com/airware/webdriver-mocha-async-await-example</a></li></ul><h2 id="其他关键词"><a href="#其他关键词" class="headerlink" title="其他关键词"></a>其他关键词</h2><ul><li>SuperTest</li><li>Istanbul</li><li>Magnum CI</li><li>superagent <a href="http://visionmedia.github.io/superagent/" target="_blank" rel="noopener">http://visionmedia.github.io/superagent/</a></li><li>karma</li><li>casperjs</li></ul><h2 id="碰到的问题"><a href="#碰到的问题" class="headerlink" title="碰到的问题"></a>碰到的问题</h2><h3 id="如何测试es6的module"><a href="#如何测试es6的module" class="headerlink" title="如何测试es6的module"></a>如何测试es6的module</h3><p>出现如下报错<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">SyntaxError: Unexpected token import</span><br><span class="line"> at createScript (vm.js:80:10)</span><br><span class="line"> at Object.runInThisContext (vm.js:139:10)</span><br><span class="line"> at Module._compile (module.js:607:28)</span><br></pre></td></tr></table></figure></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ./node_modules/mocha/bin/mocha --require babel-register --require babel-polyfill</span><br></pre></td></tr></table></figure><p><code>mocha --compilers js:babel-register</code> 已经废弃。具体见<a href="https://github.com/mochajs/mocha/wiki/compilers-deprecation" target="_blank" rel="noopener">compilers deprecation</a></p><p>相关issue <a href="https://github.com/mochajs/mocha/issues/3228" target="_blank" rel="noopener">SyntaxError: Unexpected token import #3228</a> <a href="https://github.com/mochajs/mocha/issues/2655" target="_blank" rel="noopener">ES6 import not working when using babel in Mocha. #2655</a> <a href="https://stackoverflow.com/questions/35040978/babel-unexpected-token-import-when-running-mocha-tests" target="_blank" rel="noopener">Babel unexpected token import when running mocha tests</a></p><p> Move the invocation into the parens that contain the function wrap-iife</p><h3 id="异步的回调没有添加done"><a href="#异步的回调没有添加done" class="headerlink" title="异步的回调没有添加done()"></a>异步的回调没有添加<code>done()</code></h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.</span><br></pre></td></tr></table></figure><p>如果确实耗时过长的的设置<code>--timeout</code>,<code>this.timeout(3000);</code></p><p>相关issue <a href="https://github.com/mochajs/mocha/issues/2025" target="_blank" rel="noopener">timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. #2025</a></p><h3 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h3><p>ReferenceError: window is not defined</p><ul><li><a href="https://www.npmjs.com/package/mocha-jsdom" target="_blank" rel="noopener">https://www.npmjs.com/package/mocha-jsdom</a></li></ul><p> get request<br>(node:13054) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 63): [object Object]</p><ul><li><a href="https://objcer.com/2017/12/27/unhandled-promise-rejections-in-node-js/" target="_blank" rel="noopener">https://objcer.com/2017/12/27/unhandled-promise-rejections-in-node-js/</a></li><li><a href="https://github.com/mochajs/mocha/issues/2797" target="_blank" rel="noopener">https://github.com/mochajs/mocha/issues/2797</a></li><li><a href="https://github.com/mochajs/mocha/issues/3097" target="_blank" rel="noopener">https://github.com/mochajs/mocha/issues/3097</a></li><li><a href="http://thecodebarbarian.com/unhandled-promise-rejections-in-node.js.html" target="_blank" rel="noopener">http://thecodebarbarian.com/unhandled-promise-rejections-in-node.js.html</a></li></ul><h2 id="推荐阅读"><a href="#推荐阅读" class="headerlink" title="推荐阅读"></a>推荐阅读</h2><ul><li><a href="http://zhouqing86.github.io/2017/03/26/js-test4-mocha/#%E5%BC%95%E5%85%A5babel%E6%B5%8B%E8%AF%95es6" target="_blank" rel="noopener">http://zhouqing86.github.io/2017/03/26/js-test4-mocha/#%E5%BC%95%E5%85%A5babel%E6%B5%8B%E8%AF%95es6</a></li><li><a href="http://www.dengzhr.com/node-js/1282" target="_blank" rel="noopener">http://www.dengzhr.com/node-js/1282</a></li><li><a href="https://www.jianshu.com/p/073d25a3bba0" target="_blank" rel="noopener">Vue.js学习系列六 —— Vue单元测试Karma+Mocha学习笔记</a></li><li><a href="http://www.jackpu.com/-da-jian-ji-yu-mocha-webpack2-chai-es6-qian-duan-dan-yuan-ce-shi/" target="_blank" rel="noopener">搭建 基于 Mocha + Webpack2 + Chai + ES6 前端单元测试</a></li><li><a href="http://blog.kazaff.me/2016/08/24/casperjs+mocha+chai%E6%90%AD%E5%BB%BAE2E%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/" target="_blank" rel="noopener">http://blog.kazaff.me/2016/08/24/casperjs+mocha+chai%E6%90%AD%E5%BB%BAE2E%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/</a></li><li><a href="http://zoucz.com/blog/2016/08/02/nodejs-unittest-mochajs/" target="_blank" rel="noopener">http://zoucz.com/blog/2016/08/02/nodejs-unittest-mochajs/</a></li><li><a href="https://github.com/jin5354/404forest/issues/47" target="_blank" rel="noopener">https://github.com/jin5354/404forest/issues/47</a></li></ul><h2 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h2><ul><li><a href="https://mochajs.org/" target="_blank" rel="noopener">https://mochajs.org/</a></li><li><a href="http://www.chaijs.com/guide/styles/" target="_blank" rel="noopener">http://www.chaijs.com/guide/styles/</a></li><li><a href="https://devhints.io/chai" target="_blank" rel="noopener">Chai.js cheatsheet</a></li><li><a href="https://github.com/zhaosaisai/mocha-in-chinese" target="_blank" rel="noopener">Mocha中文文档(翻译)</a> <a href="https://www.jianshu.com/p/9c78548caffa" target="_blank" rel="noopener">https://www.jianshu.com/p/9c78548caffa</a></li></ul>]]></content>
<summary type="html">
<h2 id="例子"><a href="#例子" class="headerlink" title="例子"></a>例子</h2><ul>
<li><a href="https://github.com/huixisheng/lab/tree/master/test" tar
</summary>
<category term="mocha" scheme="http://huixisheng.github.io/tags/mocha/"/>
<category term="单元测试" scheme="http://huixisheng.github.io/tags/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/"/>
</entry>
<entry>
<title>简单介绍cnpmjs安装和碰到的问题</title>
<link href="http://huixisheng.github.io/cnpmjs-install/"/>
<id>http://huixisheng.github.io/cnpmjs-install/</id>
<published>2018-03-27T13:37:18.000Z</published>
<updated>2018-03-27T15:01:32.023Z</updated>
<content type="html"><![CDATA[<p><a href="https://github.com/cnpm/cnpmjs.org" target="_blank" rel="noopener">cnpmjs</a> 可用于企业的前端私有包管理。淘宝<code>NPM</code>镜像就是用这个搭建的。</p><p><a href="https://www.npmjs.org/" target="_blank" rel="noopener">npmjs</a>私有包是要收费的,对于公司而言更倾向于自己部署,一是省钱,二是一些含有敏感内容的包放到其他平时总是不放心。</p><p>本文将简单记录下实际安装过程中碰到的问题,基本的安装可以移步<a href="https://github.com/cnpm/cnpmjs.org/wiki" target="_blank" rel="noopener">官方文档</a>。</p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">$ yum install -y nodejs</span><br><span class="line">$ yun install git</span><br><span class="line">$ git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpmjs.org</span><br><span class="line"></span><br><span class="line"># centos7 安装失败</span><br><span class="line">$ yum install mysql mysql-server</span><br><span class="line"></span><br><span class="line">$ yum update</span><br><span class="line">$ yum localinstall mysql-community-release-el7-5.noarch.rpm</span><br><span class="line">$ yum repolist enabled | grep "mysql.*-community.*"</span><br><span class="line">$ yum repolist all | grep mysql</span><br><span class="line">$ yum-config-manager --disable mysql56-community</span><br><span class="line">$ sudo yum search yum-config-manager</span><br><span class="line">$ yum install yum-utils</span><br><span class="line">$ yum-config-manager --disable mysql56-community</span><br><span class="line">$ yum-config-manager --enable mysql57-community-dmr</span><br><span class="line">$ yum repolist all | grep mysql</span><br><span class="line">$ yum repolist enabled | grep mysql</span><br><span class="line">$ yum install mysql-serve</span><br><span class="line"></span><br><span class="line"># centos7 相关mysql命令</span><br><span class="line">$ service mysqld status</span><br><span class="line">$ service mysqld stop</span><br><span class="line">$ service mysqld start</span><br><span class="line"></span><br><span class="line"># centos7 关闭防火墙 #</span><br><span class="line">$ systemctl stop firewalld.service</span><br><span class="line">$ systemctl disable firewalld.service #禁止firewall开机启动</span><br><span class="line">$ systemctl stop firewall // centos7以下的版本命令</span><br></pre></td></tr></table></figure><p>以上部分命令来源于网络,时隔太久,找不到相关的出处,😶。</p><h2 id="发布的模块npm-install-报错"><a href="#发布的模块npm-install-报错" class="headerlink" title="发布的模块npm install 报错"></a>发布的模块npm install 报错</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[npminstall:get] retry GET http://xx.xx.xx.xx:7001xx-debug after 100ms, retry left 4, error: SyntaxError: Unexpected token l in JSON at position 0</span><br><span class="line">...</span><br><span class="line">SyntaxError: Unexpected token l in JSON at position 0</span><br><span class="line"> at JSON.parse (<anonymous>)</span><br><span class="line"> at _get (/usr/local/lib/node_modules/cnpm/node_modules/npminstall/lib/get.js:70:26)</span><br><span class="line"> at _get.next (<anonymous>)</span><br><span class="line"> at onFulfilled (/usr/local/lib/node_modules/cnpm/node_modules/co/index.js:65:19)</span><br><span class="line"> at <anonymous></span><br><span class="line"> at process._tickCallback (internal/process/next_tick.js:188:7)</span><br><span class="line">npminstall version: 3.2.1</span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>发现原因是<code>npm>=5.6</code>的时候有这个问题<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">➜ huixisheng.github.com git:(dev) ✗ npm -v</span><br><span class="line">5.4.1</span><br><span class="line">➜ huixisheng.github.com git:(dev) ✗ cnpm -v</span><br><span class="line">[email protected] (/usr/local/lib/node_modules/cnpm/lib/parse_argv.js)</span><br><span class="line">[email protected] (/usr/local/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)</span><br></pre></td></tr></table></figure></p><ul><li><a href="https://github.com/cnpm/cnpmjs.org/issues/1110" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/1110</a></li></ul><h2 id="配置修改"><a href="#配置修改" class="headerlink" title="配置修改"></a>配置修改</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br></pre></td><td class="code"><pre><span class="line"> /**</span><br><span class="line"> * Cluster mode</span><br><span class="line"> */</span><br><span class="line">- enableCluster: false,</span><br><span class="line">+ enableCluster: true,</span><br><span class="line"> numCPUs: os.cpus().length,</span><br><span class="line"></span><br><span class="line"> /*</span><br><span class="line">@@ -27,7 +27,7 @@ var config = {</span><br><span class="line"></span><br><span class="line"> registryPort: 7001,</span><br><span class="line"> webPort: 7002,</span><br><span class="line"> // 用于外部ip访问</span><br><span class="line">- bindingHost: '127.0.0.1', // only binding on 127.0.0.1 for local access</span><br><span class="line">+ //bindingHost: '127.0.0.1', // only binding on 127.0.0.1 for local access</span><br><span class="line"></span><br><span class="line"> // debug mode</span><br><span class="line"> // if in debug mode, some middleware like limit wont load</span><br><span class="line">@@ -62,10 +62,14 @@ var config = {</span><br><span class="line"></span><br><span class="line"> // default system admins</span><br><span class="line"> admins: {</span><br><span class="line">+ huixisheng: '[email protected]'</span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> // email notification for errors</span><br><span class="line">@@ -98,13 +102,13 @@ var config = {</span><br><span class="line"> */</span><br><span class="line"></span><br><span class="line"> database: {</span><br><span class="line">- db: 'cnpmjs_test',</span><br><span class="line">+ db: 'cnpm',</span><br><span class="line"> username: 'root',</span><br><span class="line">- password: '',</span><br><span class="line">+ password: 'mysqlpassword',</span><br><span class="line"></span><br><span class="line"> // the sql dialect of the database</span><br><span class="line"> // - currently supported: 'mysql', 'sqlite', 'postgres', 'mariadb'</span><br><span class="line">- dialect: 'sqlite',</span><br><span class="line">+ dialect: 'mysql',</span><br><span class="line"></span><br><span class="line"> // custom host; default: 127.0.0.1</span><br><span class="line"> host: '127.0.0.1',</span><br><span class="line">@@ -135,7 +139,8 @@ var config = {</span><br><span class="line"> downloadRedirectToNFS: false,</span><br><span class="line"></span><br><span class="line"> // registry url name</span><br><span class="line">- registryHost: 'r.cnpmjs.org',</span><br><span class="line">+ registryHost: 'xx.xx.xx.xx:7001',</span><br><span class="line">+ // registryHost: 'r.cnpmjs.org',</span><br><span class="line"></span><br><span class="line"> /**</span><br><span class="line"> * registry mode config</span><br><span class="line">@@ -144,11 +149,11 @@ var config = {</span><br><span class="line"> // enable private mode or not</span><br><span class="line"> // private mode: only admins can publish, other users just can sync package from source npm</span><br><span class="line"> // public mode: all users can publish</span><br><span class="line">- enablePrivate: false,</span><br><span class="line"> // 注册用户才可以发布模块</span><br><span class="line">+ enablePrivate: true,</span><br><span class="line"></span><br><span class="line"> // registry scopes, if don't set, means do not support scopes</span><br><span class="line">- scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test' ],</span><br><span class="line">-</span><br><span class="line">+ // scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test', '@cosme' ],</span><br><span class="line">+ scopes: [],</span><br><span class="line"> // some registry already have some private packages in global scope</span><br><span class="line"> // but we want to treat them as scoped private packages,</span><br><span class="line"> // so you can use this white list.</span><br><span class="line">@@ -169,6 +174,7 @@ var config = {</span><br><span class="line"> // If you want to directly sync from official npm's registry</span><br><span class="line"> // please drop them an email first</span><br><span class="line"> sourceNpmRegistry: 'https://registry.npm.taobao.org',</span><br><span class="line">+ // sourceNpmRegistry: 'http://xx.xx.xx.xx:7001',</span><br><span class="line"></span><br><span class="line"> // upstream registry is base on cnpm/cnpmjs.org or not</span><br><span class="line"> // if your upstream is official npm registry, please turn it off</span><br><span class="line">@@ -197,8 +203,6 @@ var config = {</span><br><span class="line"></span><br><span class="line"> // sync devDependencies or not, default is false</span><br><span class="line"> syncDevDependencies: false,</span><br><span class="line">- // try to remove all deleted versions from original registry</span><br><span class="line">- syncDeletedVersions: true,</span><br><span class="line"></span><br><span class="line"> // changes streaming sync</span><br><span class="line"> syncChangesStream: false,</span><br><span class="line">@@ -215,7 +219,7 @@ var config = {</span><br><span class="line"></span><br><span class="line"> // always-auth https://docs.npmjs.com/misc/config#always-auth</span><br><span class="line"> // Force npm to always require authentication when accessing the registry, even for GET requests.</span><br><span class="line">- alwaysAuth: false,</span><br><span class="line"> // 命令安装的时候也要输入命名</span><br><span class="line">+ alwaysAuth: true,</span><br><span class="line"></span><br><span class="line"> // if you're behind firewall, need to request through http proxy, please set this</span><br><span class="line"> // e.g.: `httpProxy: 'http://proxy.mycompany.com:8080'`</span><br><span class="line">diff --git a/cnpmjs.org/servers/registry.js b/cnpmjs.org/servers/registry.js</span><br><span class="line">index d2758e5..2d67184 100644</span><br><span class="line">--- a/cnpmjs.org/servers/registry.js</span><br><span class="line">+++ b/cnpmjs.org/servers/registry.js</span><br><span class="line">@@ -34,7 +34,7 @@ app.use(cors({</span><br><span class="line"> allowMethods: 'GET,HEAD',</span><br><span class="line"> }));</span><br><span class="line"> // 关闭用户注册接口</span><br><span class="line"> app.use(auth());</span><br><span class="line">-app.use(proxyToNpm());</span><br><span class="line">+//app.use(proxyToNpm());</span><br><span class="line"> app.use(notFound);</span><br><span class="line"></span><br><span class="line"> if (config.enableCompress) {</span><br><span class="line">diff --git a/cnpmjs.org/view/web/footer.html b/cnpmjs.org/view/web/footer.html</span><br><span class="line">index e7a0f04..d432a6d 100644</span><br><span class="line">--- a/cnpmjs.org/view/web/footer.html</span><br><span class="line">+++ b/cnpmjs.org/view/web/footer.html</span><br><span class="line">@@ -1,5 +1,4 @@</span><br><span class="line">-Copyright 2013 - 2016 &copy; cnpmjs.org</span><br><span class="line">+Copyright 2013 - 2018 &copy; cnpmjs.org</span><br><span class="line"> |</span><br><span class="line"> <a href="/">Home</a></span><br><span class="line"> |</span><br><span class="line">-<script>var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_5757157'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s17.cnzz.com/stat.php%3Fid%3D5757157%26online%3D1%26show%3Dline' type='text/javascript'%3E%3C/script%3E"));</script></span><br></pre></td></tr></table></figure><h2 id="相关问题"><a href="#相关问题" class="headerlink" title="相关问题"></a>相关问题</h2><h3 id="阿里云无法通过ip-端口访问"><a href="#阿里云无法通过ip-端口访问" class="headerlink" title="阿里云无法通过ip:端口访问"></a>阿里云无法通过ip:端口访问</h3><p><img src="/images/cnpmjs/aliyun.jpeg" alt=""></p><h3 id="ssh无法登录阿里云服务器"><a href="#ssh无法登录阿里云服务器" class="headerlink" title="ssh无法登录阿里云服务器"></a>ssh无法登录阿里云服务器</h3><p><img src="/images/cnpmjs/mac-permission-denied.jpeg" alt=""></p><h3 id="cnpm同步文件的存储位置在哪里"><a href="#cnpm同步文件的存储位置在哪里" class="headerlink" title="cnpm同步文件的存储位置在哪里"></a>cnpm同步文件的存储位置在哪里</h3><p>默认是在 $HOME/.cnpmjs.org/nfs 下面。具体看config配置<br><a href="https://github.com/cnpm/cnpmjs.org/issues/635" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/635</a></p><h3 id="失败-amp-如何加入权限验证"><a href="#失败-amp-如何加入权限验证" class="headerlink" title="失败 & 如何加入权限验证"></a>失败 & 如何加入权限验证</h3><p><a href="https://github.com/cnpm/cnpmjs.org/issues/925" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/925</a></p><h3 id="如何修改admin的密码?"><a href="#如何修改admin的密码?" class="headerlink" title="如何修改admin的密码?"></a>如何修改admin的密码?</h3><ul><li><a href="https://github.com/cnpm/cnpmjs.org/issues/1050" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/1050</a></li><li><a href="https://github.com/cnpm/cnpmjs.org/issues/385" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/385</a></li></ul><h3 id="cnpm添加用户,以及admin用户如何publish"><a href="#cnpm添加用户,以及admin用户如何publish" class="headerlink" title="cnpm添加用户,以及admin用户如何publish"></a>cnpm添加用户,以及admin用户如何publish</h3><ul><li><a href="https://github.com/cnpm/cnpmjs.org/issues/431" target="_blank" rel="noopener">https://github.com/cnpm/cnpmjs.org/issues/431</a></li></ul>]]></content>
<summary type="html">
<p><a href="https://github.com/cnpm/cnpmjs.org" target="_blank" rel="noopener">cnpmjs</a> 可用于企业的前端私有包管理。淘宝<code>NPM</code>镜像就是用这个搭建的。</p>
<p
</summary>
<category term="nodejs" scheme="http://huixisheng.github.io/tags/nodejs/"/>
<category term="cnpmjs" scheme="http://huixisheng.github.io/tags/cnpmjs/"/>
</entry>
<entry>
<title>项目脚手架</title>
<link href="http://huixisheng.github.io/scaffold/"/>
<id>http://huixisheng.github.io/scaffold/</id>
<published>2018-03-24T17:31:11.000Z</published>
<updated>2018-03-26T01:21:33.809Z</updated>
<content type="html"><![CDATA[<h2 id="Vue"><a href="#Vue" class="headerlink" title="Vue"></a>Vue</h2><ul><li>vue-cli</li><li>vue-template</li><li>poi</li></ul><h2 id="Node"><a href="#Node" class="headerlink" title="Node"></a>Node</h2><ul><li><a href="https://github.com/yeoman/generator-node" target="_blank" rel="noopener">https://github.com/yeoman/generator-node</a></li></ul><h2 id="综合资源"><a href="#综合资源" class="headerlink" title="综合资源"></a>综合资源</h2><ul><li><a href="http://www.boilrplate.com/language/nodejs" target="_blank" rel="noopener">BOILRPLATE</a> A curated directory of boilerplates to help you start your projects!</li><li><a href="http://yeoman.io/generators/" target="_blank" rel="noopener">http://yeoman.io/generators/</a></li></ul><h2 id="小程序"><a href="#小程序" class="headerlink" title="小程序"></a>小程序</h2><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2>]]></content>
<summary type="html">
<h2 id="Vue"><a href="#Vue" class="headerlink" title="Vue"></a>Vue</h2><ul>
<li>vue-cli</li>
<li>vue-template</li>
<li>poi</li>
</ul>
<h2 id
</summary>
<category term="Vue" scheme="http://huixisheng.github.io/tags/Vue/"/>
<category term="scaffold" scheme="http://huixisheng.github.io/tags/scaffold/"/>
<category term="startkit" scheme="http://huixisheng.github.io/tags/startkit/"/>
<category term="generator" scheme="http://huixisheng.github.io/tags/generator/"/>
<category term="boilrplate" scheme="http://huixisheng.github.io/tags/boilrplate/"/>
</entry>
<entry>
<title>es6相关资源记录</title>
<link href="http://huixisheng.github.io/awesome-es6/"/>
<id>http://huixisheng.github.io/awesome-es6/</id>
<published>2018-03-24T17:19:25.000Z</published>
<updated>2018-04-06T04:06:04.466Z</updated>
<content type="html"><![CDATA[<p>本文收集整理es6相关的资源。</p><a id="more"></a><ul><li><a href="http://es6-features.org/#Constants" target="_blank" rel="noopener">ECMAScript 6 — New Features: Overview & Comparison</a></li><li><a href="https://github.com/lukehoban/es6features" target="_blank" rel="noopener">Overview of ECMAScript 6 features</a></li><li><a href="https://es6.io/" target="_blank" rel="noopener">es6学习视频教程</a></li><li><a href="https://babeljs.io/learn-es2015/" target="_blank" rel="noopener">babel Learn ES2015</a></li><li><a href="http://devhints.cn/es6" target="_blank" rel="noopener">ES2015+ 速查表</a></li><li><a href="https://github.com/tc39/ecma262" target="_blank" rel="noopener">https://github.com/tc39/ecma262</a></li><li><a href="https://www.ecma-international.org/default.htm" target="_blank" rel="noopener">https://www.ecma-international.org/default.htm</a></li><li><a href="https://en.wikipedia.org/wiki/ECMAScript" target="_blank" rel="noopener">https://en.wikipedia.org/wiki/ECMAScript</a></li><li><a href="https://github.com/justjavac/programming-mindmap" target="_blank" rel="noopener">编程相关的思维导图-JavaScript 内置对象</a></li><li><a href="https://node.green/" target="_blank" rel="noopener">Nodejs 兼容性</a></li><li><a href="http://kangax.github.io/compat-table/es2016plus/" target="_blank" rel="noopener">浏览器兼容性表</a></li></ul>]]></content>
<summary type="html">
<p>本文收集整理es6相关的资源。</p>
</summary>
<category term="es6" scheme="http://huixisheng.github.io/tags/es6/"/>
<category term="文档" scheme="http://huixisheng.github.io/tags/%E6%96%87%E6%A1%A3/"/>
</entry>
<entry>
<title>碰到的问题简单记录</title>
<link href="http://huixisheng.github.io/some-problems/"/>
<id>http://huixisheng.github.io/some-problems/</id>
<published>2018-03-14T01:39:47.000Z</published>
<updated>2018-03-14T03:33:03.398Z</updated>
<content type="html"><![CDATA[<p>对碰到的问题做个简单的记录,方便后期汇总整理。大部分答案来源于互联网,感谢默默奉献的人,有些没有及时注明出处,后期就找不到相关的文章了,😓😓</p><h2 id="git-如何推送tag"><a href="#git-如何推送tag" class="headerlink" title="git 如何推送tag"></a>git 如何推送tag</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># 推送全部tag</span><br><span class="line">$ git push origin --tags</span><br><span class="line"># 推送指定tag</span><br><span class="line">$ git push tag 0.0.1</span><br></pre></td></tr></table></figure><ul><li><a href="http://yijiebuyi.com/blog/007269d04d5096d9397ce3daf9d84c48.html" target="_blank" rel="noopener">http://yijiebuyi.com/blog/007269d04d5096d9397ce3daf9d84c48.html</a></li><li><a href="http://blog.csdn.net/shines/article/details/8558293" target="_blank" rel="noopener">http://blog.csdn.net/shines/article/details/8558293</a></li><li><a href="http://80x86.io/post/how-to-push-and-delete-a-remote-git-tag" target="_blank" rel="noopener">http://80x86.io/post/how-to-push-and-delete-a-remote-git-tag</a></li></ul><h2 id="git设置远程origin"><a href="#git设置远程origin" class="headerlink" title="git设置远程origin"></a>git设置远程origin</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"># 修改已有的origin</span><br><span class="line">$ git remote set-url --delete https://github.com/CocoaPods/Specs.git</span><br><span class="line">$ git remote set-url --add origin https://github.com/CocoaPods/Specs.git</span><br><span class="line"></span><br><span class="line"># 空项目添加origin #</span><br><span class="line">$ git remote add origin https://github.com/CocoaPods/Specs.git</span><br><span class="line">$ git push -u origin master</span><br></pre></td></tr></table></figure><h2 id="tar压缩忽略指定目录"><a href="#tar压缩忽略指定目录" class="headerlink" title="tar压缩忽略指定目录"></a>tar压缩忽略指定目录</h2><blockquote><p>Mac下<code>--exclude</code>需要写在前面</p></blockquote><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ tar -czvf /Users/huixisheng/Desktop/j-excel.tar.gz --exclude j-excel/node_modules j-excel/</span><br></pre></td></tr></table></figure><h2 id="Nodejs守护进程"><a href="#Nodejs守护进程" class="headerlink" title="Nodejs守护进程"></a>Nodejs守护进程</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nohup node index.js > error.log 2>&1 &</span><br></pre></td></tr></table></figure><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">nohup: redirecting stderr to stdout</span><br><span class="line"></span><br><span class="line">$ > error.log 2>&1 &</span><br></pre></td></tr></table></figure><ul><li><a href="http://blog.csdn.net/iechenyb/article/details/76270595" target="_blank" rel="noopener">http://blog.csdn.net/iechenyb/article/details/76270595</a></li></ul><h2 id="centos7安装nodejs8-x"><a href="#centos7安装nodejs8-x" class="headerlink" title="centos7安装nodejs8.x"></a>centos7安装nodejs8.x</h2><p>直接安装过Node6.x,需要在机器上部署yapi。需要升级Node。</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"># 这个是否需要不确定</span><br><span class="line">$ yum clean all</span><br><span class="line">$ curl -sL https://rpm.nodesource.com/setup_8.x | bash -</span><br><span class="line"># 安装不了,需要卸载重新安装</span><br><span class="line">$ yum install -y nodejs</span><br><span class="line">$ yum erase nodejs npm -y</span><br><span class="line">$ yum install -y nodejs</span><br></pre></td></tr></table></figure><h2 id="更新日志"><a href="#更新日志" class="headerlink" title="更新日志"></a>更新日志</h2><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2>]]></content>
<summary type="html">
<p>对碰到的问题做个简单的记录,方便后期汇总整理。大部分答案来源于互联网,感谢默默奉献的人,有些没有及时注明出处,后期就找不到相关的文章了,😓😓</p>
<h2 id="git-如何推送tag"><a href="#git-如何推送tag" class="headerlin
</summary>
<category term="git" scheme="http://huixisheng.github.io/tags/git/"/>
<category term="Nodejs" scheme="http://huixisheng.github.io/tags/Nodejs/"/>
</entry>
<entry>
<title>无密码登录远程服务器</title>
<link href="http://huixisheng.github.io/ssh-with-no-pwd/"/>
<id>http://huixisheng.github.io/ssh-with-no-pwd/</id>
<published>2018-02-09T02:40:35.000Z</published>
<updated>2018-03-14T01:34:44.349Z</updated>
<content type="html"><![CDATA[<p>每次<code>ssh</code>连接都要输入密码,真的很麻烦。</p><p>[ykq@10-10-215-141 .ssh]$ ll<br>total 8<br>-rw-r–r– 1 ykq root 417 Aug 21 21:29 authorized_keys<br>-rw-r–r– 1 ykq root 1987 Feb 9 11:25 known_hosts</p><p> 20 vi /etc/ssh/ssh_config<br> 21 vi /etc/ssh/sshd_config<br> 22 sudo chmod 755 ~/webpack-mhome.json<br> 23 sudo chmod 777 ~/webpack-mhome.json<br> 24 vi /etc/ssh/sshd_config<br> 25 sudo vi /etc/ssh/sshd_config<br> 26 sudo service ssh restart<br> 27 which ssh<br> 28 sudo chown ykq ~/webpack-mhome.json<br> 29 sudo chown a+x ~/webpack-mhome.json<br> 30 sudo vi /etc/ssh/sshd_config</p><p> PasswordAuthentication yes</p><p>➜ ssh-copy-id -i ~/.ssh/motian-server.pub <a href="mailto:[email protected]" target="_blank" rel="noopener">[email protected]</a><br>/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/Users/huixisheng/.ssh/motian-server.pub”<br>/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed<br>/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys<br><a href="mailto:[email protected]" target="_blank" rel="noopener">[email protected]</a>‘s password:<br>/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory</p><p>Number of key(s) added: 1</p><p>Now try logging into the machine, with: “ssh <a href="mailto:'[email protected]" target="_blank" rel="noopener">'[email protected]</a>‘“<br>and check to make sure that only the key(s) you wanted were added.</p><p>Permission denied (publickey,gssapi-keyex,gssapi-with-mic).</p><h2 id="更新日志"><a href="#更新日志" class="headerlink" title="更新日志"></a>更新日志</h2><pre><code>ssh-keygen -t rsa -f ~/.ssh/github -C "emailssh-add ~/.ssh/githubhttp://www.html-js.com/article/2379</code></pre><p>sudo vim /etc/ssh/sshd_config<br>PubkeyAuthentication yes</p><p>PasswordAuthentication yes</p><p>Redirecting to /bin/systemctl restart ssh.service<br>Failed to restart ssh.service: Unit not found.</p><p>centos7下重启sshd服务的操作方法<br>在centos7下重启服务不再是 service 服务名称 动作 这样的方式的.而是:</p><p>systemctl 动作 服务名.service</p><ol><li>查看sshd服务是否启动了.</li></ol><p>systemctl status sshd.service</p><p>看到的这样的信息就可以确定是启动了.</p><ol><li>如果没有启动,则需要启动该服务:</li></ol><p>systemctl start sshd.service</p><ol><li>如果需要重启sshd服务可使得</li></ol><p>systemctl restart sshd.service</p><ol><li>设置为开机启动可使用:</li></ol><p>systemctl enable sshd.service</p><ul><li><a href="http://www.cnblogs.com/prettyisshit/p/5584558.html" target="_blank" rel="noopener">http://www.cnblogs.com/prettyisshit/p/5584558.html</a></li><li><a href="http://www.cnblogs.com/lovlos/p/6596796.html" target="_blank" rel="noopener">http://www.cnblogs.com/lovlos/p/6596796.html</a></li></ul><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html" target="_blank" rel="noopener">http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html</a></li><li><a href="https://www.w3ctech.com/topic/1602" target="_blank" rel="noopener">https://www.w3ctech.com/topic/1602</a></li><li><a href="https://segmentfault.com/a/1190000008479071" target="_blank" rel="noopener">https://segmentfault.com/a/1190000008479071</a></li><li><a href="https://stackoverflow.com/questions/19777357/getting-permission-denied-for-scp-over-ssh-server-to-local" target="_blank" rel="noopener">https://stackoverflow.com/questions/19777357/getting-permission-denied-for-scp-over-ssh-server-to-local</a></li><li><a href="http://www.worldhello.net/2010/04/08/1026.html" target="_blank" rel="noopener">http://www.worldhello.net/2010/04/08/1026.html</a></li><li><a href="https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/" target="_blank" rel="noopener">https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/</a></li><li><a href="https://gist.github.com/jexchan/2351996" target="_blank" rel="noopener">https://gist.github.com/jexchan/2351996</a></li><li><a href="https://help.github.com/articles/using-ssh-over-the-https-port/" target="_blank" rel="noopener">https://help.github.com/articles/using-ssh-over-the-https-port/</a></li><li><a href="http://blog.csdn.net/u012865381/article/details/78521087" target="_blank" rel="noopener">http://blog.csdn.net/u012865381/article/details/78521087</a></li><li><a href="https://help.aliyun.com/knowledge_detail/41487.html" target="_blank" rel="noopener">https://help.aliyun.com/knowledge_detail/41487.html</a></li><li><a href="http://blog.csdn.net/u013240609/article/details/78540795" target="_blank" rel="noopener">http://blog.csdn.net/u013240609/article/details/78540795</a></li></ul><p>用mac终端命令登录阿里云服务器,出现错误提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic).<br><a href="http://blog.csdn.net/gigijingjing/article/details/76726564" target="_blank" rel="noopener">http://blog.csdn.net/gigijingjing/article/details/76726564</a></p>]]></content>
<summary type="html">
<p>每次<code>ssh</code>连接都要输入密码,真的很麻烦。</p>
<p>[ykq@10-10-215-141 .ssh]$ ll<br>total 8<br>-rw-r–r– 1 ykq root 417 Aug 21 21:29 authorized_keys
</summary>
<category term="ssh" scheme="http://huixisheng.github.io/tags/ssh/"/>
</entry>
<entry>
<title>Uncaught SyntaxError: Use of const in strict mode. 报错解决方法记录</title>
<link href="http://huixisheng.github.io/webpack-syntaxerror-use-of-const-in-strict-mode/"/>
<id>http://huixisheng.github.io/webpack-syntaxerror-use-of-const-in-strict-mode/</id>
<published>2018-02-07T05:37:51.000Z</published>
<updated>2018-03-14T01:17:05.569Z</updated>
<content type="html"><![CDATA[<p>项目中用<code>vue</code>,<code>vue-router</code>实现的页面在该设备下<code>"Mozilla/5.0 (Linux; Android 5.1.1; YQ601 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36,Cosmeapp/9.1.0"</code>空白。其他现有设备是正常的。想到可以连接真机设备进行调试,根据报错定位到相关的代码有问题,还是资源加载异常(比如cdn的资源在某些环境下异常)。然而连接<code>usb</code>无发审查元素。于是跑源码在本地环境下进行局域调试,结果页面也是空白。在页面注入<code>weinre</code>。有报错,但是不要定位,只是显示了报错。这里不得不吐槽下<code>weinre</code>确实不怎么好用。有看到过资料安卓的真机调试是需要客户端支持的。</p><p><code>Uncaught SyntaxError: Use of const in strict mode.</code></p><p><a href="mailto:node_modules/[email protected]" target="_blank" rel="noopener">node_modules/[email protected]</a>@strip-ansi/index.js</p><p>// ‘use strict’;<br>// var ansiRegex = require(‘ansi-regex’);</p><p>// module.exports = input => typeof input === ‘string’ ? input.replace(ansiRegex(), ‘’) : input;</p><p>‘use strict’;<br>var ansiRegex = require(‘ansi-regex’)();</p><p>module.exports = function (str) {<br> return typeof str === ‘string’ ? str.replace(ansiRegex, ‘’) : str;<br>};</p><p>// <a href="mailto:node_modules/[email protected]" target="_blank" rel="noopener">node_modules/[email protected]</a>@ansi-regex/index.js</p><p>‘use strict’;</p><p>module.exports = function() {<br> // const -> var<br> var pattern = [<br> ‘[\u001B\u009B][<a href="">\</a>#;?]<em>(?:(?:(?:[a-zA-Z\d]</em>(?:;[a-zA-Z\d]<em>)</em>)?\u0007)’,<br> ‘(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PRZcf-ntqry=><~]))’<br> ].join(‘|’);</p><pre><code>return new RegExp(pattern, 'g');</code></pre><p>};</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="https://github.com/mrdulin/blog/issues/35" target="_blank" rel="noopener">https://github.com/mrdulin/blog/issues/35</a></li><li><a href="https://stackoverflow.com/questions/36789889/syntaxerror-use-of-const-in-strict-mode" target="_blank" rel="noopener">https://stackoverflow.com/questions/36789889/syntaxerror-use-of-const-in-strict-mode</a></li><li><a href="http://www.mind-geek.net/javascript/syntaxerror-use-of-const-in-strict-mode/" target="_blank" rel="noopener">http://www.mind-geek.net/javascript/syntaxerror-use-of-const-in-strict-mode/</a></li><li><a href="https://segmentfault.com/q/1010000007415253" target="_blank" rel="noopener">https://segmentfault.com/q/1010000007415253</a></li><li>移动端真机调试指南 <a href="https://aotu.io/notes/2017/02/24/Mobile-debug/index.html" target="_blank" rel="noopener">https://aotu.io/notes/2017/02/24/Mobile-debug/index.html</a></li></ul>]]></content>
<summary type="html">
<p>项目中用<code>vue</code>,<code>vue-router</code>实现的页面在该设备下<code>&quot;Mozilla/5.0 (Linux; Android 5.1.1; YQ601 Build/LMY47V) AppleWebKit/537.
</summary>
<category term="webpack" scheme="http://huixisheng.github.io/tags/webpack/"/>
</entry>
<entry>
<title>前端静态资源CDN公共库整理</title>
<link href="http://huixisheng.github.io/cdn/"/>
<id>http://huixisheng.github.io/cdn/</id>
<published>2017-12-02T09:06:42.000Z</published>
<updated>2017-12-03T07:33:03.512Z</updated>
<content type="html"><![CDATA[<p>开放的CDN最好是速度快,库全,支持快速检索。本文将列举国内外常用的前端静态资源CDN公共库。用开发的CDN写写demo,体验新框架的语法,但是用到生成环境,还需谨慎。虽然方便,但是万一库挂了,被人恶意注意代码,用多了影响还是很大。</p><a id="more"></a><h2 id="jsDelivr"><a href="#jsDelivr" class="headerlink" title="jsDelivr"></a>jsDelivr</h2><blockquote><p>Open Source CDN free, fast, and reliable</p></blockquote><p>官方网址: <a href="https://www.jsdelivr.com/" target="_blank" rel="noopener">https://www.jsdelivr.com/</a><br>GitHub仓库:<a href="https://github.com/jsdelivr/jsdelivr" target="_blank" rel="noopener">https://github.com/jsdelivr/jsdelivr</a></p><p>支持<code>npm</code>仓库资源同步, <code>github</code> 资源同步,还支持<code>WordPress.org plugins</code>。就目前体验而言,速度还不错。提供相关的<a href="https://www.cdnperf.com/" target="_blank" rel="noopener">CDN分析工具</a>,支持combo合并,自动压缩资源,支持SRI。还有<a href="https://www.dnsperf.com/" target="_blank" rel="noopener">DNS分析工具</a> 功能不要太强大,如果访问速度不会因为xx被阻拦在门口,绝对是最佳选择。五星好评推荐。</p><h2 id="BootCDN"><a href="#BootCDN" class="headerlink" title="BootCDN"></a>BootCDN</h2><blockquote><p>稳定、快速、免费的前端开源项目 CDN 加速服务。截止写这个文章共收录了 3245 个前端开源项目</p></blockquote><p>官方网址: <a href="http://www.bootcdn.cn/" target="_blank" rel="noopener">http://www.bootcdn.cn/</a></p><p>支持检索,速度还不错,但是就是相比<a href="https://unpkg.com/#/" target="_blank" rel="noopener">unpkg.com</a>资源欠缺。</p><h2 id="unpkg-com"><a href="#unpkg-com" class="headerlink" title="unpkg.com"></a>unpkg.com</h2><p>官方网址: <a href="https://unpkg.com/#/" target="_blank" rel="noopener">https://unpkg.com/#/</a></p><p>资源绝对丰富,同步npmjs.com。但是速度不行,可惜。同时不支持检索,当然检索可以用<a href="https://www.npmjs.com/" target="_blank" rel="noopener">https://www.npmjs.com/</a> 搜索替代。</p><h2 id="css-net"><a href="#css-net" class="headerlink" title="css.net"></a>css.net</h2><blockquote><p>常用前端公共库 CDN 服务<br>常用前端公共库 & 和谐使用 Google 公共库、字体库的方法</p></blockquote><p>官方网址: <a href="https://css.net/" target="_blank" rel="noopener">https://css.net/</a></p><h2 id="cdnjs-com"><a href="#cdnjs-com" class="headerlink" title="cdnjs.com"></a>cdnjs.com</h2><p>官网网址: <a href="http://cdnjs.com/" target="_blank" rel="noopener">http://cdnjs.com/</a></p><blockquote><p>静态资源<code>CDN</code>公共库是指一些服务商将我们常用的前端资源<code>JavaScript</code>,<code>CSS</code> 等前端静态资源存放在网上,方便直接引用,并且提供<code>CDN</code>加速服务,这样一来可以让用户加速访问这些资源,二来还可节约自己服务器的流量。本文介绍常用的前端静态资源CDN公共库。</p></blockquote><h2 id="什么是cdn"><a href="#什么是cdn" class="headerlink" title="什么是cdn"></a>什么是cdn</h2><p>CDN的全称是<code>Content Delivery Network</code>,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。</p><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><ul><li><a href="http://jscdn.upai.com/" target="_blank" rel="noopener">又拍云JS库加速服务</a>资源比较少</li><li><a href="http://staticfile.org/" target="_blank" rel="noopener">开放静态文件 CDN staticfile</a>,<a href="https://github.com/staticfile/static" target="_blank" rel="noopener">七牛云存储提供支持 GitHub</a></li><li><a href="http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs" target="_blank" rel="noopener">百度开发者中心CDN公共库</a></li><li><a href="http://cdn.code.baidu.com/" target="_blank" rel="noopener">百度静态资源公共库</a>,<a href="https://github.com/Clouda-team/baiducdnstatic" target="_blank" rel="noopener">github地址</a></li><li><a href="http://lib.sinaapp.com/" target="_blank" rel="noopener">新浪</a></li><li><a href="http://libs.useso.com/" target="_blank" rel="noopener">360网站卫士常用前端公共库CDN服务资源丰富</a> 提供<a href="http://ajax.googleapis.com" target="_blank" rel="noopener">Google公共库</a>、<a href="http://fonts.googleapis.com" target="_blank" rel="noopener">Google字体库</a>替换服务有时在国外无法加载,导致网页加载被阻塞。推荐一个插件<a href="https://github.com/jiacai2050/gooreplacer#diy" target="_blank" rel="noopener">gooreplacer</a>一个用于替换网页中Google Fonts,API,themes</li><li><a href="https://developers.google.com/speed/libraries/devguide?csw=1" target="_blank" rel="noopener">Google CDN</a></li><li><a href="http://www.asp.net/ajaxlibrary/cdn.ashx" target="_blank" rel="noopener">微软CDN</a></li></ul><h2 id="2017-12-02-补充"><a href="#2017-12-02-补充" class="headerlink" title="2017-12-02 补充"></a>2017-12-02 补充</h2><p>知乎做的<a href="https://unpkg.com/#/" target="_blank" rel="noopener">https://unpkg.com/#/</a>的镜像 unpkg.zhimg.com。</p><p>饿了么做的<a href="https://unpkg.com/#/" target="_blank" rel="noopener">https://unpkg.com/#/</a>的镜像<br>npm.elemecdn.com。例 <code>https://npm.elemecdn.com/[email protected]/dist/jquery.min.js</code></p><p>饿了么做的<a href="https://unpkg.com/#/" target="_blank" rel="noopener">https://unpkg.com/#/</a>的镜像</p><p>例外还有github.elemecdn.com。例如 <a href="https://github.elemecdn.com/eleme/ubt-web/1.3.4/ubt.min.js。规则没有琢磨透。" target="_blank" rel="noopener">https://github.elemecdn.com/eleme/ubt-web/1.3.4/ubt.min.js。规则没有琢磨透。</a></p><p>以上并没有开源,没有开发访问。不建议使用。</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="http://baike.baidu.com/view/8689800.htm?fromId=21895&redirected=seachword" target="_blank" rel="noopener">cdn 百度百科</a></li><li><a href="http://www.zhihu.com/question/20227463" target="_blank" rel="noopener">国内有哪些靠谱的 Javascript 库 CDN可用?</a></li><li><a href="https://segmentfault.com/a/1190000000311560" target="_blank" rel="noopener">程序员福利:常用的 JavaScript 库 CDN 加速服务</a></li><li><a href="https://zhanqi.net/post/170425/" target="_blank" rel="noopener">https://zhanqi.net/post/170425/</a></li><li><a href="https://www.zhihu.com/question/20227463" target="_blank" rel="noopener">https://www.zhihu.com/question/20227463</a></li><li><a href="http://dyhdyh.com/archives/22.html" target="_blank" rel="noopener">http://dyhdyh.com/archives/22.html</a></li></ul><h2 id="更新历史"><a href="#更新历史" class="headerlink" title="更新历史"></a>更新历史</h2><p>2016-10-21</p><ul><li>合并<a href="https://github.com/huixisheng/lab/issues/1" target="_blank" rel="noopener">issue</a>整理的内容</li></ul>]]></content>
<summary type="html">
<p>开放的CDN最好是速度快,库全,支持快速检索。本文将列举国内外常用的前端静态资源CDN公共库。用开发的CDN写写demo,体验新框架的语法,但是用到生成环境,还需谨慎。虽然方便,但是万一库挂了,被人恶意注意代码,用多了影响还是很大。</p>
</summary>
<category term="前端工具" scheme="http://huixisheng.github.io/tags/%E5%89%8D%E7%AB%AF%E5%B7%A5%E5%85%B7/"/>
<category term="cdn" scheme="http://huixisheng.github.io/tags/cdn/"/>
<category term="前端资源" scheme="http://huixisheng.github.io/tags/%E5%89%8D%E7%AB%AF%E8%B5%84%E6%BA%90/"/>
</entry>
</feed>