经过苦逼的大半年开发,我的web插件花方案最终得以实现。系统由WebAPP运行时(Web Framework)和WebAPP开发IDE(APP IDE)两部分组成。由APP IDE开发出来的WebAPP运行在Web Framework上。
接下来我将从WebAPP的开发、发布、WebSite中运行WebAPP这三点来展开本文。
开发步骤一。在IDE中创建了一个项目,然后打开项目。编辑”appConfig“ 文件。
”appConfig“文件里可以定义APP的名称、开发者、描述等信息。
use_global_classes:false
节点是设置是否在APP中使用自己的global类文件文件.类似aps.net的global文件。
use_global_verifyAC:false
节点是设置是否实现自己的访问控制方式。就是说某个APP可以是一个用户相关的系统,要实现自己的角色,权限的话就需要开启此选项。然后系统才会使用global类里相应权限验证方法。
error_handling_levels.global_classes:[ignore|interrupt]
节点是设置global类中对代码异常的处理机制。ignore:忽略所有错误,程序继续执行。interrupt:如果有错误,则程序将中断并且抛出异常。
开发步骤二。创建一个控件,控件实现一个表单。可以提交信息,并且打印出提交的结果。
系统中控件是必须在控件包中。而控件包是可以单独导入与导出,可以引用别人做好的控件到自己的项目中。这样可以大大的加快开发效率。
控件又包括UI控件,公共UI控件,自定义UI控件,自定义控件。特性如下
|
布局方式 |
外部使用 |
UI控件 |
包含在Panel里 |
|
公共UI控件 |
同上 |
仅支持。当APP安装之后,此类型的控件除了在APP内部可以使用。其他的APP也可以使用。 |
自定义UI控件 |
页面任何位置,布局以定位由控件自己实现。 |
|
自定义控件 |
无UI。此类型控件是无UI |
|
分别创建一个名为“widget_1”的控件包和名为“Form”的UI控件。
现在会发现,其实一个控件包含了三个文件。
tpl_content:模板文件。
tpl_schema:模板schema定义,约束tpl_content里标签的使用规则。
Form:控件类文件。
控件类执行流程:
ctor->render->domReady
在类中render方法里返回了一段html字符串。当domReady的被调用的时候得到htmlDoc对象,获取到html dom,然后给id=form1的表单元素绑定了一个submit事件。事件里把表单元素,title,tag,content的值取出来显示到id=tips的p容器里。
这里为了方便讲解,所以render里直接写了一段html。在正常开发中应避免使用这种方式,可以将html资源放到tpl_content里。这样其他人可以对这个控件的模板进行重写。为了防止模板被其他人改错。还可以为模板设置schema。这样编辑器就会自动对模板进行验证。
还可以在控件类中定义属性,当控件放入页面设计器中。可以对这个属性进行编辑。
开发步骤三。新建一个post_news的webform页面。并且使用前面开发好的控件。
在页面设计器中可以很方便的拖拽控件到页面中。在设置面板里可以设置控件的属性以及模板。
现在可以预览了。
页面预览有两种模式,[debug]模式下,会出现调试框。程序里使用的console.log语句会被打印出来。选择调试模式。
注意到控制台没,调试信息的顺序也就是前面说到的控件类的执行流程。ok,点击提交。
现在发生变化了,输入的信息也打印出来了。debug信息也有变化。这里要提一下,当点击发表按钮的时候页面是不会刷新的。在系统中,凡是在domReady中绑定的事件均是异步请求。
开发步骤四。现在我们项目中有一个控件和一张页面。现在我将这个APP打包并且发布到一个集中存储的地方,让别人也可以时用。
以此点击打包->发布。APP 开发现在就告一段落了。我们去网站上使用开发出来的这个APP吧。
使用:进入网站管理后台。
点击添加。
很快就找到刚刚发布的 “Jaws News”APP。点击安装。
进入页面管理。
点击预览。
也可以点击设计
通过这些讲解,大家应该对我设计的这个系统有了初步的了解。
这个系统纯粹是兴趣爱好,完全也是业余时间做的。在技术实现上很多都不是很理想,希望能和大家一起交流,互相学习。
上demo地址:http://vm-192-168-13-22.shengyun.grandcloud.cn/index.aspx