免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 44250 | 回复: 22
打印 上一主题 下一主题

Perl 的 Web 框架魔咒 (Mojolicious) 的中文网站-本帖回帖答疑 [复制链接]

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-07 00:32 |显示全部楼层 |倒序浏览
本帖最后由 iakuf 于 2014-09-05 10:35 编辑

兄弟们, 魔咒 ( Mojolicious ) 的中文网站来了.

http://mojo.php-oa.com

这个我是直接 git clone 原作者网站 http://www.mojolicio.us/ 的程序修改而成,并给其中的转换 POD 的模块小小修改了一下,在这个网站的当前路径下放上我译的中文的 POD 实现的。
原来我一直推 Dancer ,后来研究发现这个框架更加强大,另外这个的作者比 Dancer 更加关注自己的项目,本身作者就是 Catalyst 开发者,所以有着超级丰富的经验。这个框架是全异步事件支持的和 AnyEvent 可以无缝集成,所以注意一下自己的程序可以性能非常好。原生的模板技术非常不错, 基本语法和 Perl 一样,可以让你写模板的时候没学习时间上的成本.

以前我对它的可扩展表示怀疑,因为作者自己实现的东西感觉过多了。但现在发现其实非常非常不错,插件机制也很开放。非常建议大家重点关注.

我之所以后来选择这个是因为完整 Mojolicious 更加合适我当前的项目,所以花了些时间从 Dancer 转到魔咒这个新的框架。直到目前我都拿这个做了不下于 10 个项目了, 监控,设备管理之类都是使用这个, 从实践的经验上来讲越使用越舒服。

另外,我给这个小网站的设计是这样:
1. 当前目录有 pod 文件,会优先读取,所以我给中文 pod 按照路径放在这个下面(所以我会译完了直接会在这显示出来,也建议大家一起参与并给自己的 POD 放过来,我可能会做个中文的 CPAN  网站)。
2. 当前目录文件不存在,就去读 Perl 中 @INC 相关的路径是否有相关文件。
2. 都不存在就会连接到 cpan 的网站上去。

如果学习魔咒 ( Mojolicious ) 的话,只是想实现和 Dancer 的功能,基本上你只要看 Mojolicious::Lite  这个模块的使用就好了。
启动和帮助相关的命令,看看 Mojolicious::Commands 基本就完事了。整体所有功能都强大过 Dancer .

记录完成的大的部分,小的 POD 就不注明了,过程比较累啊。目前整个 Mojo 的基本 95% 以上的都中文化了,希望大家用得开心,有问题可以回复本帖子。

Mojolicious::Lite      单文件版 Web 应用,  类似 Dancer .
Mojolicious    全功能版本, 更好的支持路径选择和文件层次结构与分类
Mojolicious::Guides::Growing     怎么由 Mojolicious::Lite 成长成 Mojolicious 全功能
Mojolicious::Guides::Routing    在 Mojo 中是怎么样做路径的选择指向指定的子函数来处理
Mojolicious::Guides::Rendering    网页生成和相关的一些简单的内容
Mojolicious::Guides::Cookbook    一些常用的小技巧
Mojolicious::Controller     主函数
ojo 强大的单行 Mojo 客户端和工具

大家想学习,只要认真看看前二个文章,想用得好,在看下面的就行了。还有不得不提一下 Mojo::UserAgent 超级好用。。下面提到的有用的一些好东西中第一个就是相关的文档

Mojo 中其它常用的东西

提取网页时所需要使用到的
Mojo::UserAgent 我使用过的目前最好的抓网页提取分析,测试网页最好的工具之一
Mojo::DOM 最好用的东西之一.取到的网页怎么样解析就靠这个中提供的"方法"
Mojo::DOM::CSS  CSS 选择器, 上面 DOM 模块中取元素的语法, 基本和 JQuery 的 CSS 选择器的语法一样


网页相关
Mojo::Template 网页模板技术
Mojolicious::Plugin::DefaultHelpers  很多好用的帮助我们写网页的小功能


写 Controller 时可以用到的一些常用对象
Mojo::Headers 所有 HTTP 头相关的方法
Mojo::Message::Request  HTTP 的请求相关的方法
Mojo::Message::Response  HTTP 的响应相关的方法
Mojo::URL  在 Controller 和模板中都很好用,用于管理 URL 生成之类

Wiki 上一些资料
其它语言象 UTF8 怎么样显示?
字符集怎么修改
非阻塞异步数据库连接和使用


另外 Mojolicious  有 5 个教学的视频在 http://mojocasts.com 的网站,谁听力好,帮着给这个译成中文,然后我来提供 CDN 服务和帮助视频内嵌文字。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
2 [报告]
发表于 2012-11-07 09:50 |显示全部楼层
ttcn_cu 发表于 2012-11-07 08:12
有个疑问,这样的框架是适合个人开发还是企业使用?
我尝试去写个网站,但发现要自己搞定前后台实在太耗费 ...


小项目使用 Mojolicious::Lite 或 Dancer ,大项目使用全功能的  Mojolicious。如果感觉 html,js,div 之类难搞定,就直接让别人写这部分,自己只做后台。后台程序都使用面向接口编程。这样你只要写逻辑,返回象 json 和 xml 之类的结构,然后在 HTML 中使用 js 来给内容展示出来,所以一个普通的逻辑处理都在  15 行以内。因为所有基本操作只有增删改查。如下:

  1. sub show {
  2.     my $c = shift;
  3.     my @resultset = $c->db->resultset('ServerIsp')->by_id_or_name($c->param('name'));
  4.     my @json = map {{
  5.         id          => $_->id,
  6.         name        => $_->name,
  7.         description => $_->description
  8.     }} @resultset;
  9.     $c->render( json => { isp => \@json } );
  10. }
复制代码

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
3 [报告]
发表于 2012-11-09 09:59 |显示全部楼层
wxlfh 发表于 2012-11-07 15:55
支持楼主为Perl语言做贡献。

你也可以一起参与起来,给你平时学习时用的 POD ,译完的直接发给我就好了,我到时可以做个中文的 CPAN 出来,呵呵

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
4 [报告]
发表于 2012-11-09 10:01 |显示全部楼层
mitiao 发表于 2012-11-07 15:51
回复 6# iakuf


不但变量少了,要做的事情也少了,结构更加清楚。这是典型的 MVC 分离所必须和建议的方式。也是很好的提高开发效率,提升程序可读性,提高程序性能的方式。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
5 [报告]
发表于 2012-11-09 10:03 |显示全部楼层
ttcn_cu 发表于 2012-11-07 20:50
回复 6# iakuf


这个和前台后台没有关系。。。。你需要好好理解一下什么是 MVC ,你想一个人做所有的活,又为什么不可以。只是建议使用合理的分离有着更加清楚的结构和更加方便编程不用一边写 Perl 一边写 HTML 一边写 JS 。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
6 [报告]
发表于 2012-11-15 00:20 |显示全部楼层
更新了一下文档

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
7 [报告]
发表于 2012-11-15 14:27 |显示全部楼层
回复 18# py



1. 有关于 JSON 的话,并不强行要求。这个原生的 JSON 的应用多使用在它的 Mojo::UserAgent 和 Test::Mojo 中,做为远程访问解析和测试接口使用。当然也用在做为显示的回调中。


2. 这个全异步事件支持,是指这个框架中所有的访问和操作都是使用回调的机制。如果你的应用代码中都是非阻塞的,你这个框架性能会非常非常好,远好过普通的应用数倍的性能。因为都运行起来都象并行的。当然象数据库的连接之类都需要修改成异步。在慢 IO 和慢网络中非常有用。比如: 在应用中支持 HTTP 的代理,这时性能能非常好。


3. 你说 Mojolicious 的性能会好。有二个方面,一个方面是原生的事件支持,另一个方面是作者原来就是 catalyst 的维护者(好象。。。)。使用事件的时候性能好坏大多不取决于框架,更多是取决于写程序的人本身。需要多注意不要阻塞进程。不然和非异步是一样。

   

   

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
8 [报告]
发表于 2012-11-22 13:39 |显示全部楼层
py 发表于 2012-11-16 07:36
回复 21# iakuf

谢谢回复。

直接用它自己的 Hypnotoad 启动就好了,如果没有必要使用 Plack 的中间件的话。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
9 [报告]
发表于 2012-11-26 14:06 |显示全部楼层
Mojolicious::Guides::Growing 译完,基本除了模板技术,其它都有了。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
10 [报告]
发表于 2012-12-05 22:49 |显示全部楼层
全部译完了,欢迎各位使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP