Bin Joy's Blog

There is more than one way to do it...

Dancer2 试用小记

安装 Dancer2

注:本部分参考 Dancer2::Manual

安装 Dancer2 的方式和安装其它 Perl 模块没有什么区别,使用 cpan 命令或是源码安装的方式都可以。

1
perl -MCPAN -e 'install Dancer2'

当然如果你已经在机器上安装了 cpanm 这个模块你可以直接 cpanm Dancer2 就可以了。如果没有安装 cpanm 你在类 unix 机器上可以使用下面这行命令方便的使用它:

1
wget -O - http://cpanmin.us | sudo perl - Dancer2

如果你没有 root 权限这里不要写 sudo 。

使用 Dancer2

Dancer2 没有它自己的生成器,要使用 Dancer1 的 dancer 命令来生成应用的目录结构。

1
dancer -a myapp

然后进入到 myapp 这个目录,执行:

1
for f in $(find {lib,bin} -type f) ; do cat $f | sed -e 's/Dancer/Dancer2/g' > $f.2 && mv -f $f.2 $f;chmod +x $f; done

这样就会将文件中的 Dancer 修改为 Dancer2。可以直接启动:

更新:现在 Dancer2 已经具有自己的生成器了,安装好 Dancer2 后,直接 dancer2 -a appname 就可以生成一个项目了。

1
./bin/app.pl

也可以使用 plackup 命令启动它,如果你已经安装了 Task::Plack 这个模块的话:

1
plackup ./bin/app.pl -p 5000

这样在浏览器输入本地地址和相应的端口就可以访问到 Dancer 的默认页面。

为什么使用 Dancer2

直接引述 Dancer 作者的话:减少了和其它模块的命名空间碰撞,引入 Moo 的威力,框架本身代码更少但性能更高,而且如果你想深入研究 DSL 的话,Dancer2 背后提供的是一个很强 OO 特性的 API。

注意点

  • 编码问题:Dancer2 的要在配置文件中指定模板的编码,否则会出现乱码的情况,尤其是我们使用中文。比如我在模板中设置使用 UTF-8 的编码,配置文件也写了 charset: UTF-8 这样的指定,但是页面的中文还是乱码,Dancer2::Cookbook 中说还要指定模板的编码,这和 Dancer1 还是有些不同的。正确的设置是这样的:
Dancer2 encoding configurationDancer2 CPAN DOC
1
2
3
4
charset: UTF-8
engines:
  template_toolkit:
    ENCODING: utf8
  • 依然是编码问题 – –||| : Dancer 的 to_json 函数在遇到汉字时前端会乱码,但使用 JSON 模块的 to_json 就不会,具体原因还待深入 。

  • 在开发 爱微链 过程中发现,默认模板 Template::Simple 在遇到多层数据结构时可能不能正确解析出想要的数据,所以建议即使是开发过程中也还是先设置好用 TT 吧。

Comments