config.js 4.0 KB

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