+ -
当前位置:首页 → 问答吧 → 如果现在你要写一套开源的项目,会选择什么框架呢?

如果现在你要写一套开源的项目,会选择什么框架呢?

时间:2012-07-12

来源:互联网


如果现在你要写一套开源的项目,会选择什么框架呢? TP? YII? CI?

还是选择自己写的框架架构?

想听听大家对现有开源项目(如二次开发),开源框架优劣,对开发开源项目的意见....

谢谢!


作者: jig68   发布时间: 2012-07-12

用自己的框架, 当你自己都无法控制的代码, 怎么放心给用户用?
开源程序在于简约, 用框架本身就1MB了.

作者: spser   发布时间: 2012-07-12

spser 发表于 2012-7-12 16:59
用自己的框架, 当你自己都无法控制的代码, 怎么放心给用户用?
开源程序在于简约, 用框架本身就1MB了.  ...

但是 开源框架大家都熟悉 是不是会更加有利于大家对这个开源项目的二次开发呢?

作者: jig68   发布时间: 2012-07-12

跟个人的技术水平有关

作者: phptree   发布时间: 2012-07-12

jig68 发表于 2012-7-12 17:07
但是 开源框架大家都熟悉 是不是会更加有利于大家对这个开源项目的二次开发呢?  ...

感觉用框架无法成为流行程序, 用户无法帮你推广.

比如现在的discuz, ecmail, 现在插件形势非常不利. 为什么? 因为框架太复杂.

作者: spser   发布时间: 2012-07-12

spser 发表于 2012-7-12 17:12
感觉用框架无法成为流行程序, 用户无法帮你推广.

比如现在的discuz, ecmail, 现在插件形势非常不利. 为 ...

嗯嗯 确实是,有时候觉得自己去倒腾二次开发,还不如自己在写一套...  可能我们站到更多的角度是开发的角度看开源项目

作者: jig68   发布时间: 2012-07-12

http://www.fenanr.com/index.php
这是我目前在弄的项目, 用户不多.

作者: spser   发布时间: 2012-07-12

spser 发表于 2012-7-12 18:01
http://www.fenanr.com/index.php
这是我目前在弄的项目, 用户不多.

这界面是不是找个专业的设计师设计下比较靠谱呢

作者: tabooc   发布时间: 2012-07-13

tabooc 发表于 2012-7-13 10:47
这界面是不是找个专业的设计师设计下比较靠谱呢

相信我, 不了解产品内涵的设计师, 就算做出页面来, 你也用不了.

作者: spser   发布时间: 2012-07-13

项目要开源,就得注意勾子,如果扩展困难,将无法解决二次开发.
这个跟设计模式有关.跟推广有关.
discuz,那种代码能到今天推广占很大的成份.否则没人看那破代码.
开源的项目注重向后兼容,否则将会流失大量的用户.
往往向后兼容,并且随着软件版本的升级,才慢慢成为这种效果,如果我要做开源项目,一定会将软件基础版本设置更高一些.这样在后期才不会越来越郁闷,兼容的问题搞垮你的项目 .

作者: zl8522115   发布时间: 2012-07-13

忘了说,在搞项目也不会上php,直接上python...
python这个语言是极限的, 精简语言,估计我在这世界上已经找不到比这个更精简的语言了..

作者: zl8522115   发布时间: 2012-07-13

Python历史负担沉重,也不精简,也不适合嵌入到网页里面

自从zope完蛋以后,我就再也不看python了

作者: drpython   发布时间: 2012-07-15

zl8522115 发表于 2012-7-13 16:09
忘了说,在搞项目也不会上php,直接上python...
python这个语言是极限的, 精简语言,估计我在这世界上已经找不 ...

python 2大劣势
1 版本与类库支持
2 强制缩进 不适合嵌入html

作者: 大尾巴   发布时间: 2012-07-16

python 适合写后台脚本,接口程序, 真写网页就罢啦

作者: guxiaochuan   发布时间: 2012-07-16

zend

作者: 1004034853   发布时间: 2012-07-19

CI~。

作者: lxylxy888666   发布时间: 2012-07-19

大尾巴 发表于 2012-7-16 17:41
python 2大劣势
1 版本与类库支持
2 强制缩进 不适合嵌入html

这.......

第一点反了,类库这块明明是python可以轰杀php一条街, 看看pypi和pear+pear2+composer的每日更新对比就知道了。 这几年php游离于框架外的独立类库除了几个大的,其他开发越来越萎缩了, 太监的也不少。 至于版本,100步就别笑50步了, php5.2x去年官方宣布停止维护, 有几个人给客户写的系统敢用上5.3特性的, 甚至很多人还在兼容5.1甚至4.x吧.........python那块至少2.x和3.x官方同时维护,大部分都是直接写2.x版. 不过真要用3.x, 官方也提供2to3工具,第三方类库里有six6这种可以同时做2,3兼容的类库, 大部分主流类库也基本做好了3.x兼容


第二点更囧了, 近几年最火的php模板twig就是仿的python里的django模板和jinja2

作者: winsock   发布时间: 2012-07-20

winsock 发表于 2012-7-20 07:38
这.......

第一点反了,类库这块明明是python可以轰杀php一条街, 看看pypi和pear+pear2+composer的每日 ...

没有反

版本与类库: 指的是

python3 出了几年了 , unicode等新特性都是非常吸引人的
但是如果为了使用类库, 就不得不用回python2  , 甚至为了某些类库还不得不降回2.5  , 而n多服务器上默认装的是2.4

你所说的兼容 , 我根本就没看到 , 甚至很多主流类库框架, 不支持到2.6以上的多的是
当你平时写的都是3.x的程序 ,  可是一需要用类库就傻脸了 , 你再先进 , 人家再落后 , 但开发速度就是比你快 , 类库什么的随便用啊 .
你能? 要么费大力气去找第三方修改的 不知有多少bug的 for 3.x版本 , 要么自己造一个轮子?
这种感觉很好么?


模板: 指的是php 可以直接嵌入html , 现在大多数网站开发,根本不使用模板引擎 , 直接就用php  ,因为php自身本身就是一个模板引擎
开发速度 学习成本 debug难度都很有优势

而python语法强制缩进 , 无法直接嵌入html , 必须使用模板引擎和模板语法 , 徒增学习成本
虽然有模拟成类似python语法的模板语法 ,
但你告诉我
def functionName():
var1 = 1
var2 = 2

这两个变量 哪个在顶级域 , 哪个属于函数私有?

你所谓的仿的什么模板 , 属于模板机制 , 是开发者的智慧不假 ,
但这些是任何一个语言都可以做出来 ,  和"语言特性","语言生态环境" 有半毛钱关系么?

作者: 大尾巴   发布时间: 2012-07-20

大尾巴 发表于 2012-7-20 09:14
没有反

版本与类库: 指的是
python3 出了几年了 , unicode等新特性都是非常吸引人的

如果在你的认知里, unicode算python3新特性的话, 我觉得这问题没必要再讨论下去了。

另外,只兼容2.6,2.7,不兼容2.4,2.5的见过, 有哪个包只兼容2.4, 不兼容2.5~2.7的?  劳架举两例出来, 当然,你要指win下面的xxxx_2.4.exe或者写死if  sys.version_info>(2,4): raise SystemError的当我没说...........

至于python3.x的应用, 打个比方,php5 05年就出了, php6在php5.3出来前一直在php的snaps页挂了4,5年, 你那时候敢给你用户写个php5/php6 only的程序么?  GAE都没搞出3.x的环境,凭什么我要去做出3.x的应用, 用six6包一下不就可以了,或者到时候直接2to3。 反正2.x/3.x官方双线维护, 倒还是那一句,反观php, 5.3以下官方全线不再维护了, 倒是大部分应用不敢只支持5.3~5.4

至于类库的丰富度, 笑死人, 我不否认php的类库曾经很火过, 04,05年phpclasses堪比SPAMER, 几天没看删邮件就得删死人, 但是现在,两三天一封一个库啊, 大把的库留着bug 4~5年没维护扔那了...pear那天几天更一个库,还是php4的,推广php5的pear2.php.net的量少到忽略不计。 拿什么去和ruby/python,甚至node比? 我玩了8年php, 这两年算是php社区环境最惨烈的时期

至于模板, php本身就是定位模板语言, 语言特性是后面慢慢加, 你拿一个模板出身的语言和一门语言比哪个更适合做模板, 还不允许后者用大把模板库, 这偏架拉的.........

  1. <!-- twig -->
  2. <ul>
  3. {% for user in users %}
  4. <li{{ class="active" | raw if user.active }}><a href="{{ user.url | raw }}">{{ user.name }}</a></li>
  5. {% endfor %}
  6. </ul>

  7. <!-- raw php -->
  8. <ul>
  9. <?php foreach($users as $user) :?>
  10. <li<?php if($user.active):?> class="active"<?php endif; ?>><a href="<?php echo $user->url() ?>"><?php echo htmlspecialchars($user->name); ?></a></li>
  11. <?php endforeach; ?>
  12. </ul>
复制代码
话说,5~6年前phpx,phpe关于模板论战,我一向是挺原php当模板的那派, 主要当时smarty,phplib太恶心了, 但是你看看上面两段, 你觉得正常人更能接受哪个?

作者: winsock   发布时间: 2012-07-20

winsock 发表于 2012-7-20 12:22
如果在你的认知里, unicode算python3新特性的话, 我觉得这问题没必要再讨论下去了。

另外,只兼容2.6 ...

1 unicode 支持很重要
采集网页转码需要多写多少判断和代码不说
用ERIC 编译一个pyqt的ui,  2.x给我出来的是一堆乱码 , 3.x给我出来的是中文
这种例子多不胜数

2 老的python类库, 很好用 , 很久没有更新 不支持2.5+ , 而且找不到替代品的多得是  ,你没见过不代表没有
2.4 2.5 2.6 2.7 3.x
写一个程序要面对5个版本的兼容问题 , 那用类库还不如不用 , 直接自己造个轮子得了

3 你觉得php5.3以下版本 有什么值得官方继续维护的?
如果你自己写了个软件 2.4 2.5 2.6 2.7 3.x 5个版本 你准备维护几个呢?
还是强制升级?
如果全国用户都还在用QQ 2008 腾讯是不是要吐血了?

4 我有否认模板引擎么, 有不允许别人使用模板引擎么?
只是说无法将python语句直接嵌入html  相对于php是劣势
学习成本提高 , 而且python上手本身就比php难数倍

不知道你怎么理解的

5 我有说过php类库丰富么? 倒塌..
我说的是python类库丰富 , 但版本兼容问题太大 , "和没有类库差不多"     好么?

如果没有类库支持 我还用python干嘛
况且写网页需要用很多类库么?








好吧 再说一个python没有的
spl_autoload
python是很简洁
但是每当面对每个文件头部大把的  需要我手工维护的 import
就想杀人

作者: 大尾巴   发布时间: 2012-07-20

不用框架,过程模块化开发,简单高效,自己完全可控。。。

作者: 樰影   发布时间: 2012-07-20

本帖最后由 winsock 于 2012-7-20 20:33 编辑
大尾巴 发表于 2012-7-20 18:06
1 unicode 支持很重要
采集网页转码需要多写多少判断和代码不说
用ERIC 编译一个pyqt的ui,  2.x给我出来 ...
1 unicode 支持很重要
采集网页转码需要多写多少判断和代码不说
用ERIC 编译一个pyqt的ui,  2.x给我出来的是一堆乱码 , 3.x给我出来的是中文
这种例子多不胜数

我觉得和你在这扯淡真是浪费时间, python2.x不支持unicode? python3.x只是把python2.x的unicode类型改成了str, 把python2.x的str改成了bytes, 换件衣服的事你就说成新特性了?

至于乱不乱码,那是你程序写得有毛病,shebang/文件编码/环境编码一致,获得的文本内容(py2的str/py3的bytes)用正确的编码decode成unicode(py3的str)。你要这都能怪版本, 你不如直接去怪地球没吸引力


2 老的python类库, 很好用 , 很久没有更新 不支持2.5+ , 而且找不到替代品的多得是  ,你没见过不代表没有
2.4 2.5 2.6 2.7 3.x
写一个程序要面对5个版本的兼容问题 , 那用类库还不如不用 , 直接自己造个轮子得了

我觉得你用的python不是火星就是天顶星的, 因为地球的python2.x是向下兼容的,同一个两年前出的sqlalchemy 0.6能支持python2.4~2.7,python3.x, jython, 除了
win下面的xxxx_2.4.exe或者写死if  sys.version_info>(2,4): raise SystemError

, 连Cython生成c扩展都能直接支持2.x~3.x, 我真想不出地球上怎么可能有
老的python类库, 很好用 , 很久没有更新 不支持2.5+

. 当然,你只需要一句你没见过就行了,这句是无敌的。




3 你觉得php5.3以下版本 有什么值得官方继续维护的?
如果你自己写了个软件 2.4 2.5 2.6 2.7 3.x 5个版本 你准备维护几个呢?
还是强制升级?
如果全国用户都还在用QQ 2008 腾讯是不是要吐血了?

我没觉得php5.3以下需要官方维护, 我只是觉得很挺好笑,python的版本割裂性怎么也不可能严重得过php啊,php5.3以下都不维护了,可是大部分新项目的还是不敢用命名空间/匿名函数/...

我写软件兼容的python版本取决于最小版本, 至少目前我只考虑2.6,  那自然2.7的兼容是不用做。 3.x的兼容可以用six6或者2to3, 也不用额外, 这已经是我重复第三遍, 当然,你依然可以选择性无视


4 我有否认模板引擎么, 有不允许别人使用模板引擎么?
只是说无法将python语句直接嵌入html  相对于php是劣势
学习成本提高 , 而且python上手本身就比php难数倍

不知道你怎么理解的

就上面那段模板, 你觉得原生php还是twig的比较方便清晰?  当然你可以鄙视symfony搞出这东西,也可以鄙视silex,slim怎么意志不坚定用这玩意儿, 不过既然和python里的django template/jinja2几乎是同一个东西,那又构成什么额外的学习成本?

话说真要嵌入, 怎么不说c语言不能直接嵌入html?

当然,真要html嵌入python也不是不可以, mod_python的psp, quixote自己搞的混合模板, 前者youtube在用,后者豆瓣在用

python上手比php难? 国外广大拿python做启蒙语言的中小学生情何以堪

5 我有说过php类库丰富么? 倒塌..
我说的是python类库丰富 , 但版本兼容问题太大 , "和没有类库差不多"     好么?

如果没有类库支持 我还用python干嘛
况且写网页需要用很多类库么?

兼容性上面已经阐述无数遍了, 另外,地球语里"有很多"和"没有"不同意,这点上我和你无法沟通

类库很多当然有用, 你去看下rails就知道有良好的社区和积极的类库及类库周边开发氛围是件多么幸福的事了


好吧 再说一个python没有的
spl_autoload
python是很简洁
但是每当面对每个文件头部大把的  需要我手工维护的 import
就想杀人

python主张明显的Explicit is better than implicit, 比起autoload引入莫名其妙不知道在哪里的东西, 显性调用至少一目了然。 另外,有情提示, spl_autoload会严重影响各opcode缓存器性能。

顺便, 你要实现隐性的import是可以的, 自己去看werkzeug和flask的__init__.py


----------------------------------
以下是打脸帖,  我有点毛

IE9 如何判断本地图片大小?
ie6以后版本为了安全都不支持加载本地图片, 还IE9......


求以下2条SQL语句的效率对比
连这两句基本的sql都搞不懂, 你还写什么程序?


定义数组时不加引号会有什么弊端?
和数组没半毛钱关系?  php会把未定义常量转型成字符窜,有严重的性能问题和潜在的安全问题,php会报notice的。 你别告诉我你开发东西的时候,直接把所有的警告,提示,错误全给关了?


qee 网站挂了好久了,哪位通知廖大处理一下?
老廖抛弃你去玩python了, eurasia, 国产长连接框架


我建议以后拿道听途说的东西来装大尾巴狼的时候先考虑一下自己有几斤几两。 说句不好听的,既不懂php,也不懂python,更不懂sql,还不懂js的半桶水有什么好晃荡的

作者: winsock   发布时间: 2012-07-20

本帖最后由 大尾巴 于 2012-7-21 06:45 编辑
winsock 发表于 2012-7-20 20:15
我觉得和你在这扯淡真是浪费时间, python2.x不支持unicode? python3.x只是把python2.x的unicode类型改成 ...

你这人真有意思  火气有必要这么大么

因为地球的python2.x是向下兼容的

我讨论的真不是向下兼容,而是向上兼容, 谢谢
而我是一个
既不懂php,也不懂python,更不懂sql,还不懂js的半桶水

那么python2.4 和2.5的不同应该是你来教我

所以我说的是以下情况

类库
A最高支持2.4
B最高支持2.4
C最高支持2.5
D最高支持2.7
E最高支持3.2 最低支持2.5

另:火星 天顶星的类库多了去了
正如你吐槽php4.0的类库,就说明你自己内心是讨厌无休止的兼容旧版本的
为什么到了python就变了呢?





所谓的乱码, 还真不是我的程序有毛病,
个人力量有限, 我自己不可能去hack所有开源项目
如果你没有仔细阅读我的话我也不说什么了

python比php难是公认的事实
主要在于python和php的面向对象的程度

国外拿python做光大中小学生启蒙就能说明他不难了?
我小学的奥数题现在拿出来给成年人看, 也没见几个人说简单啊


还有 不同版本的特性就是特性 , 换个衣服也是特性 , unicode支持的方式改变了也是特性
就如php5.4  
数组可以写成 ['aaa' =>['bbb' => ['ccc' , 'ddd']]]
变量可以 $result = (new model)->findAll()['data']
这都是特性
python3 的unicode支持变好了 反而不是特性了?

一个语言的版本的升级 , 你觉得应该拿多大的东西出来说是特性?

---------------
关于打脸贴

1  很抱歉 , 我这里目前除了IE9 ,    都可以判断本地图片大小 , 以及加载
难怪你打脸的时候要"有点毛"

2 搞懂的东西继续推敲一下有错么?
由于本地没有数据, 向大家讨教一下经验之谈,  需要被打脸?

3 刚升级的5.4版本,打包到我所在的开发环境中,  由于默认php.ini 被环境重置 , 导致没有任何配置文件, 更没有报错级别
新开发环境配置的一个小失误 , 不至于需要您打我脸, 这么大的惩罚吧?

4 老廖抛弃谁和我没关系, 他去玩什么了我也知道 , 只是当时要看他的源码和文档 , 可是他网站打不开了
就这点破事, 也能惊动您打我脸?


还有: 讨论问题就是讨论问题
搞什么打脸又是人身攻击的, 跟你说话我也觉得挺耽误事

最后: 大尾巴 不是 大尾巴狼 谢谢
本人年少做运营时的时候网名 "九尾的查克拉" , 那个东西真是狐狸
06年创业时的网站老婆给起的名 "大尾巴宠物网" , 于是网名改为"大尾巴" , daweiba.com域名 也被我永久保留

作者: 大尾巴   发布时间: 2012-07-20

大尾巴 发表于 2012-7-20 22:04
你这人真有意思  火气有必要这么大么

可以停止争论了

各回各家,各找各妈,先把自己熟悉的语言的代码写好吧

学个语言没啥,写好高质量的代码 真心是件难事

作者: initphp   发布时间: 2012-07-21

说起来,有些开源程序也不怎么支持新版PHP的....

作者: leejianjun   发布时间: 2012-10-20

楼上打起来了,写项目选框架  Yaf最合适{:soso_e113:}

作者: 北海情书   发布时间: 2012-10-20

{:soso_e122:}围观掐架

作者: 剑枫   发布时间: 2012-10-22

看热闹

作者: mimizzee   发布时间: 2013-03-20

大家说的都很有道理,本人新手,比较熟悉php,个人觉得如果仅仅是网页的需求,用php比较适合,还有个人觉得php和python都各有自己的特点,开发语言没有最好只有最适合,如果说可以,个人觉得很多语言都能实现同样的效果的需求,区别只在后期维护,浏览器兼容,开发时间,开发难度等方面区别,我们应该根绝具体的需求选择适合的开发语言。

作者: tommercatfly   发布时间: 2013-03-21

zl8522115 发表于 2012-7-13 16:07
项目要开源,就得注意勾子,如果扩展困难,将无法解决二次开发.
这个跟设计模式有关.跟推广有关.
discuz,那种 ...

说到我心理去了,真的就一破代码,又难看懂,还不如自己写

作者: 256kb   发布时间: 2013-05-10