diff --git a/layout/_scripts/index.njk b/layout/_scripts/index.njk index c41ce1b..70e6e44 100644 --- a/layout/_scripts/index.njk +++ b/layout/_scripts/index.njk @@ -15,4 +15,3 @@ {%- if theme.pjax %} {% include 'pjax.njk' %} {%- endif %} -{% include 'three.njk' %} diff --git a/layout/_scripts/three.njk b/layout/_scripts/three.njk deleted file mode 100644 index fa1c7c3..0000000 --- a/layout/_scripts/three.njk +++ /dev/null @@ -1,16 +0,0 @@ -{%- if theme.three.enable %} - {%- set three_uri = theme.vendors.three or next_vendors('three/three.min.js') %} - - {%- if theme.three.three_waves %} - {%- set waves_uri = theme.vendors.three_waves or next_vendors('three/three-waves.min.js') %} - - {%- endif %} - {%- if theme.three.canvas_lines %} - {%- set lines_uri = theme.vendors.canvas_lines or next_vendors('three/canvas_lines.min.js') %} - - {%- endif %} - {%- if theme.three.canvas_sphere %} - {%- set sphere_uri = theme.vendors.canvas_sphere or next_vendors('three/canvas_sphere.min.js') %} - - {%- endif %} -{%- endif %} diff --git a/layout/_scripts/vendors.njk b/layout/_scripts/vendors.njk index 5465785..6f316ea 100644 --- a/layout/_scripts/vendors.njk +++ b/layout/_scripts/vendors.njk @@ -1,30 +1,18 @@ -{%- set js_vendors = {} %} -{%- set js_vendors = js_vendors | attr('anime', 'anime.min.js') %} - -{%- if theme.pjax %} - {%- set js_vendors = js_vendors | attr('pjax', 'pjax/pjax.min.js') %} -{%- endif %} - -{%- if theme.fancybox %} - {%- set js_vendors = js_vendors | attr('jquery', '//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js') %} - {%- set js_vendors = js_vendors | attr('fancybox', '//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js') %} -{%- endif %} - -{%- if theme.mediumzoom %} - {%- set js_vendors = js_vendors | attr('mediumzoom', '//cdn.jsdelivr.net/npm/medium-zoom@1/dist/medium-zoom.min.js') %} -{%- endif %} - -{%- if theme.lazyload %} - {%- set js_vendors = js_vendors | attr('lazyload', '//cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js') %} -{%- endif %} - -{%- if theme.pangu %} - {%- set js_vendors = js_vendors | attr('pangu', '//cdn.jsdelivr.net/npm/pangu@4/dist/browser/pangu.min.js') %} -{%- endif %} - -{%- if theme.motion.enable %} - {%- set js_vendors = js_vendors | attr('velocity', 'velocity/velocity.min.js') %} - {%- set js_vendors = js_vendors | attr('velocity_ui', 'velocity/velocity.ui.min.js') %} +{%- if theme.three.enable %} + {%- set three_uri = theme.vendors.three or next_vendors('three/three.min.js') %} + + {%- if theme.three.three_waves %} + {%- set waves_uri = theme.vendors.three_waves or next_vendors('three/three-waves.min.js') %} + + {%- endif %} + {%- if theme.three.canvas_lines %} + {%- set lines_uri = theme.vendors.canvas_lines or next_vendors('three/canvas_lines.min.js') %} + + {%- endif %} + {%- if theme.three.canvas_sphere %} + {%- set sphere_uri = theme.vendors.canvas_sphere or next_vendors('three/canvas_sphere.min.js') %} + + {%- endif %} {%- endif %} {%- if theme.canvas_ribbon.enable %} @@ -32,7 +20,7 @@ {%- endif %} -{%- for name, internal in js_vendors %} +{%- for name, internal in js_vendors() %} {%- set internal_script = next_vendors(internal) %} {%- endfor %} diff --git a/scripts/helpers/next-vendors.js b/scripts/helpers/next-vendors.js new file mode 100644 index 0000000..9355a3f --- /dev/null +++ b/scripts/helpers/next-vendors.js @@ -0,0 +1,31 @@ +/* global hexo */ + +'use strict'; + +hexo.extend.helper.register('js_vendors', function() { + let { theme } = this; + let vendors = { + anime: 'anime.min.js' + }; + if (theme.pjax) { + vendors.pjax = 'pjax/pjax.min.js'; + } + if (theme.fancybox) { + vendors.jquery = '//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js'; + vendors.fancybox = '//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js'; + } + if (theme.mediumzoom) { + vendors.mediumzoom = '//cdn.jsdelivr.net/npm/medium-zoom@1/dist/medium-zoom.min.js'; + } + if (theme.lazyload) { + vendors.lazyload = '//cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js'; + } + if (theme.pangu) { + vendors.pangu = '//cdn.jsdelivr.net/npm/pangu@4/dist/browser/pangu.min.js'; + } + if (theme.motion.enable) { + vendors.velocity = 'velocity/velocity.min.js'; + vendors.velocity_ui = 'velocity/velocity.ui.min.js'; + } + return vendors; +}); diff --git a/scripts/renderer.js b/scripts/renderer.js index 9dbef15..3c74894 100644 --- a/scripts/renderer.js +++ b/scripts/renderer.js @@ -10,10 +10,6 @@ function njkCompile(data) { const env = nunjucks.configure(templateDir, { autoescape: false }); - env.addFilter('attr', (dictionary, key, value) => { - dictionary[key] = value; - return dictionary; - }); env.addFilter('json', dictionary => { if (typeof dictionary !== 'undefined' && dictionary !== null) { return JSON.stringify(dictionary);