站内搜索

“plugin” 找到 70 条结果

ThinkJS 开发之前端热更新

用过 ThinkJS 的人都知道,开发模式下 ThinkJS 是支持实时更新的,也就是说不需要我们重启服务就能让修改生效,不得不说这种开发方式真的非常方便。然而对于前端代码我们还是得老老实实的刷新页面才能看到效果,我们能不能让前端代码也支持热更新呢?答案是肯定的。首先我们看一张动图了解我们最终想要功能是什么样的(点击图片查看大图)。

关于前端页面自动刷新,其实有非常多的方案了,从简单的 F5, Live Reload 到 Browser Sync 都是非常不错的方案,当然按照套路本文的主角肯定不是它们了。用过 webpack 的同学应该都用过或者知道 webpack-dev-server 吧,想必大家都对它的不刷新页面热更新代码的方式眼前一亮,没错,今天我们的主角是它!

The webpack-dev-server is a little Node.js Express server, which uses the webpack-dev-middleware to serve a webpack bundle. It also has a little runtime which is connected to the server via Sock.js.

via: http://webpack.github.io/docs/webpack-dev-server.html

正如官方文档开头写的那样,webpack-dev-server 本质上内部是用了 express ,使用 webpack-dev-middleware 在服务端编译,并使用 websocket 通知页面进行更新。那么问题来了,我们是一个 ThinkJS 的项目,为啥为了使用热更新还非得去再启一个别家的服务,这什么鬼!好在不是我一个人这么想的,所以有人开发了 webpack-hot-middleware 这个项目,将 webpack-dev-server 热更新功能脱离出来,让我们能自由自在的在自己的服务上搭建。所以我们只要 webpack-dev-middleware 和 webpack-hot-middleware 配合就能实现 webpack-dev-server 的热更新功能了。

不过 webpack-dev-middleware 和 webpack-hot-middleware 都是 express 的中间件,在 ThinkJS 上无法直接使用。所以我将它们简单的包装成了 ThinkJS 的插件:think-webpack-dev-middleware 和 think-webpack-hot-middleware,大家直接安装就能使用了。具体的添加过程如下:

  1. 安装中间件:

    npm install think-webpack-hot-middleware think-webpack-dev-middleware --save-dev
    
  2. 修改 src/common/bootstrap/middleware.js 定义中间件:

     import webpackDevMiddleware from 'think-webpack-dev-middleware';
     import webpackHotMiddleware from 'think-webpack-hot-middleware';
     import webpack from 'webpack';
     import config from '../../../webpack.config.js';
    
     const compiler = webpack(config);
    
     think.middleware('webpack-dev', webpackDevMiddleware(
       compiler,
       {
         stats: { colors: true }
       }
     ));
    
     think.middleware('webpack-hot', webpackHotMiddleware(
       compiler,
       {
         log: think.log
       }
     ))
    
  3. 修改 src/common/config/hook.js 将定义好的中间件添加到 resource 的钩子中:

    export default {
      resource: ['webpack-dev', 'webpack-hot']
    }
    
  4. 修改 webpack.config.js 添加监听客户端 webpack-hot-middleware/client 以及热更新插件:

    var webpack = require('webpack');
    
    module.exports = {
      entry: {
        main: [
          'src/index.js',
          'webpack-hot-middleware/client?reload=true'
        ]
      },
      plugin: [
        new webpack.HotModuleReplacementPlugin()
      ]
    };
    

这样就可以实现 ThinkJS 内部前后端热更新了,如果有不是很懂的同学可以参考 think-webpack-hot-middleware/example 这个示例项目,直接 npm start 就可以看到效果。

PMBlog 转火麒麟

别院以前一直用的是我三年前开发的静态博客系统 PMBlog。这款程序(确切的说只能叫脚本)我自己还是比较喜欢的,插件主题什么该有的都有。不过这两年维护的时间越发的少了起来,加上最近参与到另一款基于 Node.js 的博客程序 Firekylin 的开发中,遂起了心想把这个静态博客切过来。

firekylin 有提供 WXR 导入功能,WXR 是 WordPress eXtend Rss 的简称,基本上可以算是博客程序数据转换的通用格式了。所以我只要把 PMBlog 的数据转换成 WXR 文件就好啦,为此特地将其写成了插件 Export2WXR。将插件拷贝到 plugins 目录下后再次编译会提示下载一个 .xml 文件。下载下来之后直接进入到 Firekylin 后台设置-导入数据将文件导入即可。

制作插件的过程主要是将数据转换成 XML 的过程,由于用的别人的 wxr 生成代码以及数据的不对应导致转换过程非常颠婆,具体就不多表了。由于之前就使用了 Disqus 的社交评论,新程序的文章地址和原来的略有不同,需要使用 Disqus 的 URL Mapper 工具对原来的文章网址进行重映射,将文章 URL 列表下下来之后用文本编辑器的正则批量替换基本上就能搞定了,这里给一个示例:

Find: http://blog.imnerd.org/(.+?)$
Replace: http://blog.imnerd.org/$1, http://blog.imnerd.org/post/$1

Disqus 的服务还是比较稳定的,不像之前帮 75team 转多说评论一样,各种导入导出功能失败,批量删除失败,数据太多失败,缓存抽风失败。只能说毕竟在国内,不赚钱的项目是没人管的,以后还是老老实实的用着 Disqus 吧。

博客程序切过来之后希望能像月影大大那样激发热情高产起来!哈哈!

冬至也在码代码

昨天晚上不知道是不是因为冬至的原因,大家都表现的异常的兴奋,快两点了大家都还没上传睡觉。因为昨天下午睡了挺久了,把这个礼拜的《爸爸去哪》看完了才滚床上睡觉去了。总觉得林志颖被导演故意演成了黑脸,不过是越来越喜欢kimi那随时都能脱线的神经了。不过说到脱线,另外一个王者就是Angela了,哈哈,做游戏的时候那脱线的表情简直就在想象吃大餐的感觉有没有!虽然男神张亮我是比较欣赏的啦,不过相比较之下我反而不是很喜欢天天呢。主要原因是他在海岛小伙伴寻宝给我的感觉太差了。看来男神以后的路还有很长啊,哎!

冬至到,吃水饺。中午也跟风和宋哥两人去三楼吃了个水饺。别说人还真是多,排着队买饺子的人比比皆是,看来北方这方面过的还是比较隆重的。昨天古哥推荐我们来这家,味道感觉还可以,价钱也比较实惠。每次吃饺子的时候总是会回忆起小学的时候,一群小伙伴补习完回家的路上吃一碗两块钱(没错我就是来吐槽当今的物价的)的水饺,那种感觉特别温馨。回忆起当时的味道,虽然是淡淡的,但一种非常香甜可口的感觉一直萦绕在我的脑海中,回味无穷。

今天下定决心,花了一天的时间先研究了一地啊@defe 之前写的CommetToMail插件,然后就一直在捣鼓我之前写的At插件了。之前只是简单的用At.js实现了列表@的功能。随着群众的欲望无限膨胀,邮件通知的功能的需求越来越强烈。之前稍微看了一眼CommentToMail插件,有点懵里懵懂,所以对新功能的增加就有点望而却步。这回一不做二不休努力赶工总算是做出来了。刚把代码放线上测试的时候还有各种小问题,不过也慢慢都解决了。看明天如果没什么大BUG的话我就把代码放出来进行大面积测试吧。

FtpUpload插件

由于我本人比较喜欢将日志中的图片上传到我的一个FTP服务器中,但是一边写一遍开着FlashFXP上传实在是蛋疼了,所以萌生了写这个插件的想法。总的来说这个插件能让你远程传送文件(不限于图片,其它文件也可以)到FTP服务器中,并及时返回文件的URL地址插入到日志当中。

启用插件的时候,Typecho会提示"Server Error"错误的信息,虽然不知道为什么(有知道的同学请一定要告诉我!),但是并不影响正常的使用。

启用插件后记得在设置中填写自己的FTP服务器信息,以及希望将文件上传到哪个文件夹中。请一定要记得这个设置的文件夹要是存在的,否则会产生错误。

插件的基体是我拿着之前写过的XiaMiPlayer插件修改的,所以样式也是从那里继承过来的。

由于本插件写的非常潦草,纯粹为了实现功能而实现功能,所以肯定有许多不足的地方,希望大家多多反馈!

以上。

下载地址:BOX | 百度云

XiaMiPlayer插件 for typecho 0.8(更新至2.1版)

2.1版对应的是typecho 0.8版,如果想要下载对应最新版(typecho 0.9)的同学,请跳转到此页:XiaMiPlayer插件 for typecho 0.9

2.1版新增自定义播放器颜色(换颜色,全球浪潮~),默认提供了六种颜色,同时用户也可以自定义颜色哟!

2.0版本新增同步显示歌词和外链MP3地址的支持,提供移动端支持(需要支持html5)!欢迎大家更新使用!

本插件是基于MiniPlay1g1g插件的基础上修改过来的,所以插件的基本样式和MiniPlay1g1g是一样的,如果大家介意的话我会在下个版本中修改过来。在此感谢MiniPlay1g1g插件的作者vfasky君给我们带来了这么好的一个插件。

XiaMiPlayer插件的主要功能:

  • 根据关键词获取虾米音乐搜索结果
  • 生成音乐播放器代码,并自动插入到文中
  • 歌曲同步显示歌词(如果歌曲有歌词的话,2.0版本以上支持)
  • 支持插入外链MP3地址(2.0版本以上支持)
  • 自定义播放器样式(2.1版以上支持)

本插件是在typecho 0.8的基础上开发的,没有做对老版本兼容的测试,没有做对其它编辑器兼容的测试,同时没有做浏览器兼容测试,以及各种其它有的没有的测试。如果有不能用的,欢迎大家来报BUG,我会尽我所能DeBug的。

更新: 2.1 - 新增自定义播放器样式功能 2.0 - 更换播放器代码,支持所有支持HTML5平台的客户端。增加同步显示歌词功能,以及支持外链MP3地址。 1.3 - 修改翻页样式,修复了开启插件之后无法使用附件的插入功能。 1.2 - 增加了Ckeditor, xheditor编辑器的支持,修复了之前支持的编辑器无法插入的问题。 1.1 - 增加了TinyMce, KindEditor, FCKeditor三个编辑器的支持。

下载地址:BOX | 百度云

四川那些事

前言

前些日子去四川实习了小半个月,领略了一下西南大四川风情,果真是别有味道,非一语能言之。废话不多说,照片走起。

山

水

店

路

那景

路边发现的,之前以为是值钱的景天,结果发现原来只是不值钱的瓦松T_T_

_

_

同路边发现具体刻了什么大家自己看吧,总之是槽点满满的啊←←

无意之中进了一个金矿,这是矿区里头的小藏獒

大四川的精髓,四川麻将,血战到底!

叶子好像蝴蝶的说,拍了一张之后立马就夹书里头了0.0

看到那坑了没..地震的时候山顶上滚下来的这巨货搞得!

有木有觉得那片云朵跟❤很像?

取样之敲断的钢钎,后来又敲弯了一根LOL

迷路的羊咩咩~

移植主题Publish(更新至1.3版)

之前发布过一款移植主题TwentyTwelve,挺受大家喜欢的。@想往同学求助希望能制作Publish的Typecho版,所以有了此文。

很久不接触WordPress后发现快连WordPress的主题都看不懂了,各种神奇而又复杂的函数让人看的晕乎乎的。查询函数功能费了好些时间,好在最后是凑合着弄出来了。吐槽一句,能够提交到官方库里头的主题果然都是神一般的主题。

目前已经更新至1.3版,修复了评论框无法记录账号,作者登录判断登录等问题

目前已经更新至1.2版,修复了评论回复点击回复需要重新载入页面的问题,如果使用此版还会出现重新载入现象的同学可以考虑在之前加入

<script type="text/javascript" src="https://imnerd.org/usr/themes/twentytwelve/js/comment.js">

下载地址:1.3版Skydrive下载地址 1.3版微盘下载地址 | 1.2版下载地址 | 1.1版下载地址 | 1.0版下载地址

移植主题TwentyTwelve

之前帮Jclyn修改个主题,呐,这个暂且不提。反正因为这个我装了下WordPress,解压出来14M让我稍微汗颜了一下,呐,这个也暂且不提。总之就是装了WordPress之后发现新版自带的默认主题好好看哇!然后我就当机立断毫不犹豫地准备抄袭移植到Typecho上来了。

在跟各种神奇的DOM大干一场之后,抄袭移植就基本完成了。话说这回CSS什么的是赤果果的拷贝引用原主题的呢,所以原主题的响应式设计也非常完备的给继承了下来,不过总共35KB的CSS文件,让人不禁捏把汗啊,果然WordPress有着整体变大的趋势。至于别的什么特性我也不大清楚啦,有就有啦,木有的话大家就凑合着用吧[揉脸]。

页面预览:

目前已经更新至1.1版,修复了IE8以下被识别成小屏幕分辨率样式的问题。

目前已经更新至1.2版,修复了评论回复点击回复需要重新载入页面的问题,如果使用此版还会出现重新载入现象的同学可以考虑在</body>之前加入<script type="text/javascript" src="https://imnerd.org/usr/themes/twentytwelve/js/comment.js"></script>

下载地址:1.2版下载地址 | 1.1版下载地址 | 1.0版下载地址

PMBlog

PMBlog是我最近写个一个markdown静态化输出的小程序。目前能够实现发布文章和页面,自定义模板等基本功能。虽然PHP干这活可能亚历山大,不过PHP搭配起来简单而且做中小型博客的话应该是没有问题的。

目前更新到4.0版,采用权限的模板引擎Twig,并更换仓库到Github上,欢迎大家继续使用。

官方站点:http://lizheming.github.io/PMBlog

项目地址:http://github.com/lizheming/PMBlog

官方站点:http://lizheming.gitcafe.com

项目地址:HTTPS://GitCafe.com/lizheming/PMBlog

安装方法

  1. 搭配本地PHP环境

  2. 下载代码并修改config.php

  3. 访问index.php即会在html目录生成静态文件

Markdown文件书写规则

默认文件名是输出的静态页面的文件名,即'hello-world.md'将会生成'hello-world.html'。另外不推荐使用中文名作为文件名。

markdown(以下简称md)文件支持一些自定义字段。

  • 文件开头输入"title: Hello World"即可自定义文章标题为"Hello World"(必写字段)

  • "date: 2013年2月11日"即可自定义文章发布时间,如果不定义此字段程序会返回文件的创建时间为文章发布时间(可选字段)

  • "type: page"即可自定义本篇文章为页面,此字段只接受page/post两个参数,不定义此字段默认返回为post(可选字段)

  • "status: draft"即可自定义本篇文章为草稿,定义为草稿的文章将不被程序输出。此字段只接受draft一个参数,非该参数无效。不定义此字段则默认该文章为发布状态(可选字段)

  • "tags: tag1, tag2"即可自定义该文章的关键词,各个关键词之间使用半角逗号分开(可选字段)

也就是说目前最简单的写法就是只要定义一个"title:"字段然后开始正文就好了。

红心电台

前两天写了篇Audio标签的文章,想要更深入学习一下,遂决定写一个网页版音乐播放器试试(其实有更深部的动机的,不过我不告诉你们,哼哼!)。在整个网页的编写过程中,我学习到了很多的东西,感觉对jQuery又有了更新的认识。同时新接触了jQuery UI这个非常可靠的工具。不过说到底也还是新手,代码写的很脏,也没想到重构什么的,功能实现出来就好了,至于美观什么的,哈哈,你是在开玩笑么!

放上本篇文章主角:红心电台 - https://imnerd.org/lab/player

简单介绍:红心电台是一个利用HTML5制作的能够存储播放列表的在线音乐播放器。是的,没错,虽然是叫做红心电台,但是基本上也就只是一个能存播放列表的播放器而已。另外,本网页是用HTML5写的,然后由于播放的音乐基本是MP3格式的,所以只支持Webkit系的浏览器(Chrome为首)和IE9+以上的浏览器,对Firefox和Opera的用户感到抱歉了,OGG的音乐库毕竟还是挺小众的。具体浏览器支持可以看红心电台的HELP。

使用说明:

  • 1、左上角有搜索框,用户可自行添加歌曲到播放列表中。
  • 2、默认播放列表的歌曲在用户添加过歌曲后会自行清除(需要刷新页面),用户不必手动清除。
  • 3、默认支持快捷键,左右方向键为上一首下一首,空格键为暂停,Delete键为删除当前播放曲目。

如果对红心电台有什么意见或者是建议,又或者是发现了什么问题,可以随时与我联系(联系方式见关于页面),当然你也可以在本文留言,我都是可以看的到的。