Chinaunix

标题: Perl 的 Web 框架魔咒 (Mojolicious) 的中文网站-本帖回帖答疑 [打印本页]

作者: iakuf    时间: 2012-11-07 00:32
标题: Perl 的 Web 框架魔咒 (Mojolicious) 的中文网站-本帖回帖答疑
本帖最后由 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 服务和帮助视频内嵌文字。
作者: flw    时间: 2012-11-07 01:02
支持
作者: mitiao    时间: 2012-11-07 05:42
支持楼主,使用Dancer就是从楼主那里听说的。。。
作者: ttcn_cu    时间: 2012-11-07 08:12
有个疑问,这样的框架是适合个人开发还是企业使用?
我尝试去写个网站,但发现要自己搞定前后台实在太耗费时间了。
比如想搭建一个wiki, 结果发现要搞的东西太多了。数据库,前台,ajex,中文兼容性,跨浏览器支持。。。

LZ有何好的建议?
作者: 首天    时间: 2012-11-07 08:49
同问

ttcn_cu 发表于 2012-11-07 08:12
有个疑问,这样的框架是适合个人开发还是企业使用?
我尝试去写个网站,但发现要自己搞定前后台实在太耗费 ...



作者: iakuf    时间: 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. }
复制代码

作者: zhlong8    时间: 2012-11-07 12:11
我喜欢这个 ojo 模块,很好玩
作者: 懒狒狒    时间: 2012-11-07 14:26
新人膜拜了
作者: mitiao    时间: 2012-11-07 15:51
回复 6# iakuf


    js接收json数据进行显示,是不是模板里的变量用的少了?
作者: wxlfh    时间: 2012-11-07 15:55
支持楼主为Perl语言做贡献。
作者: ttcn_cu    时间: 2012-11-07 20:50
回复 6# iakuf


    果然还是只能写后台呀,呵呵,这样我基本理解了,现在的关注是数据库<->Json

看LZ只用了bootstrap, 估计还没精力搞JS,呵呵
作者: iakuf    时间: 2012-11-09 09:59
wxlfh 发表于 2012-11-07 15:55
支持楼主为Perl语言做贡献。

你也可以一起参与起来,给你平时学习时用的 POD ,译完的直接发给我就好了,我到时可以做个中文的 CPAN 出来,呵呵
作者: rubyish    时间: 2012-11-09 10:01
呵呵,这样good!
very good!{:3_188:}
作者: iakuf    时间: 2012-11-09 10:01
mitiao 发表于 2012-11-07 15:51
回复 6# iakuf


不但变量少了,要做的事情也少了,结构更加清楚。这是典型的 MVC 分离所必须和建议的方式。也是很好的提高开发效率,提升程序可读性,提高程序性能的方式。
作者: iakuf    时间: 2012-11-09 10:03
ttcn_cu 发表于 2012-11-07 20:50
回复 6# iakuf


这个和前台后台没有关系。。。。你需要好好理解一下什么是 MVC ,你想一个人做所有的活,又为什么不可以。只是建议使用合理的分离有着更加清楚的结构和更加方便编程不用一边写 Perl 一边写 HTML 一边写 JS 。
作者: iakuf    时间: 2012-11-15 00:20
更新了一下文档
作者: py    时间: 2012-11-15 07:58
ttcn_cu 发表于 2012-11-07 08:12
有个疑问,这样的框架是适合个人开发还是企业使用?
我尝试去写个网站,但发现要自己搞定前后台实在太耗费 ...

“一个网站”就是由很多元素构成的,如果你觉得数据库,HTML,JS,等各个部分太多了。那你需要的就不是一个web框架,你需要的是wordpress,一个现成的产品。
比如你说想搭建一个wiki,你可以下载个代码仍在服务器上运行。你也可以自己从0开始写一个。你不能希望从新写同时又抱怨东西多费时间。
作者: py    时间: 2012-11-15 08:23
回复 1# iakuf

原来你发过帖子介绍了。看来我是错过了不少信息。

希望扶凯给我解个惑。

我有这么几个关于Mojolicious的问题想问:
1. 你也看见了,作者自己写代码实现了一个web框架中的所有几乎所有内容。连JSON的解析他都是用的自己的模块。放着现成的JSON::XS他不用,自己从新写。这个是违背软件开发原则的。我现在不确定,mojo框架是否强制要求用户使用作者自己的模块解析JSON?

2. 你提到“这个框架是全异步事件支持的”。我有点不明白“web框架”和“是否异步事件支持”的关系。我的理解是,除非这个web框架有阻塞的代码,否则都应该是异步支持的。这个我说的对吗?我对web框架本身没有研究。

3. 你说Mojolicious的性能会好。这个是和Dancer比吗?Dancer+Twiggy一样也是异步支持。Mojolicious+Twiggy和Dancer+Twiggy的性能应该是一样的吧?其实性能和web框架没有太大关系的,性能好坏取决于运行框架的Twiggy。如果我哪说错了请指正。
   
作者: 兰花仙子    时间: 2012-11-15 09:38
你提到“这个框架是全异步事件支持的”。我有点不明白“web框架”和“是否异步事件支持”的关系。我的理解是,除非这个web框架有阻塞的代码,否则都应该是异步支持的。这个我说的对吗?我对web框架本身没有研究。


框架的后台也是个webserver,而webserver以IO操作为主,估计是指的IO方面实现异步,比如anyevent处理网络事件。类似于nginx这种。
作者: py    时间: 2012-11-15 12:23
兰花仙子 发表于 2012-11-15 09:38
框架的后台也是个webserver

我记得Dancer默认是用HTTP::Server::Simple运行的,这个HTTP::Server::Simple是不是你说的“框架的后台”?

我肤浅的理解,“这些web框架”就是组织各种构建web所涉及到的元素,这样让开发者更方便的使用这些包装过的东西。现在的框架整合度越来越高,就开始把HTTP::Server::Simple这样的相当于Twiggy、Starman的东西整合到自己的框架中。

如果是这样,鉴于写web框架的好歹是有点造化的人,写这么个东西要是还弄成阻塞的,那也太矮级了。

印象中没看见Dancer说自己是“基于事件的”,“非阻塞的”,Dancer+Twiggy可以实现非阻塞,而且就是基于时间的。Mojolicious一直宣传自己是“built-in non-blocking I/O web server”,还说自己native支持AnyEvent之类。但实际上要想非阻塞,仍然需要搭载Twiggy运行。
我就是想知道Mojolicious在“非阻塞支持事件驱动”这个领域和Dancer有没有不同?有哪些不同?
作者: iakuf    时间: 2012-11-15 14:27
回复 18# py



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


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


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

   

   
作者: 346196247    时间: 2012-11-15 22:24
农民路过看大神们的新语言
作者: py    时间: 2012-11-16 07:36
回复 21# iakuf

谢谢回复。

1. 我就是说他内部用了自己的JSON解析模块。他应该用更通用的JSON::XS。不过这点也无大碍。
2. 可能是我之前了解的还太肤浅。有时间我再用看看。听着不错。。
3. 作者是以前的catalyst的开发者。

我还有个问题。
目前我是用Dancer+Twiggy运行的web服务,本考虑用Starman,但我需要用AnyEvent,Starman不支持事件,纵有再多优势也没法用。
Mojolicious也是需要Twiggy才能支持事件的,但Twiggy的性能比Starman都差不少。你打算使用Mojolicious+Twiggy还是Mojolicious+Feersum?(Feersum很久没更新了,貌似是不再维护了)
   
作者: ykredrum    时间: 2012-11-16 12:40
收藏起来慢慢研究,楼主就是扶凯吧,从你博客上学了很多,谢谢啊
作者: weishigoname    时间: 2012-11-20 16:39
mark:wink:
作者: 我的生活代言    时间: 2012-11-22 08:29
:wink: 不错,加强学习多顶好贴
作者: iakuf    时间: 2012-11-22 13:39
py 发表于 2012-11-16 07:36
回复 21# iakuf

谢谢回复。

直接用它自己的 Hypnotoad 启动就好了,如果没有必要使用 Plack 的中间件的话。
作者: cnvbird    时间: 2012-11-23 15:09
我不会perl,呜呜。。。。。。
作者: 201092244    时间: 2012-11-25 15:04
支持搂主,最近也在打算用mojo做个小型网站
作者: iakuf    时间: 2012-11-26 14:06
Mojolicious::Guides::Growing 译完,基本除了模板技术,其它都有了。
作者: iakuf    时间: 2012-12-05 22:49
全部译完了,欢迎各位使用。
作者: Perlvim    时间: 2012-12-05 23:16
iakuf 原来是扶凯,社区精英啊
作者: q15928    时间: 2013-01-10 08:05
新手来学习。。。
请问可以在Windows下用吗?需要安装Apache Server之类的?

谢谢!
作者: q15928    时间: 2013-01-10 08:06
新手来学习。。。
请问可以在Windows下用吗?需要安装Apache Server之类的?

谢谢!
作者: iakuf    时间: 2013-01-11 10:21
Perlvim 发表于 2012-12-05 23:16
iakuf 原来是扶凯,社区精英啊

精英谈不上,会一点,共享一下,也一起学习学习。
作者: iakuf    时间: 2013-01-11 10:23
q15928 发表于 2013-01-10 08:06
新手来学习。。。
请问可以在Windows下用吗?需要安装Apache Server之类的?


我想是可以在 Windows 下使用的。不需要安装 Apache  Server。本身测试的时候,你可以使用 morbo 这个来做测试用的服务器。当然我没测试过,你使用有问题可以考虑联系我。我帮你看看
作者: rubyish    时间: 2013-01-11 10:55
iakuf 原来是扶凯啊!
谢谢!
作者: laputa73    时间: 2013-01-15 10:54
mark.
和nodejs一起学
作者: q15928    时间: 2013-01-16 11:18
iakuf 发表于 2013-01-11 10:23
我想是可以在 Windows 下使用的。不需要安装 Apache  Server。本身测试的时候,你可以使用 morbo 这个来 ...


先谢谢了。我们部门现在Windows 2008 Server 上用Apache + MySQL + mod_perl来实现内部网页(主要是MySQL数据库的查询和图表的动态生成),我想试试Mojo是否合适来做这些。
作者: gangbo    时间: 2013-02-01 13:46
这个框架用过,楼主强大啊,这么快翻译了
作者: blackfur    时间: 2013-03-04 02:04
Page not found... yet!

None of these routes matched your GET request for /t.pl, maybe you need to add a new one?
Pattern         Methods         Name

/perldoc/*module
在windows下学习,已经用morbo命令打开测试服务器了,在浏览器键入http://127.0.0.1:3000/t.pl却提示找不到文件,是不是还有什么地方没配置好,新手求指导。t.pl文件是复制教程里面的,如下:

  use Mojolicious::Lite;

  # Route leading to an action
  get '/foo' => sub {
    my $self = shift;
    $self->render(text => 'Hello World!');
  };

  app->start;
作者: xo1980    时间: 2013-03-04 16:57

支持楼主
支持楼主
作者: xo1980    时间: 2013-03-04 16:58

支持楼主
支持楼主
作者: iakuf    时间: 2013-03-04 18:47
回复 41# blackfur

http://127.0.0.1:3000/foo


   
作者: blackfur    时间: 2013-03-05 19:16
thanks


   
作者: xo1980    时间: 2013-03-06 09:19
))))))
作者: xo1980    时间: 2013-03-06 09:19
))))))
作者: lyb3708621    时间: 2013-03-06 14:54
新人,来这里学习一下,还不怎么看的懂
作者: barrelfish    时间: 2013-06-28 13:27
:wink::wink:
作者: laputa73    时间: 2013-08-19 10:47
如果用于实际部署,mojo搭配什么webserver比较好?
用自带的hypnptoad,还是twiggy或者feersum?
我用hypnotoad测得只有1500r/s左右啊(ab -c 10 -t 1 -k, 本机测和两台机器测差不多)
参照这个差远了
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3557405

-bash-3.2$  cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
      8  Intel(R) Xeon(R) CPU           E5606  @ 2.13GHz
perl 5.18 安装了EV





作者: yakczh_cu    时间: 2013-08-19 12:59
  1. use Mojolicious::Lite;

  2.    # Route leading to an action
  3.    get '/foo' => sub {
  4.      my $self = shift;
  5.      $self->render(text => 'Hello World!');
  6.    };

  7.    app->start;
复制代码
hello world 大pk

作者: zhengsenlin888    时间: 2013-08-19 19:59
回复 1# iakuf


    收藏。
作者: hejianbu437    时间: 2013-08-19 20:10
这个支持https自动登入吗?是否可以ssl证书加密、
作者: iakuf    时间: 2013-08-22 21:47
回复 53# hejianbu437

全功能,都支持
   
作者: laputa73    时间: 2013-08-22 22:02
mojolite作的hello.app要比plack+简单hello.psgi 慢一半(比twiggy慢得更多)
用twiggy启动mojo的hello和morbo差不多(这个说明不是web server的问题,而是框架的影响吧)
这个正常吗?



作者: iakuf    时间: 2013-08-22 22:19
回复 55# laputa73


   正常.这点性能的影响没事, 你的程序写完后会成指数性能下降的.但如果能不 block 会有很大的帮助,你以后慢慢体会.
作者: hutong236    时间: 2013-08-29 09:43
你好,扶凯,请问

<%= url_for('echo')->to_abs %>
这段代码中的"url_for"和"to_abs "是怎么理解的?从那个资料里找到的,我找一天也没有找到?
谢谢!
作者: iakuf    时间: 2013-08-30 10:09
本帖最后由 iakuf 于 2013-08-30 10:09 编辑

回复 57# hutong236

在 ep 模板技术中的 url_for 这个关键字是 Mojolicious::Plugin::DefaultHelpers 这个默认插件所提供的功能之一. 上次我在 Perl 大会上介绍和推荐过这个模块.

Mojolicious::Plugin::DefaultHelpers

上面这个 url_for 其实是 Mojolicious::Controller 中 url_for 方法的别名.
注意这个方法是 Mojo::URL 这个对象.  所以 url_for->method 可以接所有方法 Mojo::URL 对象所提供的方法.

Mojo::URL

   
作者: laputa73    时间: 2013-08-30 14:28
twiggy和mojo的配合是否有问题?
印象里有个帖子提过,搜不到了。
我的现象是twiggy -listen 9000 app.pl
用ab或者webbench -c 10 -t 1 跑一轮测试就假死了
作者: hutong236    时间: 2013-08-30 15:34
回复 58# iakuf

感谢!文档看得不全.
   
作者: hutong236    时间: 2013-08-31 23:26
本帖最后由 hutong236 于 2013-08-31 23:28 编辑

扶凯,又麻烦你了,
我看Mojocast #3: Authentication, Helpers, and Plugins 视频,里有段代码测试和上面结果不一样.
按视频上输入的username为"aaa"或是password="bbb",都能跳到"$self->render(text => 'Welcome to Moncorp1'); ",但是我测试结果
输入的username不为"aaa"或不是password="bbb",都能跳到"$self->render(text => 'Welcome to Moncorp1');",怎么都不显示"$self->render(text => 'denied')",不知道是我那里搞错了?
谢谢!
  1. #!/usr/bin/perl -w.
  2. use Mojolicious::Lite;

  3. get '/login' => sub {shift->render('login')};


  4. post '/momcorp' => sub {
  5.         my $self = shift;
  6.         print $self->param('password'),"\n";
  7.         $self->render(text => 'denied') if
  8.           $self->param('username') ne 'aaa' or
  9.           $self->param('password') ne 'bbb';
  10.         $self->render(text => 'Welcome to Moncorp1');
  11. };

  12. app->start;
  13. @@ login.html.ep
  14. <h1>Login</h1>
  15. <form method="post" action="/momcorp">
  16.         Username:<input type="text" name="username" />
  17.         Password:<input type="text" name="password" />
  18.         <input type="submit" value="Login" />
  19. </form>
复制代码

作者: gzadsluser    时间: 2013-09-02 01:12
回复 61# hutong236


    两个render肯定是显示最后一个啦,验证失败要立即return,否则最后一句还是会执行。
作者: hutong236    时间: 2013-09-02 15:43
gzadsluser 发表于 2013-09-02 01:12
回复 61# hutong236

但是我看人家视频上都没有加return,测试也过啊.
只是后面加了以下代码,换成条件and就行了.

  1. under sub {
  2.         my $self = shift;
  3.         return 1 if $self->params_auth( username => password => sub{
  4.         return 1 if "@_" eq 'aaa bbb'
  5.         });

  6.         $self->render(text => 'denied');
  7.         return;
  8. };

  9. post '/momcorp' => sub {
  10.         my $self = shift;
  11.         $self->render(text => 'denied') if $self->params_auth( username => password => sub{
  12.                 return 1 if "@_" eq 'aaa bbb'
  13.         });
  14.         $self->render(text => 'Welcome to Moncorp1');
  15. };
复制代码

作者: iakuf    时间: 2013-09-03 06:03
回复 63# hutong236

gzadsluser 讲得对,  两个 render 肯定是显示最后一个


   
作者: snriyt    时间: 2013-09-08 15:40
回复 1# iakuf


    假设如下语句:

$res = db->query(xxx);
$self->render(msg=>$res);

模板里面

%= $msg

会是乱码。但是如果加上
% use Encode;
%= decode_utf8($msg)
则输出正常。
推测应当是mojo在render的时候对传入的数据进行了encode。如果不让它自动encode?
作者: iakuf    时间: 2013-09-08 21:52
本帖最后由 iakuf 于 2013-09-08 21:57 编辑

回复 65# snriyt
数据库连接的时候设置了 mysql_enable_utf8 没?
另外,在写程序的时候,可以直接在程序的 Controller 中前面加上
  1. use utf8;
复制代码
有关语言的东西,在 Mojo 的 Wiki 中提到过.链接如下
How to work with UTF-8?
作者: snriyt    时间: 2013-09-08 22:37
回复 66# iakuf


    3qs,我试试
作者: iakuf    时间: 2013-09-09 18:41
回复 67# snriyt
有结果记得回复,也好告诉大家能不能解决.

   
作者: snriyt    时间: 2013-09-10 12:49
好吧,的确能解决,不过必须
  1. my $dbh = DBI->connect($data_source, undef, undef, {sqlite_unicode => 1});
复制代码
下面就行不通的
  1. my $dbh = DBI->connect($data_source);
  2. $dbh-> {sqlite_unicode} =1;
复制代码

作者: iakuf    时间: 2013-09-10 13:22
回复 69# snriyt
这是原生的 DBI 模块的限制.在讲,他本来就没打算让你可以不断的修改字符集.


   
作者: hutong236    时间: 2013-09-22 17:22
本帖最后由 hutong236 于 2013-09-22 17:27 编辑

请问在这个框架下,实现曲线图有什么办法,能否有实例提供?
作者: iakuf    时间: 2013-09-23 09:43
回复 71# hutong236

看看 usionChartsFree  或者 amcharts.


   
作者: stanley_tam    时间: 2013-09-23 19:47
本帖最后由 stanley_tam 于 2013-09-23 19:56 编辑
  1. 初学Mojo,像下面的例子,运行起来都自带web 服务器,求Mojo与apache子类的web服务器的结合的资料。:)
  2. use Mojolicious::Lite;
  3. get '/' => {text => 'Hello World!'};
  4. app->start;
复制代码
回复 1# iakuf


   
作者: iakuf    时间: 2013-09-23 23:03
回复 73# stanley_tam

用过 php-fpm 没, 你可以参考一下 fastcgi 和 apache 一起使用的例子.这个并不能象 mod_perl 一样直接在 apache 内部运行, 需要通过端口来做 fastcgi 之类的交互.

你可以看看下面的文档
Apache Mojolicious
   
作者: qq27898    时间: 2013-09-24 16:42
支持,楼主好样的
作者: yakczh_cu    时间: 2013-09-25 12:20
https://metacpan.org/module/Mojo:\"\"OM::CSS  这个文档上的例子
  1. use Mojo::DOM::CSS;

  2. # Select elements from DOM tree
  3. my $css = Mojo::DOM::CSS->new(tree => $tree);
  4. my $elements = $css->select('h1, h2, h3');
复制代码
这个$tree是怎么根据什么出来的,是不是需要一个html文件?


作者: 104359176    时间: 2013-10-29 14:51
up then could check it any time!
作者: aef25u    时间: 2013-11-12 21:16
请问Mojolicious::Lite如何修改使用template_toolkit?假如home.html.tt模版放在/templates
作者: iakuf    时间: 2013-11-17 10:42
回复 78# aef25u


Mojolicious:lugin::ToolkitRenderer

好几个 TT 的插件,任意找一个
   
作者: 523066680    时间: 2018-12-02 19:39
回复 79# iakuf

中文站挂了~

作者: tonny0830    时间: 2019-01-04 11:47
Perl在企业级开发中基本没人用了,这样的框架个人玩玩就可以了,企业级开发不适用。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2