自己动手修改完善yilia主题(下)

栏目: JavaScript · 发布时间: 5年前

内容简介:这一期咱们接着来说自定义Yilia主题的事。本文涉及到的修改稍微有一点点复杂,可以参考我的为了方便管理代码,也是为了看起来干净一点,我简单修改了一下主题文档结构,把资源文件放在了

这一期咱们接着来说自定义Yilia主题的事。

本文涉及到的修改稍微有一点点复杂,可以参考我的 GitHub仓库

修改webpack打包路径

为了方便管理代码,也是为了看起来干净一点,我简单修改了一下主题文档结构,把资源文件放在了 assets 目录下

修改 webpack.config.jsoutput 模块

output: {
    path: __dirname+"/source/assets/",
    publicPath: "./",
    filename: "[name].[chunkhash:6].js"
  }

删除文章中那一堆无用的代码

使用yilia主题,每篇文章中都会出现一坨js代码,至今为止我也不知道是什么作用,删掉貌似也没有什么影响,每个页面能精简七八十K吧。

删掉 source-src\scrept.ejs 中的

<% for (var asset in compilation.assets) { %><% if (asset.indexOf('mobile') >= 0) { %><%= compilation.assets[asset].source() %><% } %><% } %>

Js后加载

新建模板 layout\_partial\load-scrept.ejs

<script>function loadScript(e,t){d=document,o=d.createElement("script"),s=d.getElementsByTagName("head")[0].appendChild(o),o.setAttribute("src",e),t&&o.addEventListener("load",function(e){t(e)}),s.parentNode.insertBefore(o,s)}</script>

上面的代码是已经压缩的,直接放进页面就可以

降新建的模板放入head部分,在 layout\_partial\head.ejs 后面加入

<%- partial('load-script') %>

有了这段代码,我们就可以使用 loadScript 加载各种Js文件了。

首先是主题本身的Js文件,也就是 slider.js ,先分离 scrept.ejs ,创建一个 main.ejs

main.ejs

<% var left = '<%=' %>
<% var right = '%' %>
<% var right2 = '>' %>
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %><% if (chunk === 'main') { %><script defer src="<%= left %>config.root<%= right %><%= right2 %>assets/<%=htmlWebpackPlugin.files.chunks[chunk].entry %>"></script><% } %><% } %>

script.ejs

<script>
<% var left = '<%=' %>
<% var right = '%' %>
<% var right2 = '>' %>
(function() {
    <% for (var asset in compilation.assets) { %><% if (asset.indexOf('slider') >= 0) { %><% var slider = asset %><% } %><% } %>loadScript("<%= left %>config.root<%= right %><%= right2 %>assets/<%= slider %>")
})();
</script>

webpack.config.js ,修改 plugins ,增加main部分

new HtmlWebpackPlugin({
      inject: false,
      cache: false,
      minify: minifyHTML,
      template: './source-src/script.ejs',
      filename: '../../layout/_partial/script.ejs'
    }),
    new HtmlWebpackPlugin({
      inject: false,
      cache: false,
      minify: minifyHTML,
      template: './source-src/main.ejs',
      filename: '../../layout/_partial/main.ejs'
    })

layout\_partial\head.ejs 中再加入

<%- partial('main') %>

为了优化其他js文件的加载速度,将不必要的js放在页面尾部,也就是 after-footer.ejs ,具体修改可以参考我的GitHub仓库

优化中英文混排

优化中英文混排,可以引入 pangu.js ,创建模板 layout\_partial\pangu.ejs

<% if (theme.pangu){ %>
<script async>
loadScript('https://cdn.jsdelivr.net/npm/pangu/dist/browser/pangu.min.js',function(){pangu.spacingPage();});
</script>
<% } %>

after-footer.ejs 中引入

<%- partial('pangu') %>

在主题的配置文件 _config.yml 中添加

#pangu.js,中英文混排优化
pangu: true

更优雅的方式引入valine

上一篇文章写了引入valine,但是这样做并不是最佳方式,修改模板 layout\_partial\post\valine.ejs (需要用到上面提到的js后加载方式)

<div id="vcomment"></div>
<script async>
    var notify = <%= theme.valine.notify %> == true ? true : false;
    var verify = <%= theme.valine.verify %> == true ? true : false;
    var visitor = <%= theme.valine.visitor %> == true ? true : false;
    loadScript('https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js',function(){
    loadScript('https://cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js',function(){
        new Valine({
            av: AV,
            el: '#vcomment',
            notify: notify,
            verify: verify,
            app_id: '<%= theme.valine.appid %>',
            app_key: '<%= theme.valine.appkey %>',
            placeholder: '<%= theme.valine.placeholder %>',
            avatar: '<%= theme.valine.avatar %>',
            avatar_cdn: '<%= theme.valine.avatar_cdn %>',
            pageSize: <%= theme.valine.pageSize %>,
            path: '<%- url_for(post.path) %>',
            visitor: visitor
        });
    });
    });
</script>

上篇文章里的主题样式,我放到了 comment.scss 中(这里为了方便管理,并没有把移动端代码放到 mobile.scss 中)

#vcomment{margin:30px;padding:10px;background:#fff}
@media screen and (max-width:800px){#vcomment{margin:auto;padding:10px;background:#fff}}

更多骚操作

更多骚操作请看我 GitHub仓库 中的修改。

请作者吃辣条

自己动手修改完善yilia主题(下) 支付宝

自己动手修改完善yilia主题(下) 微信


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试