听一个同事说的,他们项目正在开发,于是就找了篇文章:
http://hi.baidu.com/comdeng/blog/item/15b06af06ede6aaba50f52e0.html
基于UWA(Universal Widget API)的Sohu Open Widget开发经验总结
这几天忙活一个Sohu Open Widget。搜狐博客开放模块(Sohu Open Widget,简称SOW)是一个由搜狐公司推出、基于UWA(Universal Widget API)规范、应用于多个平台的Widget标准。经过最初的不解,到中间的迷惑,到最后的释然,感觉SOW的确是一个不错的东东。
下面来讲述一下我的开发模式:
一、一个widget由3个页面构成:
1.widget.xhtml 这个页面负责模块的使用导航。因为模板是要做成通用的,因此需要在页面最初显示的时候给予一些信息提示,这对于用户初次使用将起到很好的导航作用。这是其一。最重要的当然还是其控制作用了。控制作用即它要完成页面的配置,并将配置信息发送给相应接口,在接收到返回的信息之后,将对模块的页面实行更新。
2.interface.php 这个页面负责对配置信息进行预处理,并将处理好的信息发送给相应的业务逻辑。并将业务逻辑返回的数据回送到widget.xhtml页面。
3.implement.php 这个页面负责具体业务逻辑的实现,并返回数据给interface.php。
这也可以算是一个简单的三层系统了。
[img]/upload/attachment/132230/540cfc5c-4a85-3877-a247-c114fbb5843e.gif[/img]
最后,对于要实现和某网站的某一用户绑定的widget,需要注意如下事项:
一、必须仔细阅读相关的开发文档,看清哪些描述信息是必须的,哪些参数是必须要添加的。比如:
1、js和css都不能是外联的,<head>里边title信息是必须的等等,否则很有可能引起xhtml加载失败。如果出现加载失败的情况,一时半会又找不到症结所在,可以通过http://validator.w3.org提供的验证功能对错误位置进行查找。一般最有可能的错误就是标签没有闭合符号/。比如<hr size="1">就会引起错误,正确的应该是<hr size="1"/>。
2、代码的位置错误。比如将<widget:preferences>放到body中间,正确的应该是在head标签中。
二、提供给sohu的widget,应该是一个xhtml页面,这个页面不管业务逻辑,只负责widget的导航和模块参数的配置以及模块参数的发送。应该另外提供一个隐蔽的接口来实现对模块参数的处理和数据的返回。
三、在widget没有通过sohu审核之前,模块参数设置都将通过cookie的形式保存;当通过审核后,参数设置则会无条件的发送给sohu保存到其数据库中。也就是说,这些模块参数都将会保存到sohu的数据库中,因此,必须考虑到用户信息的安全。因为通过某些技术手段,这些配置信息能被截取到。
四、sohu的API接口不提供对模块参数的验证,因此验证逻辑都需要通过js来完成,这对于widget的正常运转起着很重要的作用。因此,不要忽视对数据的验证。
五、尽量不要设置css样式,直接使用sohu提供的css样式将能给模块最大的兼容性。
Widget开发最佳实践:
http://blog.sina.com.cn/s/blog_4696030f0100dey0.html
http://hi.baidu.com/comdeng/blog/item/15b06af06ede6aaba50f52e0.html
基于UWA(Universal Widget API)的Sohu Open Widget开发经验总结
这几天忙活一个Sohu Open Widget。搜狐博客开放模块(Sohu Open Widget,简称SOW)是一个由搜狐公司推出、基于UWA(Universal Widget API)规范、应用于多个平台的Widget标准。经过最初的不解,到中间的迷惑,到最后的释然,感觉SOW的确是一个不错的东东。
下面来讲述一下我的开发模式:
一、一个widget由3个页面构成:
1.widget.xhtml 这个页面负责模块的使用导航。因为模板是要做成通用的,因此需要在页面最初显示的时候给予一些信息提示,这对于用户初次使用将起到很好的导航作用。这是其一。最重要的当然还是其控制作用了。控制作用即它要完成页面的配置,并将配置信息发送给相应接口,在接收到返回的信息之后,将对模块的页面实行更新。
2.interface.php 这个页面负责对配置信息进行预处理,并将处理好的信息发送给相应的业务逻辑。并将业务逻辑返回的数据回送到widget.xhtml页面。
3.implement.php 这个页面负责具体业务逻辑的实现,并返回数据给interface.php。
这也可以算是一个简单的三层系统了。
[img]/upload/attachment/132230/540cfc5c-4a85-3877-a247-c114fbb5843e.gif[/img]
最后,对于要实现和某网站的某一用户绑定的widget,需要注意如下事项:
一、必须仔细阅读相关的开发文档,看清哪些描述信息是必须的,哪些参数是必须要添加的。比如:
1、js和css都不能是外联的,<head>里边title信息是必须的等等,否则很有可能引起xhtml加载失败。如果出现加载失败的情况,一时半会又找不到症结所在,可以通过http://validator.w3.org提供的验证功能对错误位置进行查找。一般最有可能的错误就是标签没有闭合符号/。比如<hr size="1">就会引起错误,正确的应该是<hr size="1"/>。
2、代码的位置错误。比如将<widget:preferences>放到body中间,正确的应该是在head标签中。
二、提供给sohu的widget,应该是一个xhtml页面,这个页面不管业务逻辑,只负责widget的导航和模块参数的配置以及模块参数的发送。应该另外提供一个隐蔽的接口来实现对模块参数的处理和数据的返回。
三、在widget没有通过sohu审核之前,模块参数设置都将通过cookie的形式保存;当通过审核后,参数设置则会无条件的发送给sohu保存到其数据库中。也就是说,这些模块参数都将会保存到sohu的数据库中,因此,必须考虑到用户信息的安全。因为通过某些技术手段,这些配置信息能被截取到。
四、sohu的API接口不提供对模块参数的验证,因此验证逻辑都需要通过js来完成,这对于widget的正常运转起着很重要的作用。因此,不要忽视对数据的验证。
五、尽量不要设置css样式,直接使用sohu提供的css样式将能给模块最大的兼容性。
Widget开发最佳实践:
http://blog.sina.com.cn/s/blog_4696030f0100dey0.html