cainiaoblog 23.2.348 → 23.2.349

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/{app/manual.html → manual.html} +1 -1
  2. package/package.json +1 -1
  3. package/CNAME +0 -1
  4. package/MP_verify_o6dHCK5mIkxNpzvZ.txt +0 -1
  5. package/README.md +0 -8
  6. package/about/index.html +0 -55
  7. package/ads.txt +0 -1
  8. package/archives/2018/index.html +0 -48
  9. package/archives/2019/index.html +0 -48
  10. package/archives/2019/page/2/index.html +0 -48
  11. package/archives/2020/index.html +0 -48
  12. package/archives/2021/index.html +0 -48
  13. package/archives/2022/index.html +0 -48
  14. package/archives/2023/index.html +0 -48
  15. package/archives/index.html +0 -48
  16. package/archives/page/2/index.html +0 -48
  17. package/archives/page/3/index.html +0 -48
  18. package/article/10047.html +0 -148
  19. package/article/10164.html +0 -65
  20. package/article/10624.html +0 -436
  21. package/article/10745.html +0 -586
  22. package/article/11674.html +0 -71
  23. package/article/11939.html +0 -72
  24. package/article/12238.html +0 -86
  25. package/article/1230.html +0 -533
  26. package/article/13265.html +0 -69
  27. package/article/13823.html +0 -78
  28. package/article/14125.html +0 -72
  29. package/article/14192.html +0 -561
  30. package/article/14375.html +0 -85
  31. package/article/14744.html +0 -83
  32. package/article/14936.html +0 -451
  33. package/article/1518.html +0 -250
  34. package/article/15428.html +0 -71
  35. package/article/15518.html +0 -288
  36. package/article/15569.html +0 -418
  37. package/article/1566.html +0 -122
  38. package/article/16017.html +0 -156
  39. package/article/16947.html +0 -440
  40. package/article/17096.html +0 -82
  41. package/article/17246.html +0 -89
  42. package/article/17575.html +0 -350
  43. package/article/179.html +0 -757
  44. package/article/18039.html +0 -233
  45. package/article/18071.html +0 -375
  46. package/article/18142.html +0 -71
  47. package/article/19909.html +0 -160
  48. package/article/20014.html +0 -89
  49. package/article/20021.html +0 -389
  50. package/article/20037.html +0 -280
  51. package/article/20056.html +0 -95
  52. package/article/20093.html +0 -404
  53. package/article/2021.html +0 -607
  54. package/article/20459.html +0 -115
  55. package/article/20613.html +0 -263
  56. package/article/20635.html +0 -71
  57. package/article/21317.html +0 -71
  58. package/article/21320.html +0 -90
  59. package/article/21782.html +0 -548
  60. package/article/22230.html +0 -435
  61. package/article/22237.html +0 -347
  62. package/article/22398.html +0 -109
  63. package/article/22422.html +0 -270
  64. package/article/22565.html +0 -300
  65. package/article/23046.html +0 -250
  66. package/article/23083.html +0 -215
  67. package/article/23195.html +0 -297
  68. package/article/23301.html +0 -835
  69. package/article/23589.html +0 -285
  70. package/article/23655.html +0 -338
  71. package/article/23864.html +0 -76
  72. package/article/23914.html +0 -96
  73. package/article/24169.html +0 -135
  74. package/article/24581.html +0 -349
  75. package/article/2475.html +0 -500
  76. package/article/24826.html +0 -77
  77. package/article/24924.html +0 -247
  78. package/article/25164.html +0 -1495
  79. package/article/25318.html +0 -394
  80. package/article/25710.html +0 -1129
  81. package/article/25734.html +0 -83
  82. package/article/26083.html +0 -174
  83. package/article/26147.html +0 -283
  84. package/article/26291.html +0 -110
  85. package/article/26354.html +0 -71
  86. package/article/26624.html +0 -145
  87. package/article/26639.html +0 -298
  88. package/article/26850.html +0 -138
  89. package/article/26940.html +0 -258
  90. package/article/27796.html +0 -190
  91. package/article/27800.html +0 -161
  92. package/article/28963.html +0 -159
  93. package/article/28976.html +0 -247
  94. package/article/29042.html +0 -72
  95. package/article/29596.html +0 -81
  96. package/article/29619.html +0 -183
  97. package/article/29623.html +0 -329
  98. package/article/29829.html +0 -205
  99. package/article/29abbd1c.html +0 -112
  100. package/article/30215.html +0 -178
  101. package/article/30552.html +0 -78
  102. package/article/30818.html +0 -201
  103. package/article/31330.html +0 -364
  104. package/article/3154.html +0 -577
  105. package/article/31695.html +0 -348
  106. package/article/31826.html +0 -71
  107. package/article/31843.html +0 -132
  108. package/article/32280.html +0 -212
  109. package/article/32431.html +0 -74
  110. package/article/32443.html +0 -72
  111. package/article/32732.html +0 -122
  112. package/article/3286.html +0 -251
  113. package/article/32960.html +0 -198
  114. package/article/33713.html +0 -72
  115. package/article/33899.html +0 -615
  116. package/article/34351.html +0 -74
  117. package/article/34372.html +0 -89
  118. package/article/34410.html +0 -74
  119. package/article/34431.html +0 -118
  120. package/article/3447.html +0 -75
  121. package/article/34474.html +0 -142
  122. package/article/34871.html +0 -147
  123. package/article/35397.html +0 -175
  124. package/article/3544.html +0 -199
  125. package/article/35503.html +0 -115
  126. package/article/35624.html +0 -84
  127. package/article/35697.html +0 -384
  128. package/article/35863.html +0 -73
  129. package/article/36037.html +0 -253
  130. package/article/36118.html +0 -71
  131. package/article/3621.html +0 -119
  132. package/article/36251.html +0 -296
  133. package/article/36642.html +0 -352
  134. package/article/37102.html +0 -763
  135. package/article/37336.html +0 -351
  136. package/article/37351.html +0 -89
  137. package/article/3760.html +0 -294
  138. package/article/37749.html +0 -75
  139. package/article/37789.html +0 -83
  140. package/article/38005.html +0 -765
  141. package/article/38009.html +0 -284
  142. package/article/38269.html +0 -194
  143. package/article/38344.html +0 -88
  144. package/article/38359.html +0 -334
  145. package/article/38423.html +0 -379
  146. package/article/38530.html +0 -213
  147. package/article/38743.html +0 -268
  148. package/article/38753.html +0 -204
  149. package/article/38881.html +0 -71
  150. package/article/39087.html +0 -414
  151. package/article/39309.html +0 -84
  152. package/article/39486.html +0 -73
  153. package/article/39637.html +0 -306
  154. package/article/39839.html +0 -72
  155. package/article/39937.html +0 -152
  156. package/article/39970.html +0 -71
  157. package/article/402.html +0 -559
  158. package/article/40698.html +0 -71
  159. package/article/40811.html +0 -71
  160. package/article/40964.html +0 -462
  161. package/article/41011.html +0 -322
  162. package/article/41152.html +0 -78
  163. package/article/41696.html +0 -71
  164. package/article/41717.html +0 -281
  165. package/article/41777.html +0 -149
  166. package/article/419.html +0 -985
  167. package/article/4233.html +0 -136
  168. package/article/4292.html +0 -86
  169. package/article/43302.html +0 -96
  170. package/article/43397.html +0 -106
  171. package/article/43724.html +0 -281
  172. package/article/43999.html +0 -224
  173. package/article/44426.html +0 -77
  174. package/article/44964.html +0 -137
  175. package/article/45004.html +0 -123
  176. package/article/4510.html +0 -83
  177. package/article/45156.html +0 -320
  178. package/article/45157.html +0 -52
  179. package/article/45267.html +0 -87
  180. package/article/45641.html +0 -207
  181. package/article/45960.html +0 -75
  182. package/article/46100.html +0 -1262
  183. package/article/46366.html +0 -74
  184. package/article/46771.html +0 -96
  185. package/article/46911.html +0 -517
  186. package/article/46948.html +0 -137
  187. package/article/46ee4850.html +0 -349
  188. package/article/47019.html +0 -84
  189. package/article/47532.html +0 -94
  190. package/article/4783.html +0 -429
  191. package/article/47972.html +0 -72
  192. package/article/48216.html +0 -127
  193. package/article/48252.html +0 -185
  194. package/article/48520.html +0 -74
  195. package/article/48722.html +0 -75
  196. package/article/48807.html +0 -99
  197. package/article/49126.html +0 -323
  198. package/article/50001.html +0 -88
  199. package/article/50058.html +0 -151
  200. package/article/50343.html +0 -410
  201. package/article/50510.html +0 -82
  202. package/article/51082.html +0 -98
  203. package/article/51677.html +0 -111
  204. package/article/5204.html +0 -1085
  205. package/article/52500.html +0 -538
  206. package/article/52689.html +0 -259
  207. package/article/52877.html +0 -569
  208. package/article/53125.html +0 -191
  209. package/article/53428.html +0 -251
  210. package/article/53524.html +0 -74
  211. package/article/53698.html +0 -322
  212. package/article/53803e6.html +0 -93
  213. package/article/53924.html +0 -291
  214. package/article/53962.html +0 -253
  215. package/article/54006.html +0 -71
  216. package/article/54018.html +0 -88
  217. package/article/54161.html +0 -83
  218. package/article/54178.html +0 -69
  219. package/article/54258.html +0 -327
  220. package/article/54295.html +0 -214
  221. package/article/54313.html +0 -1976
  222. package/article/54351.html +0 -90
  223. package/article/54604.html +0 -80
  224. package/article/54632.html +0 -71
  225. package/article/54912.html +0 -756
  226. package/article/54918.html +0 -136
  227. package/article/55119.html +0 -136
  228. package/article/55756.html +0 -118
  229. package/article/55769.html +0 -136
  230. package/article/55870.html +0 -161
  231. package/article/56139.html +0 -92
  232. package/article/56557.html +0 -69
  233. package/article/56604.html +0 -69
  234. package/article/56816.html +0 -266
  235. package/article/56926.html +0 -153
  236. package/article/57747.html +0 -409
  237. package/article/57965.html +0 -475
  238. package/article/58816.html +0 -78
  239. package/article/59059.html +0 -435
  240. package/article/59095.html +0 -350
  241. package/article/59349.html +0 -244
  242. package/article/59402.html +0 -216
  243. package/article/59448.html +0 -55
  244. package/article/59870.html +0 -94
  245. package/article/59877.html +0 -208
  246. package/article/5dbb6f41.html +0 -86
  247. package/article/6008.html +0 -75
  248. package/article/60327.html +0 -126
  249. package/article/6035.html +0 -76
  250. package/article/60428.html +0 -71
  251. package/article/60544.html +0 -128
  252. package/article/61319.html +0 -95
  253. package/article/61367.html +0 -93
  254. package/article/624d1918.html +0 -292
  255. package/article/62543.html +0 -71
  256. package/article/62887.html +0 -169
  257. package/article/63074.html +0 -120
  258. package/article/63266.html +0 -311
  259. package/article/63351.html +0 -74
  260. package/article/63542.html +0 -104
  261. package/article/63824.html +0 -275
  262. package/article/64051.html +0 -653
  263. package/article/64189b69.html +0 -72
  264. package/article/64354.html +0 -75
  265. package/article/64869.html +0 -79
  266. package/article/64923.html +0 -596
  267. package/article/65128.html +0 -95
  268. package/article/65295.html +0 -79
  269. package/article/6888.html +0 -75
  270. package/article/7065.html +0 -84
  271. package/article/7455.html +0 -85
  272. package/article/7a3ef8f.html +0 -315
  273. package/article/8140.html +0 -188
  274. package/article/8190.html +0 -85
  275. package/article/8225.html +0 -78
  276. package/article/84c9ccd6.html +0 -159
  277. package/article/8f9a9ae3.html +0 -82
  278. package/article/9174.html +0 -73
  279. package/article/9738.html +0 -294
  280. package/article/9c3c56c.html +0 -682
  281. package/article/a4145266.html +0 -71
  282. package/article/bedea419.html +0 -72
  283. package/article/bf7e7421.html +0 -78
  284. package/article/c1867fbf.html +0 -103
  285. package/article/dcb0db28.html +0 -76
  286. package/article/fc3b727a.html +0 -79
  287. package/atom.xml +0 -441
  288. package/baidusitemap.xml +0 -1079
  289. package/blocks/dns.txt +0 -291
  290. package/blocks/filter.txt +0 -1068
  291. package/blocks/script.js +0 -42
  292. package/categories/CDN/index.html +0 -48
  293. package/categories/IDE/index.html +0 -48
  294. package/categories/git/index.html +0 -48
  295. package/categories/hexo/index.html +0 -48
  296. package/categories//345/205/254/345/205/261/350/212/202/346/227/245/index.html +0 -48
  297. package/categories//345/210/206/344/272/253/index.html +0 -48
  298. package/categories//345/211/215/347/253/257/index.html +0 -48
  299. package/categories//345/211/215/347/253/257/page/2/index.html +0 -48
  300. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250/index.html +0 -48
  301. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250//347/275/221/347/273/234/345/215/217/350/256/256/index.html +0 -48
  302. package/categories//345/215/232/345/256/242/index.html +0 -48
  303. package/categories//345/267/245/345/205/267/index.html +0 -48
  304. package/categories//345/271/277/345/221/212/350/277/207/346/273/244/index.html +0 -48
  305. package/categories//345/271/277/345/221/212/350/277/207/346/273/244//345/275/261/350/247/206/347/224/265/350/247/206/345/260/217/350/257/264/346/274/253/347/224/273/350/265/204/350/256/257/351/237/263/344/271/220/index.html +0 -48
  306. package/categories//345/271/277/345/221/212/350/277/207/346/273/244//350/247/206/351/242/221/347/224/265/350/247/206/345/260/217/350/257/264/346/274/253/347/224/273/350/265/204/350/256/257/351/237/263/344/271/220/index.html +0 -48
  307. package/categories//346/255/243/345/210/231/index.html +0 -48
  308. package/categories//346/265/217/350/247/210/345/231/250/index.html +0 -48
  309. package/categories//347/256/227/346/263/225/index.html +0 -48
  310. package/categories//350/265/204/350/256/257/index.html +0 -48
  311. package/categories//350/275/273/346/235/276/344/270/200/345/210/273/index.html +0 -48
  312. package/cdn/css/font-awesome.min.css +0 -4
  313. package/cdn/css/grids-responsive-min.css +0 -7
  314. package/cdn/css/normalize.css +0 -349
  315. package/cdn/css/pure-min.css +0 -11
  316. package/cdn/fonts/fontawesome-webfont.eot +0 -0
  317. package/cdn/fonts/fontawesome-webfont.svg +0 -2671
  318. package/cdn/fonts/fontawesome-webfont.ttf +0 -0
  319. package/cdn/fonts/fontawesome-webfont.woff +0 -0
  320. package/cdn/fonts/fontawesome-webfont.woff2 +0 -0
  321. package/cdn/js/Valine.min.js +0 -17
  322. package/cdn/js/canvas-nest.js +0 -1
  323. package/cdn/js/clipboard.min.js +0 -7
  324. package/cdn/js/crypto-js.js +0 -25
  325. package/cdn/js/jquery.min.js +0 -2
  326. package/css/default.css +0 -1144
  327. package/css/donate.css +0 -338
  328. package/css/hbe.style.css +0 -749
  329. package/css/style.css +0 -2095
  330. package/donate/index.html +0 -40
  331. package/google917dcf72f6e5c7f5.html +0 -1
  332. package/guestbook/index.html +0 -68
  333. package/hosts/ads.txt +0 -149
  334. package/hosts/flash.txt +0 -9
  335. package/hosts/github.txt +0 -15
  336. package/hosts/google.txt +0 -16936
  337. package/hosts/winrar.txt +0 -2
  338. package/img/alipay.svg +0 -46
  339. package/img/bitcoin.svg +0 -135
  340. package/img/blog.ico +0 -0
  341. package/img/blog.png +0 -0
  342. package/img/gaba.png +0 -0
  343. package/img/github.svg +0 -1
  344. package/img/like.svg +0 -1
  345. package/img/mp-mini.jpg +0 -0
  346. package/img/mp.png +0 -0
  347. package/img/paypal.svg +0 -63
  348. package/img/upy_logo.svg +0 -59
  349. package/img/wechat.svg +0 -49
  350. package/index.html +0 -48
  351. package/jd_root.txt +0 -1
  352. package/js/codeblock-resizer.js +0 -51
  353. package/js/dark.js +0 -12
  354. package/js/donate.js +0 -87
  355. package/js/fixedPage.js +0 -110
  356. package/js/gitment.browser.js +0 -3751
  357. package/js/search.js +0 -86
  358. package/js/share.js +0 -60
  359. package/js/smartresize.js +0 -32
  360. package/js/totop.js +0 -12
  361. package/kankan/index.html +0 -1323
  362. package/lib/hbe.js +0 -297
  363. package/page/10/index.html +0 -49
  364. package/page/11/index.html +0 -59
  365. package/page/12/index.html +0 -67
  366. package/page/13/index.html +0 -63
  367. package/page/14/index.html +0 -66
  368. package/page/15/index.html +0 -60
  369. package/page/16/index.html +0 -60
  370. package/page/17/index.html +0 -62
  371. package/page/18/index.html +0 -61
  372. package/page/19/index.html +0 -58
  373. package/page/2/index.html +0 -48
  374. package/page/20/index.html +0 -57
  375. package/page/21/index.html +0 -61
  376. package/page/22/index.html +0 -55
  377. package/page/23/index.html +0 -64
  378. package/page/24/index.html +0 -60
  379. package/page/25/index.html +0 -58
  380. package/page/26/index.html +0 -48
  381. package/page/27/index.html +0 -58
  382. package/page/3/index.html +0 -48
  383. package/page/4/index.html +0 -48
  384. package/page/5/index.html +0 -51
  385. package/page/6/index.html +0 -51
  386. package/page/7/index.html +0 -51
  387. package/page/8/index.html +0 -53
  388. package/page/9/index.html +0 -48
  389. package/randomcall/README.html +0 -1
  390. package/randomcall/lucker.html +0 -290
  391. package/randomcall/lucky.png +0 -0
  392. package/robots.txt +0 -22
  393. package/search.xml +0 -6728
  394. package/sitemap.xml +0 -2694
  395. package/tags//345/216/237/345/210/233/index.html +0 -48
  396. package/tags//345/250/261/344/271/220/index.html +0 -48
  397. package/tags//346/211/213/345/206/231/index.html +0 -48
  398. package/tags//347/226/253/346/203/205/index.html +0 -48
  399. package/tags//350/275/254/350/275/275/index.html +0 -48
  400. package/tags//350/275/254/350/275/275/page/2/index.html +0 -48
  401. package/v.html +0 -22
  402. /package/{appConfigs/config → config} +0 -0
  403. /package/{extConfigs/extension.json → extension.json} +0 -0
@@ -1,352 +0,0 @@
1
- <!DOCTYPE html><html lang="zh-CN" data-dark><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="前端壹菜鸟,记录工作难题,关注前端知识,收集精彩博文,做技术的搬运工"><meta name="msvalidate.01" content="0FE4D8B3381D3D87088996B886E1E2BD"><title>Webpack多入口文件、热更新等体验 | 前端壹菜鸟</title><link rel="stylesheet" type="text/css" href="//unpkg.com/cainiaoblog@latest/css/style.css"><link rel="stylesheet" type="text/css" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/cainiaoblog@latest/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/normalize.css@latest/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/pure-min.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/grids-responsive-min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"><link rel="icon" mask="" sizes="any" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="Shortcut Icon" type="image/x-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="apple-touch-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="apple-touch-icon-precomposed" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="alternate" type="application/atom+xml" href="/atom.xml"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8385136408348258"></script><script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script><script>(function(){
2
- var bp = document.createElement('script');
3
- var curProtocol = window.location.protocol.split(':')[0];
4
- if (curProtocol === 'https'){
5
- bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
6
- }
7
- else{
8
- bp.src = 'http://push.zhanzhang.baidu.com/push.js';
9
- }
10
- var s = document.getElementsByTagName("script")[0];
11
- s.parentNode.insertBefore(bp, s);
12
- })();
13
- </script><script>(function(){
14
- var src = 'https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f28525f2db83acfaaf6e696dba';
15
- document.write('<script src="' + src + '" id="sozz"><\/script>');
16
- })();
17
- </script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
18
- </script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
19
- </script><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">Webpack多入口文件、热更新等体验</h1><div class="post-meta"><span class="date">2019-12-12</span><span> | </span><span class="tag"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 2k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 8</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/36642.html#vcomment"><span class="waline-comment-count" data-path="/article/36642.html"></span><span> 条评论</span></a><div class="post-content"><p><code>原文地址:https://www.cnblogs.com/cqhaibin/p/6581308.html</code></p>
20
- <p>Webpack现今流行的前端打包工具,今儿本人也来分享下自己学习体验。</p>
21
- <span id="more"></span>
22
-
23
- <h2 id="一、html-webpack-plugin"><a href="#一、html-webpack-plugin" class="headerlink" title="一、html-webpack-plugin"></a>一、html-webpack-plugin</h2><p>实现html模板文件的解析与生成</p>
24
- <ul>
25
- <li>在plugins加入HtmlWebpackPlugin的配置,如果是多个入口文件,则需要对应加入多个HtmlWebpackPlugin功能。</li>
26
- </ul>
27
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
28
- <pre><code>var HtmlWebpackPlugin = require(&#39;html-webpack-plugin&#39;);
29
- entry:&#123;
30
- ma: &#39;./src/ma&#39;, /** .:必须要,表示运行时的根目录,否则找不到文件,且不报错 */
31
- mb: &#39;./src/mb&#39;
32
- &#125;,
33
- output: &#123;
34
- path: &#39;./dist&#39;,
35
- filename: &#39;[name].js&#39;
36
- &#125;,
37
- plugins: [
38
- new HtmlWebpackPlugin(&#123; //可以模板,直接引用files对象,是webpack中state对象
39
- title: &#39;模板A&#39;,
40
- chunks: [&#39;ma&#39;]
41
- &#125;),
42
- new HtmlWebpackPlugin(&#123;
43
- filename: &#39;mb.html&#39;,
44
- title: &#39;模板B&#39;,
45
- chunks: [&#39;mb&#39;]
46
- &#125;)
47
- ]
48
- </code></pre>
49
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
50
- <p>如上代码所示:</p>
51
- <ul>
52
- <li><p>两个入口文件,ma与mb,所以配置了两个HtmlWebpackPlugin实例</p>
53
- </li>
54
- <li><p>HtmlWebpackPlugin实例配置项:</p>
55
- </li>
56
- <li><p>title:模板title</p>
57
- </li>
58
- <li><p>filename:输出的html文件名称</p>
59
- </li>
60
- <li><p>chunks:包含的文件,可以entry和其他模块chunk的模块,插件导入到 模板时 没有排序,但都是。</p>
61
- </li>
62
- <li><p>excludeChunks:被排除的模块</p>
63
- </li>
64
- <li><p>chunksSortMode:添加到页面时模块的排序 none|default|function</p>
65
- </li>
66
- <li><p>template:模板文件路径所在位置</p>
67
- </li>
68
- <li><p>templateContent:一个函数,使用编程语言创建模板</p>
69
- </li>
70
- <li><p>inject:js插入位置:body, head</p>
71
- </li>
72
- <li><p>模板可以访问的配置项</p>
73
- </li>
74
- <li><p>files:为webpack的stats项,可以在模板文件中使用或者</p>
75
- </li>
76
- <li><p>webpackConfig:webpackConfig的配置项</p>
77
- </li>
78
- <li><p>options:在模板文件中可以获取的webpack配置项。</p>
79
- </li>
80
- <li><p>HtmlWebpackPlugin的事件使用:</p>
81
- </li>
82
- </ul>
83
- <p>事件名称时机同步&#x2F;异步html-webapck-plugin-before-html-generation生成htmlPluginData之前触发asynchtml-webpack-plugin-before-html-processinghtmlPluginData插入到html模板之前触发asynchtml-webpack-plugin-alert-asset-tags验证资源,以及为资源做标记时触发asynchtml-webpack-plugin-after-html-processinghtmlPluginData插入到html模板之后触发asynchtml-webpack-plugin-after-emit生成html目标文件后触发asynchtml-webpack-plugin-alert-chunks验证资源块信息sync</p>
84
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
85
- <pre><code>var compile = webpack(config);
86
- compile.plugin(&#39;compilation&#39;, function( compilation, callbak) &#123;
87
- console.log(&#39;compilation&#39;);
88
- compilation.plugin(&#39;html-webpack-plugin-before-html-processing&#39;, function (htmlPluginData, callbak) &#123;
89
- console.log(htmlPluginData)
90
- callbak()
91
- &#125;)
92
- &#125;)
93
- </code></pre>
94
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
95
- <p>注意:</p>
96
- <ul>
97
- <li>必须要监测compile的compilation事件</li>
98
- <li>然后在回调compilation事件时,对compilation参数进行plugin的事件的注册 。</li>
99
- </ul>
100
- <h2 id="二、webpack-optimize-CommonsChunkPlugin"><a href="#二、webpack-optimize-CommonsChunkPlugin" class="headerlink" title="二、webpack.optimize.CommonsChunkPlugin"></a>二、webpack.optimize.CommonsChunkPlugin</h2><p>抽取公共模块为一个独立的文件,一是指定的多个模块打成一个包;二是在指定的chunks中抽取公共模块<br>参数名称说明name可以是字符串,或者是数组,如果指定为entry中一个名称,则只产生此vendor,也可以是一个入口文件列表filename输出文件名minChunks单独文件最小引用数,如设置3,表示同一个模块只有被3个以外的页面引用时才打包children返回,把第三方的vendor包,分解到业务包中chunks数组,从指定的源模块提供共用vendor包</p>
101
- <ol>
102
- <li>vendor打成一个包:</li>
103
- </ol>
104
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
105
- <pre><code>entry:&#123;
106
- vendor: [&#39;./src/vendor-jquery&#39;, &#39;bootstrap&#39;]
107
- &#125;,
108
- plugins: [
109
- new webpack.optimize.CommonsChunkPlugin(&#123;
110
- name: &#39;vendor&#39;
111
- &#125;)
112
- ]
113
- </code></pre>
114
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
115
- <ol start="2">
116
- <li>CommonsChunkPlugin正确的引入方式</li>
117
- </ol>
118
- <p><img src="https://9p23sg-ch3302.files.1drv.com/y3mjgANdsNvV7blpZUyooaJMxdELr937ptGJpapyuiE6J4HfX9oErx8MCJXZi4Mc_SJngf6ExoaEY55yDdISrOCfgFkP7dj1HRg49TXt7jq3N9Y7GjHV72iov0dAN5FSZllFwCXuZj9dH8jni3ZNzHHB6-oBcfnpVtNOZkjou-OSJY?width=664&amp;height=699&amp;cropmode=none" alt="xuehuayu.cn"></p>
119
- <ol start="3">
120
- <li>用manifest实现js库的增量更新</li>
121
- </ol>
122
- <p>如果输出文件名包含hash值,需要引入以下两个插件:</p>
123
- <ul>
124
- <li><p>HashedModuleIdsPlugin:算hash值</p>
125
- </li>
126
- <li><p>利用CommonsChunkPlugin配置,他是manifest配置模块所有的依赖抽象,如果mainfest不更新,则html会找不到js文件。</p>
127
- <p> new webpack.optimize.CommonsChunkPlugin({<br>name: ‘manifest’,<br>chunks: [‘vendor’]<br> })</p>
128
- </li>
129
- </ul>
130
- <h2 id="三、webpack-样式打包"><a href="#三、webpack-样式打包" class="headerlink" title="三、webpack 样式打包"></a>三、webpack 样式打包</h2><p>这其中就包含对css文件、静态资源以及css所包含的资源文件等处理。</p>
131
- <ul>
132
- <li>css-loader:解析css代码</li>
133
- <li>style-loader:css代码写入到js文件中</li>
134
- <li>配置代码如下:</li>
135
- </ul>
136
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
137
- <pre><code>loaders:[
138
- &#123;
139
- test:/\.css$/, /*不能加引号*/
140
- loader: &#39;style-loader!css-loader&#39;
141
- &#125;
142
- ]
143
- </code></pre>
144
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
145
- <p>注意:test后面不能加引号,因这个是正则式</p>
146
- <h3 id="1-样式文件单独存在,但不能处理静态资源"><a href="#1-样式文件单独存在,但不能处理静态资源" class="headerlink" title="1. 样式文件单独存在,但不能处理静态资源"></a>1. 样式文件单独存在,但不能处理静态资源</h3><p>extract-text-webpack-plugin:抽取样式为单独的文件</p>
147
- <ul>
148
- <li><p>参数配置说明</p>
149
- </li>
150
- <li><p>ExtractTextPlugin.extract(arg1,arg2,arg3)</p>
151
- </li>
152
- <li><p>arg1: 可选参数,传入一个loader,当css没有被抽取的时候可以使用该loader</p>
153
- </li>
154
- <li><p>arg2:必填参数,用于编译解析css文件的loader</p>
155
- </li>
156
- <li><p>arg3:额外选,暂只可传publicPath,表示当前loader的路径</p>
157
- </li>
158
- <li><p>ExtactTextPlugin在Plugins中构造时,至少需要传入一个文件名参数</p>
159
- </li>
160
- </ul>
161
- <p>filename文件名,可以指定一个固定的,也可用[name].[id].[contenthash]来指定文件名,[name]:与entry中的chunk名称一致,[id]:将entry的chunk的id一致;[contenthash]:根据内容生成hash值<br>参数名称说明id可先参数,插件实例的惟一标识,缺省会自动生成<br>filename<br>文件名,可以指定一个固定的,也可用[name].[id].[contenthash]来指定文件名,[name]:与entry中的chunk名称一致,[id]:将entry的chunk的id一致;[contenthash]:根据内容生成hash值optionsallchunks:是否将所有额外的chunk都压缩一个文件;disable:禁止使用此插件<br>代码如下(webpack2.x):</p>
162
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
163
- <pre><code>var ExtractTextPlugin = require(&#39;extract-text-webpack-plugin&#39;);
164
- module:&#123;
165
- loaders:[
166
- &#123;
167
- test:/\.css$/,
168
- loader: ExtractTextPlugin.extract(&#123;
169
- fallback: &#39;style-loader&#39;,
170
- use: &#39;css-loader&#39;
171
- &#125;)
172
- &#125;
173
- ]
174
- &#125;,
175
- plugins: [
176
- new ExtractTextPlugin(&#39;[name].css&#39;)
177
- ]
178
- </code></pre>
179
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
180
- <h3 id="2-file-loader实现css中图片或web字体文件打包"><a href="#2-file-loader实现css中图片或web字体文件打包" class="headerlink" title="2. file-loader实现css中图片或web字体文件打包"></a>2. file-loader实现css中图片或web字体文件打包</h3><p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
181
- <pre><code>var ExtractTextPlugin = require(&#39;extract-text-webpack-plugin&#39;);
182
- module:&#123;
183
- loaders:[
184
- &#123;
185
- test:/\.css$/,
186
- loader: ExtractTextPlugin.extract(&#123;
187
- fallback: &#39;style-loader&#39;,
188
- use: [&#39;css-loader&#39;,&#39;postcss-loader&#39;]
189
- &#125;)
190
- &#125;,
191
- &#123;
192
- test: /\.(eot|svg|ttf|woff|woff2)$/,
193
- loader: &#39;file-loader?name=fonts/[name].[ext]&#39;
194
- &#125;
195
- ]
196
- &#125;
197
- </code></pre>
198
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
199
- <p>参数说明:<br>参数名称说明name配置输出文件名,例如:name&#x3D;[name].[hash].[ext]name子节点配置说明[ext]扩展名[name]文件名[path]相对于上下文的路径[hash]hash值输出配置参数publicPath公共资源路径(也可以说是静态资源,就是不参与打包的编译过程的资源)outputPath输出资源路径(也可以说是静态资源,就是不参与打包的编译过程的资源)<br>publicPath和outputPath使用示例代码:</p>
200
- <pre><code>use: &quot;file-loader?name=[name].[ext]&amp;publicPath=assets/foo/&amp;outputPath=app/images/&quot;
201
- </code></pre>
202
- <h3 id="3-postcss实现浏览器兼容"><a href="#3-postcss实现浏览器兼容" class="headerlink" title="3. postcss实现浏览器兼容"></a>3. postcss实现浏览器兼容</h3><p>代码如下(webpack2.x):</p>
203
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
204
- <pre><code>var autoprefixer = require(&#39;autoprefixer&#39;);
205
- module:&#123;
206
- loaders:[
207
- &#123;
208
- test:/\.css$/,
209
- loader: ExtractTextPlugin.extract(&#123;
210
- use: [&#39;css-loader&#39;,&#39;postcss-loader&#39;]
211
- &#125;)
212
- &#125;
213
- ]
214
- &#125;,
215
- plugins: [
216
- new webpack.LoaderOptionsPlugin(&#123;
217
- options:&#123;
218
- postcss:[autoprefixer()]
219
- &#125;
220
- &#125;)
221
- ]
222
- </code></pre>
223
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
224
- <ul>
225
- <li>webpack2.x不支持自定义配置节点,需要用webpack.LoaderOptionsPlugin加入自定义的插件配置节点。</li>
226
- <li>autoprefixer:一个postcss的插件,用于css3的兼容前端处理</li>
227
- <li><ul>
228
- <li>browsers:配置浏览器的版本,如:browsers:[‘last 2 versions’]</li>
229
- </ul>
230
- </li>
231
- </ul>
232
- <h2 id="四、热更新"><a href="#四、热更新" class="headerlink" title="四、热更新"></a>四、热更新</h2><ul>
233
- <li>安装 webpack-dev-server</li>
234
- <li>热更新的概念</li>
235
- </ul>
236
- <p>利用websocket实现,websocket-server识别到html、css和js的改变,就向websocket-client发送一个消息,websocket-client判断如果是html和css就操作dom,实现局部刷新,如果是js就整体刷新。</p>
237
- <ul>
238
- <li>配置:</li>
239
- </ul>
240
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
241
- <pre><code>var config = require(&#39;./webpack.base.conf&#39;);
242
- var webpack = require(&quot;webpack&quot;);
243
- var WebpackDevServer = require(&#39;webpack-dev-server&#39;);
244
- var compile = webpack(config);
245
- compile.plugin(&#39;compilation&#39;, function( compilation, callbak) &#123;
246
- compilation.plugin(&#39;html-webpack-plugin-before-html-processing&#39;, function (htmlPluginData, callbak) &#123;
247
- callbak()
248
- &#125;)
249
- &#125;)
250
- var isProc = true;
251
- if(isProc)&#123;
252
- compile.run(function(err,state)&#123;
253
- console.log(err);
254
- &#125;)
255
- &#125;else&#123;
256
- var server = new WebpackDevServer(compile,&#123;
257
- contentBase: &#39;./build&#39;,
258
- hot: true,
259
- inline: true, /*无效*/
260
- historyApiFallback: true
261
- &#125;);
262
- server.listen(8080);
263
- &#125;
264
- </code></pre>
265
- <p><a href="javascript:void(0);"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></p>
266
- <p>说明:</p>
267
- <ul>
268
- <li><p>hot:启动热更新</p>
269
- </li>
270
- <li><p>inline:是不会自动刷新网页的,因为此参数只能在cli环境下用</p>
271
- </li>
272
- <li><p>在cli下实现页面自动刷新</p>
273
- <p> webapck-dev-server –hot –inline –config&#x3D;配置文件</p>
274
- </li>
275
- </ul>
276
- <p>无–inline时,只能在iframe模式下自动刷新:<code>http://localhost:8080/webpack-dev-server/index.html</code><br>有–inline时,可以直接访问<code>[http://localhost:8080/index.html](http://localhost:8080/index.html)</code>进行自动刷新</p>
277
- <h2 id="五、cross-env"><a href="#五、cross-env" class="headerlink" title="五、cross-env"></a>五、cross-env</h2><p>实现环境变量的定义</p>
278
- <pre><code>&quot;prod&quot;: &quot;cross-env NODE_ENV=prod node ./build/dev-server.js&quot;,
279
- &quot;dev&quot;: &quot;cross-env NODE_ENV=dev node ./build/dev-server.js&quot;
280
- </code></pre>
281
- <h2 id="六、示例代码结构说明"><a href="#六、示例代码结构说明" class="headerlink" title="六、示例代码结构说明"></a>六、示例代码结构说明</h2><p>前五节说了这么多,也许让你听得云里雾里的。没有代码来说明程序是多么枯燥啊(声明:此代码还包含后一章节的单元测试和e2e测试的配置)。代码结构图以及源码<a target="_blank" rel="noopener" href="http://files.cnblogs.com/files/cqhaibin/webpack-demo.rar">下载地址</a>:</p>
282
- <p><img src="https://icsawa-ch3302.files.1drv.com/y3mfFN01GeMJRnLQD-sVMRHRZEqD3HvcrE2_hDxN7DEcg4bL6ej4ZOgPEABeBgMksdsxOtkSij4fHmJBgx6bpdUiTlK-wKiN8GP9tiiYzgCzIEEtvr19rnlqUd2MdoqjgqerUV6sCaf1p5BXc6w6Q1tOrgt4SY2mpn9lTKcCeXUKjg?width=270&amp;height=562&amp;cropmode=none" alt="xuehuayu.cn"></p>
283
- <ul>
284
- <li><p>build:打包配置文件</p>
285
- </li>
286
- <li><p>dev-server.js:打包运行入口</p>
287
- </li>
288
- <li><p>webpack.base.conf.js:打包plugins节点的配置</p>
289
- </li>
290
- <li><p>webpack.core.conf.js:打包module以及entry的基本配置</p>
291
- </li>
292
- <li><p>src:源码目录</p>
293
- </li>
294
- <li><p>test:测试目录</p>
295
- </li>
296
- <li><p>e2e:点到点测试</p>
297
- </li>
298
- <li><p>unit:单元测试</p>
299
- </li>
300
- <li><p>mocks:mockjs模拟数据</p>
301
- </li>
302
- </ul>
303
- </div><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/36642.html">https://xuehuayu.cn/article/36642.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/20056.html">webpack打包之后js文件引用顺序错乱,vendor顺序错误</a><a class="next" href="/article/53125.html">正则大全</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
304
- const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
305
- const locale = {
306
- placeholder: '请正确填写昵称和邮箱,方便接收回复通知~',
307
- sofa: '沙发空缺中,还不快抢~',
308
- };
309
- Waline.init({
310
- el: '#vcomment',
311
- serverURL: serverURL,
312
- pageSize: '20',
313
- visitor: true, // 阅读量统计
314
- requiredMeta: ['nick', 'mail'],
315
- emoji: [
316
- 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
317
- 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/qq',
318
- 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/tw-emoji',
319
- ],
320
- locale,
321
- pageview: true
322
- })
323
- </script></div></div></div><div class="pure-u-1 pure-u-md-1-4 fixed-search hidden_mid_and_down"><div id="sidebar"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/search.min.js"></script><div class="widget"><div class="widget-search"><input class="search" type="radio" name="search" value="baidu" id="baidu" checked="checked"/><label class="label" for="baidu" title="百度全站搜索">百度</label><input class="search" type="radio" name="search" value="google" id="google"/><label class="label" for="google" title="谷歌全站搜索">谷歌</label><input class="search" type="radio" name="search" value="self" id="self"/><label class="label" for="self" title="使用站内搜索">站内</label></div><div class="widget" id="search"><form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"/><input type="hidden" name="si" value="xuehuayu.cn"/><input type="hidden" name="cl" value="3"/><input type="hidden" name="ct" value="2097152"/><input type="hidden" name="s" value="on"/><input class="search-submit" type="submit" value=""/></form></div></div><script>$('input[type=radio][name=search]').change(function() {
324
- var val = $(this).val()
325
- var self = '<div class="search-form"><input id="local-search-input" placeholder="站内搜索,首次慢" type="search" name="q" results="0"><input class="search-submit" type="submit" value=""/><div id="local-search-result"></div></div>'
326
- var google = '<form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="q" maxlength="30" placeholder="谷歌全站搜索"><input type="hidden" name="sitesearch" value="xuehuayu.cn"><input class="search-submit" type="submit" value=""/></form>'
327
- var baidu = '<form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"><input type="hidden" name="si" value="xuehuayu.cn"><input type="hidden" name="cl" value="3"><input type="hidden" name="ct" value="2097152"><input type="hidden" name="s" value="on"><input class="search-submit" type="submit" value=""/></form>'
328
-
329
- if (val === 'self') {
330
- $('#search').html(self)
331
- var search_path = 'search.xml';
332
- if (search_path.length == 0) {
333
- search_path = 'search.xml';
334
- }
335
- var path = 'https://cdn.staticaly.com/gh/npljy/npljy.github.io/main/' + search_path;
336
- searchFunc(path, 'local-search-input', 'local-search-result');
337
- } else if (val === 'baidu') {
338
- $('#search').html(baidu)
339
- } else if (val === 'google') {
340
- $('#search').html(google)
341
- }
342
- })</script><div class="widget widget-wxmp"><img alt="微信公众号" width="100%" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/mp-mini.jpg"/></div><div class="widget widget-categories"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CDN/">CDN</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/IDE/">IDE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/git/">git</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/hexo/">hexo</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%AC%E5%85%B1%E8%8A%82%E6%97%A5/">公共节日</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%88%86%E4%BA%AB/">分享</a><span class="category-list-count">29</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a><span class="category-list-count">190</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">1</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/">网络协议</a><span class="category-list-count">1</span></li></ul></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%8D%9A%E5%AE%A2/">博客</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B7%A5%E5%85%B7/">工具</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/">广告过滤</a><span class="category-list-count">8</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E5%BD%B1%E8%A7%86%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">影视电视小说漫画资讯音乐</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E8%A7%86%E9%A2%91%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">视频电视小说漫画资讯音乐</a><span class="category-list-count">1</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%AD%A3%E5%88%99/">正则</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E8%AE%AF/">资讯</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BD%BB%E6%9D%BE%E4%B8%80%E5%88%BB/">轻松一刻</a><span class="category-list-count">1</span></li></ul></div><div class="widget widget-tags"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 15px;">原创</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 15px;">转载</a> <a href="/tags/%E6%89%8B%E5%86%99/" style="font-size: 15px;">手写</a> <a href="/tags/%E7%96%AB%E6%83%85/" style="font-size: 15px;">疫情</a> <a href="/tags/%E5%A8%B1%E4%B9%90/" style="font-size: 15px;">娱乐</a></div></div><div class="widget widget-recent-posts"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/article/9c3c56c.html">vue、react、webpack、babel</a></li><li class="post-list-item"><a class="post-list-link" href="/article/84c9ccd6.html">精读《SolidJS》</a></li><li class="post-list-item"><a class="post-list-link" href="/article/53803e6.html">git提交注释规范</a></li><li class="post-list-item"><a class="post-list-link" href="/article/a4145266.html">前端数组拍平flat一行代码</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bedea419.html">一道前端this面试题</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bf7e7421.html">git多账号配置</a></li></ul></div><div class="widget widget-links"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/npljy?utm_source=xuehuayu.cn" title="GitHub" target="_blank">GitHub</a><ul></ul><a href="https://laonongmin.online?utm_source=xuehuayu.cn" title="看看" target="_blank">看看</a><ul></ul><a href="https://cainiaoblog.cn?utm_source=xuehuayu.cn" title="菜鸟博客" target="_blank">菜鸟博客</a><ul></ul><a href="mailto:cainiaoblog@126.com" title="友链联系" target="_blank">友链联系</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer"><div class="flex-block justify-center align-center flex-wrap"><a class="gxba-link" id="gxba" rel="nofollow" target="_blank" href="http://beian.miit.gov.cn/">京ICP备20007647号-2</a><a class="gaba-link" id="gaba-link" rel="nofollow" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031264"><img class="nofancybox" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/gaba.png" alt=""/><span id="gaba">京公网安备 11010802031264号</span><span style="padding-right: 10px;"></span></a><span>Copyright © 2023 </span><a href="/." rel="nofollow">前端壹菜鸟. </a><script>(function(){
343
- var cnb =window.location.origin.indexOf('cainiaoblog') !==-1
344
- if (cnb) {
345
- var gxba =document.getElementById('gxba')
346
- var gaba =document.getElementById('gaba')
347
- var gabaLink =document.getElementById('gaba-link')
348
- gxba.innerText ='京ICP备20007647号-1'
349
- gaba.innerText ='京公网安备 11010802031254号'
350
- gabaLink.setAttribute('href','http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031254')
351
- }
352
- })()</script></div><div class="flex-block justify-center align-center flex-wrap"><a rel="nofollow" target="_blank" href="https://v6.51.la/s/Guz3lwHCsVme9Cu"><div class="busuanzi_container" id="busuanzi_container"><span class="busuanzi_container_site_pv" id="busuanzi_container_site_pv">访问量:<span id="busuanzi_value_site_pv"><i class="fa fa-spinner"></i></span></span><span class="busuanzi_container_site_uv" id="busuanzi_container_site_uv">访客数:<span id="busuanzi_value_site_uv"><i class="fa fa-spinner"></i></span></span><span style="padding-right: 10px;"></span></div></a><a rel="nofollow" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&amp;utm_medium=referral"><span style="font-weight:bold;letter-spacing: 1px;">本网站由 </span><img class="nofancybox" height="32" style="vertical-align: middle" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/upy_logo.min.svg" alt=""/><span style="font-weight:bold;letter-spacing: 1px;">提供CDN加速/云存储服务</span></a><span style="padding-right: 10px;"></span><a rel="nofollow" style="font-size:18px;font-weight:bold;vertical-align: middle" target="_blank" title="注册就送代金券可直接使用" href="https://console.upyun.com/register/?invite=HyDsjZHIL">注册</a></div></div></div></div><a class="show" id="rocket" href="#top"></a><div class="darkmode-toggle">🌓</div><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/totop.min.js" async></script><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/dark.min.js" async></script><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/codeblock-resizer.min.js"></script><script type="text/javascript" src="//cdn.jsdelivr.net/npm/cainiaoblog@latest/js/smartresize.min.js"></script></div></body></html>