HDwiki架构

HDwiki架构,第1张

MVC

php是嵌入式语言,最简单但也是最繁琐的就是php和html嵌套着写,开发维护绝对能让人产生暴力冲动.所以HDwiki采用了mvc模式,可以方便开发人员分工协作,提高开发效率,增强程序的可维护性和扩展性,而且还利用Controller将Model与View分离,降低它们之间的耦合度.

HDwiki中,一个请求发过来后(如index.php?doc-view-1),调度控制器(hdwiki.class.php) 会根据请求决定由哪个控制器的哪个方法去处理,本例中是doc这个控制器的doview方法去处理,这个控制器文件便是/control/doc.php,doc这个控制器的doview方法负责处理业务部分(比如数据校验,业务逻辑),调用模型(model)和视图(view).模型主要是根据要求取的数据,可以是从数据库去,也可是是从文件中去,还可以是从内存中去,归根到底一句话,根据业务逻辑处理数据.而视图就是要将我们处理好的数据显示出来,控制器将要显示的数据发给视图,视图根据要求就将显示的样式,html代码,要显示的数据处理成一个模板文件,最后显示出来.这样一个请求便处理完了.可能会有哥们要问了,为什么能根据index.php?doc-view-1能知道控制器是哪个,方法是哪个?这就是我们要说的下一个关键词---URL

URL

HDwiki中的url形式为index.php?doc-view-1,index.php是所有请求的唯一入口,query_string以"-"分割,第一个doc表示调用的控制器文件,路径是/control/doc.php,第二个"view"是要调用的控制器的方法doview,后面的参数"1"(或者更多的参数)均是doview方法中需要的参数,顺序是自定义的,等等,url中明明是view,怎么调用的是doview方法呢?在hdwiki系统里可以从url中知道要访问的方法名称,但是如果control中有方法不想被url直接访问,也就要区分开,所以需要在所有url中集中处理,能被直接访问的统一加do.

权限

HDwiki的权限可能是最独树一帜的,每个用户的是否有访问权限完全根据url来判断.我们给用户分组,比方说管理员组,词条管理员组,普通用户组,匿名组等,每个组都有一坨的可访问的url列表,你在哪个组,你就只能访问那些url,也就是那些应用,每个url都是一个权限控制.你能访问的url都会被控制.当然一个url中大家都可以看,但是有部分是有限制的,这就需要做点点调整,比如匿名用户看到的是"请登录",登录用户看到的是"退出",这个我们就会辅助以用户组id来判断.

标签

hdwiki的标签功能能让站长和开发者更方便快捷的添加要显示的各种数据,基本表现形式是在页面中添加例如 {hdwiki:docnumber /}的数据,便能显示总词条数.其原理也很简单,就是根据标签正则匹配,然后调用相应的方法去调用数据,当然,每个标签要调用的方法都已经写好了全部保存在model/tag.class.php中,以{hdwiki:docnumber /}为例,当调用页面时,它被解析成$_ENV['tag']->docnumber(),而这段代码便是去调用/model/tag.class.php的docnumber这个方法,这个方法便调出总词条数的数值.这样,只要在tag.class.php中存在的方法,就可以在任何页面调用了.

以用凡科建站做网站为例:

1.搜索凡科建站,进入官网之后点击右上角的“免费注册”,在注册页面中输入手机号码/邮箱、图片验证码、手机/邮箱验证码以及密码之后点击注册。

2.注册完成之后,会自动出现“极速建站”界面,然后点击其中的“进入电脑网站”,正式开始网站建设。

3.然后就进入网站模板挑选页面,里面包含了多种行业、多类风格,企业可以随意挑选,选择一个最合适的网站模板并点击“使用”。

4.在网站制作界面的上方,进入“网站设计”页面后,可以对以下几方面进行设置,如:网站主题、网站横幅、页面版式、网站设置、百度优化等。

5.如果对某个模块不太满意,鼠标可停留在该模块右上侧,通过“编辑模块”即可自由修改图片和文字,同时还可以给各个模块添加上不同的特效。

6.然后,再为每个模块选择“模块动画”,包括淡入、飞入、放大、跳入等等,这些动画可以令页面更加活泼、生动。此时要注意所有动画的协调、统一。

7.企业可根据各自对网站设计的要求,按需选择一些适合的模块,比如点击页面中的浮动按钮“模块”,为页面添加更多实用模块,包括文本、产品展示、在线客服、新浪微博等等,然后编辑模块内容、样式,并将其移动到适合的位置。

8.同时,还有很多高级的功能,比如“当前位置”,这也就是常说的面包屑导航,但这个是按需选择的;另外还有在线视频、在线地图、魔方多图等等。

9.按照上面这些步骤完善好网站中的所有页面之后,点击右上角的“保存”按钮,然后点击“我的网址”中的网址,对网站进行预览,发现问题再返回继续完善,如果没有问题,一个网站就算制作完成了。

3000+模板任你选!点击这里获取简单快捷的网站制作工具:凡科建站

JspWiki 是一套非常容易安装的系统,使用到JSP与Servlet技术。

DevWiki是一个把页面存储在CVS中的Wiki引擎。

Chiki 点击次数:944

基于Struts的Wiki系统。

SnipSnap 是一个基于java的wiki + WebLog

FITNesse是一个 基于FIT的测试环境,. 它内建Wiki服务器,简单易用。

Friki部署简单,非常小只有67k

XWiki是一个强大的Java开源的Wiki引擎。它支持一些受欢迎的特性如:

* 内容管理(浏览/编辑/预览/保存),

* 支持附件,

* 版本控制,

* 全文本搜索,

* 权限管理

* 使用Hibernate进行数据存储,

* RSS输出与显示外部的RSS feeds,

* 多语言支持,

* 提供XML/RPC的API,

* WYSIWYG HTML编辑器,

* 导出为PDF

* Groovy脚本支持等等....。

ButorWiki这是一个基于java的Wiki,它是一个web应用程序,使用Butor Java 框架与struts MVC 框架。ButorWiki不需要数据库,而是使用文件系统进行数据存储。

Very Quick Wiki是一个JSPs与JavaServlets开发的WikiWiki。在Tomcat或其它容器上安装与运行都很简单。

UseModj这个Wiki引荐运用到Struts框架与Velocity模板。它具有一些新的特性:多语言支持,支持RSS 1.0(rdf),文件/图片的上传与下载,图片大小调整,可以用多种语言命名文件/图片

Platypus Wiki一个Semantic(语义的) Wiki Wiki Web.它提供一个简单的使用基于W3C标准元数据(metadata)的用户接口来创建Wiki页面.Platypus Wiki使用RDF(Resource Description Framework:资源描述框架),RDF Schema和OWL(Web Ontology Language:Web实体语言)来创建实体(Ontology)与管理元数据.

CsaWiki是一个利用Java开发的wiki引擎。它具有以下特点:100%Java(J2EE没有EJB),基于文件没有数据库,版本控制,PDF导出,简单的Wiki sintax等。

Elsie是一个用Java开发的Wiki引擎。它支持大多数流行wiki所应具备的特性包括:简单的wiki markup语法,内容管理(查看, 编辑,附件等...), 版本控制,访问控制列表和用户/组管理,可使用布局模板和CSS来控制外观,一个用于创建公共文档的文档模板,支持I18N和多种语言,搜索等. Elsie实现一个基于IoC的wiki内核并提供一组定义清晰,独立于servlet的wiki API 以便于使整个Wiki易于扩展和可定制。

Corendal Wiki是一个开源并已经被实际公司所使用的Wiki应用软件。它的界面非常简洁;不需要学习wiki语法, 通过使用WYSIWYG在线编辑器来代替;不需要用户管理,它实时连到活动目录(Active Directory)来重复使用用户账号和组,它应该是唯一一个与活动目录组相集成的Wiki,本地账号和组都可以用它来创建;所有的文章都具有一个层次结构,以使得内容易于管理;可以针对每一个页面设置不同的访问权限或自由更新或锁定或发布;用户可以使用订阅机制来获得更新通知,更新可以是每天或每周或立即通知;可以自定义界面布局(使用Velocity模板和CSS实现) 。Corendal Wiki基于Tomcat和MySQL运行。

JAMWiki采用Java/JSP开发的Wiki引擎。它提供许多MediaWiki应具有大部份的功能。JAMWiki不需要数据库支持,数据采用文件系统存储(但)并且易于安装。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11247574.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存