Refactor js_vendors

This commit is contained in:
Mimi 2020-06-12 23:46:41 +08:00
parent ee7d13e307
commit b02c93dc3a
5 changed files with 47 additions and 49 deletions

View File

@ -15,4 +15,3 @@
{%- if theme.pjax %}
{% include 'pjax.njk' %}
{%- endif %}
{% include 'three.njk' %}

View File

@ -1,16 +0,0 @@
{%- if theme.three.enable %}
{%- set three_uri = theme.vendors.three or next_vendors('three/three.min.js') %}
<script defer src="{{ three_uri }}"></script>
{%- if theme.three.three_waves %}
{%- set waves_uri = theme.vendors.three_waves or next_vendors('three/three-waves.min.js') %}
<script defer src="{{ waves_uri }}"></script>
{%- endif %}
{%- if theme.three.canvas_lines %}
{%- set lines_uri = theme.vendors.canvas_lines or next_vendors('three/canvas_lines.min.js') %}
<script defer src="{{ lines_uri }}"></script>
{%- endif %}
{%- if theme.three.canvas_sphere %}
{%- set sphere_uri = theme.vendors.canvas_sphere or next_vendors('three/canvas_sphere.min.js') %}
<script defer src="{{ sphere_uri }}"></script>
{%- endif %}
{%- endif %}

View File

@ -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') %}
<script defer src="{{ three_uri }}"></script>
{%- if theme.three.three_waves %}
{%- set waves_uri = theme.vendors.three_waves or next_vendors('three/three-waves.min.js') %}
<script defer src="{{ waves_uri }}"></script>
{%- endif %}
{%- if theme.three.canvas_lines %}
{%- set lines_uri = theme.vendors.canvas_lines or next_vendors('three/canvas_lines.min.js') %}
<script defer src="{{ lines_uri }}"></script>
{%- endif %}
{%- if theme.three.canvas_sphere %}
{%- set sphere_uri = theme.vendors.canvas_sphere or next_vendors('three/canvas_sphere.min.js') %}
<script defer src="{{ sphere_uri }}"></script>
{%- endif %}
{%- endif %}
{%- if theme.canvas_ribbon.enable %}
@ -32,7 +20,7 @@
<script size="{{ theme.canvas_ribbon.size }}" alpha="{{ theme.canvas_ribbon.alpha }}" zIndex="{{ theme.canvas_ribbon.zIndex }}" src="{{ canvas_ribbon_uri }}"></script>
{%- endif %}
{%- for name, internal in js_vendors %}
{%- for name, internal in js_vendors() %}
{%- set internal_script = next_vendors(internal) %}
<script src="{{ theme.vendors[name] or internal_script }}"></script>
{%- endfor %}

View File

@ -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;
});

View File

@ -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);