hexo腳本編寫指南(三)

過濾器(Filter)

官方地址

過濾器分注冊和執(zhí)行兩個函數(shù)
注冊過濾器的function參數(shù)可以是多個,如果是hexo鉤子 那么data的值與page一致
執(zhí)行過濾器的第二個參數(shù)為帶入值data,第三個值是args
以下是官網(wǎng)的一個小demo 講的還是比較清晰的

hexo.extend.filter.register('test', function(data, arg1, arg2){
 // data === 'some data'
 // arg1 === 'foo'
 // arg2 === 'bar'
 
 return 'something';
});
hexo.extend.filter.register('test', function(data, arg1, arg2){
 // data === 'something'
});
hexo.extend.filter.exec('test', 'some data', {
 args: ['foo', 'bar']
});

小例子1

如果data.content里面有#fn,那么插入一個js

hexo.extend.filter.register('after_post_render',function(data){

    if(data.content.indexOf("#fn") != -1){
        data.content += "<script src=\"js/footnote.js\" type=\"text/javascript\"></script>";
    }

    return data;
});

小例子2

選擇性生成css或js
比如,我在主題的source/js文件夾下放了duoshuo.min.js這個多說本地化腳本,當(dāng)設(shè)置里沒啟用多說的時候這個js文件還是會跟著生成,跟著發(fā)布到你的博客服務(wù)器上,浪費流量。該怎么辦呢?

把如下js放進主題的scripts文件夾下(文件名隨意):

'use strict';

hexo.extend.filter.register('after_generate',function(){
    var duoshuo = hexo.theme.config.duoshuo_shortname;

    if(!duoshuo || duoshuo.length == 0){
        hexo.route.remove('js/duoshuo.min.js');
    }
});

其中duoshuo_shortname是主題設(shè)置里的一個條目。

這樣,當(dāng)duoshuo_shortname為空時,duoshuo.min.js不會跟著生成,從而減少所需加載量。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,962評論 0 9
  • title: hexo 安裝與配置 categories: 工具 tags: [Hexo,GitHub,多說評論]...
    卞澤閱讀 3,322評論 8 24
  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,892評論 0 9
  • 與教材相結(jié)合,與課堂活動相結(jié)合,與支架結(jié)合,輸入與輸出相結(jié)合。我做得到嗎?其實我更多的是空談!今天下午的課就是我一...
    雨兒123閱讀 212評論 0 0
  • 1、官網(wǎng)下載地址https://dev.mysql.com/downloads/mysql/5.7.html#do...
    雪_豹閱讀 293評論 0 0

友情鏈接更多精彩內(nèi)容