config.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. function getTimestamp() {
  2. return parseInt(new Date() / 1000, 10);
  3. }
  4. function setReadState() {
  5. localStorage.setItem('leader.url', location.href);
  6. localStorage.setItem('leader.time', getTimestamp());
  7. localStorage.setItem('leader.top', document.documentElement.scrollTop || document.body.scrollTop);
  8. setTimeout(setReadState, 5000);
  9. }
  10. function getReadState() {
  11. if (window.localStorage) {
  12. var time = ~~localStorage.getItem('leader.time');
  13. if (getTimestamp() - time > 300) {
  14. var url = localStorage.getItem('leader.url');
  15. if (url && location.href != url) {
  16. location.href = url;
  17. setTimeout(window.scrollTo(0, ~~localStorage.getItem('leader.top')), 300);
  18. }
  19. setTimeout(setReadState, 5000);
  20. }
  21. }
  22. }
  23. // Docsify配置
  24. window.$docsify = {
  25. name: '《团队领袖培养计划》',
  26. repo: 'https://github.com/js-cool/leader.js.cool.git',
  27. loadSidebar: true,
  28. subMaxLevel: 2,
  29. formatUpdated: '{YYYY}-{MM}-{DD} {HH}:{mm}',
  30. executeScript: true,
  31. auto2top: true,
  32. alias: {
  33. '/basic/_sidebar.md': '/_sidebar.md',
  34. '/basic/algorithm/_sidebar.md': '/_sidebar.md',
  35. '/basic/db/_sidebar.md': '/_sidebar.md',
  36. '/basic/framework/_sidebar.md': '/_sidebar.md',
  37. '/basic/js/_sidebar.md': '/_sidebar.md',
  38. '/basic/knowledge/_sidebar.md': '/_sidebar.md',
  39. '/basic/md/_sidebar.md': '/_sidebar.md',
  40. '/basic/node/_sidebar.md': '/_sidebar.md',
  41. '/basic/resource/_sidebar.md': '/_sidebar.md',
  42. '/experience/_sidebar.md': '/_sidebar.md',
  43. '/experience/advanced/_sidebar.md': '/_sidebar.md',
  44. '/experience/azure/_sidebar.md': '/_sidebar.md',
  45. '/experience/design/_sidebar.md': '/_sidebar.md',
  46. '/experience/operation/_sidebar.md': '/_sidebar.md',
  47. '/experience/project/_sidebar.md': '/_sidebar.md',
  48. '/experience/project/user/_sidebar.md': '/_sidebar.md',
  49. '/mind/_sidebar.md': '/_sidebar.md',
  50. '/mind/capability/_sidebar.md': '/_sidebar.md',
  51. '/mind/team/_sidebar.md': '/_sidebar.md',
  52. '/mind/thinking/_sidebar.md': '/_sidebar.md'
  53. },
  54. search: {
  55. placeholder: '搜索',
  56. noData: '未找到结果'
  57. },
  58. plugins: [
  59. function (hook, vm) {
  60. hook.init(function () {
  61. getReadState();
  62. if (typeof mermaid !== 'undefined') { mermaid.initialize({ startOnLoad: false }); }
  63. var adScript = document.createElement('script');
  64. adScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
  65. adScript.setAttribute('async', true);
  66. document.body.appendChild(adScript);
  67. });
  68. hook.beforeEach(function (md) {
  69. var url = 'https://github.com/js-cool/leader.js.cool/blob/master' + vm.route.file
  70. var editUrl = '[:memo: 编辑本章节](' + url + ')\n'
  71. return md
  72. + '\n----\n'
  73. + '最后更新 {docsify-updated} '
  74. + editUrl
  75. });
  76. hook.doneEach(function () {
  77. if (typeof mermaid !== 'undefined') { mermaid.init(undefined, '.mermaid') };
  78. var main = document.getElementById('main');
  79. var paragraphs = main.getElementsByTagName('p');
  80. var ads = [];
  81. if (paragraphs.length > 15) {
  82. ads.push(paragraphs[Math.ceil(Math.random() * 15)]);
  83. }
  84. ads.push(paragraphs[paragraphs.length - 1]);
  85. for (var i = 0; i < ads.length; i += 1) {
  86. ads[i].insertAdjacentHTML('afterend', '<ins class="adsbygoogle" style="display:block;margin: 1.5em auto;" data-ad-client="ca-pub-5059418763237956" data-ad-slot="9518721243" data-ad-format="auto"></ins>');
  87. (adsbygoogle = window.adsbygoogle || []).push({});
  88. }
  89. });
  90. }
  91. ],
  92. markdown: {
  93. renderer: {
  94. code: function (code, lang) {
  95. var html = '';
  96. if (code.match(/^sequenceDiagram/) || code.match(/^graph/) || code.match(/^gantt/)) {
  97. html = '<div class="mermaid">' + code + '</div>';
  98. }
  99. var hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup)
  100. return html + '<pre v-pre data-lang="' + lang + '"><code class="lang-' + lang + '">' + hl + '</code></pre>'
  101. }
  102. }
  103. }
  104. };
  105. // 离线浏览
  106. if (typeof navigator.serviceWorker !== 'undefined') {
  107. navigator.serviceWorker.register('sw.js');
  108. }