1+ /**
2+ * 用于生成最佳实践页面的概览页
3+ */
4+ var fs = require ( 'fs' ) ;
5+ var path = require ( 'path' ) ;
6+ var minify = require ( 'html-minifier' ) . minify ;
7+ var BEST_PRACTICES_DATA = require ( './source/_data/best-practices.json' ) ;
8+
9+ var args = process . argv . slice ( 2 )
10+ var isProd = args . length > 0 && args [ 0 ] === 'prod' ;
11+
12+ var DATA = BEST_PRACTICES_DATA ;
13+ var fileReadPath = path . resolve ( 'source/_data/overview.html' ) ;
14+ var fileWritePath = path . resolve ( `${ isProd ? 'public' : 'source' } /best-practices/overview.html` ) ;
15+
16+ var html = fs . readFileSync ( fileReadPath , { encoding : 'utf8' } ) ;
17+
18+ var tabStr = '<div class="tab-wrapper"><div class="tab-inner">' ;
19+
20+ var tabContentStr = '<div class="tab-content-outter"><div class="tab-content-wrapper">' ;
21+
22+ for ( var i = 0 ; i < DATA . length ; i ++ ) {
23+ var tab = DATA [ i ] ;
24+ var isIndex0 = i === 0 ;
25+ // 拼接 tab 字符串
26+ tabStr += `
27+ <div class="tab-item ${ isIndex0 ? 'show' : '' } " data-index="${ i } ">
28+ ${ tab . sort }
29+ <span class="tab-indicator"></span>
30+ </div>
31+ ` ;
32+ // 拼接 tabContent 字符串
33+ tabContentStr += `<div class="tab-content ${ isIndex0 ? 'show' : '' } ">` ;
34+ // list的长度大于6,添加 查看更多
35+ var list = tab . list ;
36+ var len = list . length ;
37+ var isOverSix = len > 6 ;
38+ if ( isOverSix ) {
39+ tabContentStr += `<div class="more-btn" data-index="${ i } ">查看更多</div>` ;
40+ }
41+ // 遍历list
42+ for ( var j = 0 ; j < len ; j ++ ) {
43+ var item = list [ j ] ;
44+ tabContentStr += `
45+ <a href="${ item . link } ">
46+ <div class="tab-content-item ${ j >= 6 ? 'hide' : '' } ">
47+ <img src="../images/best-practice/${ item . image } " alt="">
48+ <div class="tab-content-inner">
49+ <div class="up">
50+ <span>${ item . image_title } </span>
51+ </div>
52+ <div class="down">
53+ <div class="down-up">
54+ <h4>${ item . title } </h4>
55+ <p>${ item . introduction } </p>
56+ </div>
57+ <div class="down-down">
58+ <span>${ item . author } </span>
59+ <span>${ item . date } </span>
60+ </div>
61+ </div>
62+ </div>
63+ </div>
64+ </a>
65+ ` ;
66+ }
67+ var padNum = len % 3 ;
68+ padNum = padNum === 1 ? 2 : 1 ;
69+ for ( var k = 0 ; k < padNum ; k ++ ) {
70+ tabContentStr += `<div class="tab-content-item none ${ isOverSix ? 'hide' : '' } "></div>` ;
71+ }
72+ tabContentStr += '</div>' ;
73+ }
74+
75+ tabStr += '</div></div>' ;
76+ tabContentStr += '</div></div>' ;
77+
78+ html = html . replace ( '<!-- TAB -->' , tabStr ) . replace ( '<!-- TABCONTENT -->' , tabContentStr ) ;
79+
80+ fs . writeFileSync ( fileWritePath , minify ( html , {
81+ removeComments : true ,
82+ collapseWhitespace : true ,
83+ minifyJS : true ,
84+ } ) ) ;
85+
86+ console . log ( 'success' ) ;
0 commit comments