github:git clone -b v3.0 https://git.oschina.net/xiuno/xiunobbs

安装包http://bbs.xiuno.com/down/xiuno_bbs_3.0.tar.gz

 
前言:

离最后一次更新已经 2 年了,Xiuno BBS 终于迎来了它的新版,这是一个全新架构的版本,从底层到前端都是全新的。

这个版本更加的精简,它只有 20 多个表,800k+,运行速度非常快,处理单次请求在 0.01 秒级别,在有 APC、XCache 的环境下可以跑到 0.00x 秒,完美支持 PHP7,对第三方类库依赖极少,仅仅前端依赖 jquery.js/zepto.js,作者认为它就像一辆纯手工打造的法拉利,动力强劲,没有一丝赘肉,方便部署和维护,是一个非常好的二次开发的基石。

功能方面

探索轻论坛在移动背景下的交互模式

1. 赞。抛弃了传统论坛的,评分,精华,高亮等内容筛选功能,引入了“”的机制,帖子的好坏,用户组的升级、主题颜色等都与与“赞”紧密关联起来。

2. 全新编写的编辑器支持:表格、增删行列、HTML5 客户端图片缩略,降低服务端 CPU 运算压力、支持 QQ 截图直接粘贴。

3. 支持游客发帖、回帖、点赞。

4. 支持自定义 URL,有利于 SEO,网址可以像这样:http://bbs.xiuno.com/xiuno-bbs-3-official-upgrade

5. 支持 SMTP 邮件发送,邮件列表设置

6. 支持 IP 限制:限制每日 IP 发帖数,发邮件数,上传附件数

7. 手机版本

8. 更多不一一列出

PHP 框架:XiunoPHP 3.0
尽可能少的采用 OO,大部分函数式封装,有利于 HHVM 编译 / opcode 缓存,完美支持 PHP7 ,并且倡导以下原则:

1. 不要 include 变量

2. 不要采用 eval(), 正则表达式 e 修饰符

3. 不要采用 autoload

4. 不要采用 $$var 多重变量

5. 不要使用 PHP 高级特性 __call __set __get 等魔术方法

6. 尽量采用函数封装功能,通过前缀区分模块。

前端框架:XiunoUI

无图片的 UI 库,兼容到 IE8,参考了 BootStrap,简化了 class 命名,砍掉了鸡肋的响应式布局,点击查看真相

编辑器:XNEditor
它基于 zepto.js,兼容 jquery.js,只有 82k,但是实现了标准浏览器下的编辑器常见功能:加粗、斜体、颜色、字体、字号、表格、图片上传、文件上传、客户端缩略、全屏,HTML 切换、上一步下一步等功能。

因为他不用考虑IE678,所以可以实现的非常优美,短小。写过编辑器的同学应该知道,编辑器最大的一个坑就是 IE 的 Range 跟 w3c 定义的 Range 的巨大鸿沟。如果不考虑 IE,代码可以精简很多。

特别要强调一点:支持了 QQ 截图直接粘贴,非常的方便,结合贴图库插件存到第三方可以方便又不占用自己的空间。

Xiuno 开发手册:

下载地址:http://bbs.xiuno.com/thread-10450.htm

Xiuno BBS 3.0 下载地址:

http://bbs.xiuno.com/down/xiuno_bbs_3.0.tar.gz (包含最新补丁)

补丁包:

XN3-20150902-20150910.zip

XN3-20150902-20150911.zip

XN3-20150902-20150915.zip

XN3-20150902-20150918.zip

XN3-20150902-20151010.zip

XN3-20150907-20151110.zip   (此补丁文件比较多,修改了短标签)

XN3-20150902-20151210.zip (全补丁包,最后一次,以后将以增量的方式发布补丁)


注意:

Xiuno BBS 3.0 需要配置 URL-Rewrite,您如果还没接触过,请查看:http://bbs.xiuno.com/thread-2.htm

捐赠支付宝账号:(因为 Xiuno 采用 MIT 协议发布,并没有任何商业收入):

axiuno@gmail.com

如果安装碰到了问题,实在搞不定,请加群咨询作者。

【站长交流群】182731161 (快满了) 474834730(新群)

【开发者群】2759536

山雨欲来风满楼,万木无声知雨来。Xiuno BBS 3.0, 已经到来!

axiuno@gmail.com

2015/9/1

Change Log

=============================

2015/9/2

修正贴图库插件在 PHP  5.6 下上传失败的问题,PHP 5.6 需要使用 curl_file_create() 函数

2015/9/3

修正自定义URL编辑BUG:http://bbs.xiuno.com/thread-9349.htm

2015/9/5

去掉用户组板块上传权限限制

登陆、注册按钮宽度微调,正在登陆不再换行

 

2015/9/7

修正一处可能导致百度蜘蛛识别子域名错误的代码 <base href="./" >

2015/9/8

修正注册成功后跳转到 setpw.htm

 

2015/9/9

管理员不受禁止IP限制

修正代码高亮插件依赖的 class 被 xn_html_safe() 过滤的问题

修正插件重复安装导致多重代码的问题

修正编辑帖子权限判断的问题

修正最新贴数字显示 max(last_date, create_date)

2015/9/10

count() 改为 Object.count(),避免 JS 命名冲突

2015/9/11

修正编辑器插入代码换行的问题

2015/9/15

修正首页缓存最后更新时间显示问题

修正版主权限判断

2015/9/18

修正注册后跳转提示错误

2015/9/22

修正 XiunoPHP redis 读写问题

框架支持 /user/login 这种格式的 URL

2015/9/28

修正 plugin_install_replace() str_replace() 函数参数顺序问题

2015/10/10

修正 IIS Rewrite 导致的 REQUEST_URI 不正确

修正贴图库函数第二个默认值为空

QQ 登陆插件手机版也加上

2015/10/12

修正 IIS6 REQUEST_URI 不准确的问题,应该获取 HTTP_X_REWRITE_URL

2015/10/18

修正删除最后回复,首页最新贴列表更新的问题

2015/10/19

修正找回密码启用以后可能会被暴力破解验证码的问题,加入一小时只能尝试5次的限制

2015/11/2

修正中英文连续字符换行的问题,word-break: break-all 改为 break-word

2015/11/6

PHP7 不支持短标签,统一修改 <?=$var?> 为 <?php echo $var; ?> 不够优美,但是为了效率,忍了。

2015/11/10

修正部分手机浏览器下编辑器中触屏输入不触发 onkeyup 事件,加入 oninput 后 ok 了

2015/11/13

修正某些环境下 POST pc/my-uploadavatar.htm 相对路径报 404 的问题

2015/11/16

赞改为喜欢,可以当做收藏使用了,取消只看赞同,取消楼层点赞,默认显示楼层。

2015/11/18

加入了背景底纹,适度美化

2015/11/22

贴图库插件加入 CURL 模块检测(部分空间未开启 CURL 模块)

2015/12/8

修正查看用户喜欢翻页第二页为空(翻页参数未带 $_uid)

加入双核浏览器渲染模式制定:<meta name=“renderer” content=“webkit|ie-comp|ie-stand”>

2015/12/10

修正编辑器回车换行偶尔出现内容复制

编辑器加入代码类型修改(右键菜单修改),默认为黑色风格

解决导航多行高度盖住内容的问题

2016/1/13

修正 PHP7 的两处兼容性问题,XML 解析库构造函数名称为 PHP4 的同名写法。

 

Xiuno BBS 3.0 轻论坛程序正式版发布。的更多相关文章

  1. Xiuno BBS 4.0 修改时间显示

    修罗开源轻论坛程序 - Xiuno BBS 4.0Xiuno BBS 4.0 是一款轻论坛产品,前端基于 BootStrap 4.0.JQuery 3,后端基于 PHP/7 MySQL XCache/ ...

  2. Redis 3.0正式版发布,正式支持Redis集群

    Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...

  3. RestServer 2.0 正式版发布

    RestServer 2.0 正式版发布 使用许可&版权说明 在保持本软件完整的情况下可以将本软件用于任何商业用途. 本软件可以自由传播,但是请保持软件相关文件和说明文档完整. 未经许可不得将 ...

  4. Java 开源博客——B3log Solo 0.6.5 正式版发布了!

    Java 开源博客 -- B3log Solo 0.6.5 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,也是 B3log Solo 的最后一个大版本. 这个版本发布后,B3log Solo ...

  5. .NET Core 3.0正式版发布

    是的,.NET Core 3.0正式版发布了,令人兴奋. WPF 其实,.NET Core 2.1开始已经是个很完善的版本,3.0又带来了什么呢?我站在我的使用角度来看,最最令人振奋的就是:能用WPF ...

  6. Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Nest.js 6.0.0 正式版发布了.Nest 是构建高效.可扩展的 Node.js Web 应用程序的框架.它使用现代的 JavaSc ...

  7. .NET 5.0 RC1 发布,离正式版发布仅剩两个版本

    原文:http://dwz.win/Qf8 作者:Richard 翻译:精致码农-王亮 说明:1. 本译文并不是完全逐句翻译的,存在部分语句我实在不知道如何翻译或组织就根据个人理解用自己的话表述了.2 ...

  8. Appium路线图及1.0正式版发布

    Appium更新的速度极快,从我试用时候的0.12到1.0(0.18版本后就是1.0),完全符合移动互联网的节奏. 更新可能会慢,可以多试几次 整理了testerhome上思寒发表的帖子,让我们来看下 ...

  9. Java 开源博客——B3log Solo 0.6.1 正式版发布了!

    Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...

随机推荐

  1. 【idea】idea重新打包依赖了父级项目的子级项目,父级项目代码改变,但是子级项目打包依旧是老的代码 问题解决

    最简单的方法: 就是单独打包父级项目,然后替换本地maven仓库中的父级项目的jar,然后重新打包子级项目,就可以了.

  2. docker get 到的命令 (持续更新)

    删除容器:  docker rm containerID (is running) 删除not running的容器:  docker ps -a   然后  docker rm -f contain ...

  3. 设置IE浏览器指定的功能

    if ($.browser.msie) { // Internet Explorer is a sadist. }

  4. Calendar 对象的使用实例

    1.Calendar demo例子 JavaCalendar 类时间操作,示范代码. public class CalendarDemo { private static SimpleDateForm ...

  5. [Mongo] 解决mongoose不支持条件操作符 $gt$gte:$lte$ne $in $all $not

    reference : http://blog.sina.com.cn/s/blog_4df23d840100u25x.html 找到mongoose的安装目录 /usr/local/lib/node ...

  6. Flask 学习(四)静态文件

    Flask 学习(四)静态文件 动态 web 应用也需要静态文件,一般是 CSS 和 JavaScript 文件.理想情况下你的服务器已经配置好提供静态文件的服务. 在开发过程中, Flask 也能做 ...

  7. JAVASCRIPT加密方法,JS加密解密综述(7种)

    一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...

  8. python数据库访问

    取得rs,使用,报错 sqlite3.Cursor' object has no attribute '__getitem__' 原因:使用时conn已经关闭了. 解决:用fetchall取出传递回来 ...

  9. MFC画图总结-DIB图形绘制

    參考文档: http://blog.csdn.net/hnust_xiehonghao/article/details/37652927 http://blog.sina.com.cn/s/blog_ ...

  10. Scalatra文件下载时中文乱码

    可以采用Servlet平台的解决方法进行解决: Ok(file.get, Map( "Content-Type" -> (file.contentType.getOrElse ...