前端技术规范总结
第一部分:目录、文件、CSS命名方式
文件夹与文件名称、CSS样式命名、程序中的一些控件等等:
名称全部用小写英文字母、数字、下划线的组合,其中不得包含汉字、空格和特殊字符;目录名应以英文、拼音为主(不到万不得已不要以拼音作为目录名称,经验证明,用拼音命名的目录往往连一个月后的自己都看不懂)。尽量用一些大家都能看懂的词汇。使得你自己和工作组的每一个成员能够方便的理解每一个文件的意义。而且当我们在文件夹中使用“按名称排例”的命令时,同一种大类的文件能够排列在一起,以便我们查找、修改、替换、计算负载量等等操作。
例如:images(图形文件),flash(Flash文件)等。
命名方式:(性质_描素_位置_分类_数量)项相结合,采用简写、组合的方式形成通用规则。
例如:
news(性质)
news_title(性质_描素)
news_title_top(性质_描素_位置)
news_title_top_01(性质_描素_位置_数量)
news_title_top_a_01(性质_描素_位置_分类_数量)news_title_top_b_01(性质_描素_位置_分类_数量)
常用目录名:
data(数据库)images(图片)install(安装)templets(模版)include(包含)admin(后台)rss(定阅)media(媒体)config(配置)Script(脚本)Language(语言)style(样式)等
常用CSS名:
页面外围控制整体布局宽度:wrapper头:header内容:content/container页面主体:main侧栏:sidebar尾:footer等
第二部分:结构(XHTML)
网站的前端结构与表现分离,达到95%以上。正式上线后的网页代码结构要清晰、明朗,容易阅读,布局与结构的镶套尽量控制在4-5层以内,严格遵循w3c的xhtml1.0Transtitonal。并遵循以下原则:
1.DDT类型:XHTML1.0Transitional2.编码:utf-83.元标记必须项:
该页面的关键词概况该页面的简要描述具体内容根据SEO要求设置
4.Html代码中的所有标签遵循XHTML1.0的书写规范,包括:5.
6.7.8.9.10.11.12.13.
a)标签全部使用小写;b)标签全部闭合;
c)所有属性必须有值而且用双引号;d)把所有clear:
---------------------------------------------------------容器布局}
每一个属性结尾都必须写分号,其中有的值如果不需要,可以不写,大体上是这样的顺序,也符合思考的顺序。
4.有几点注意事项:
a)font-family:必须以sans-serif字体做结尾;b)减少样式数量,尽量重复使用;c)必须清除float;d)单位:使用像素(px);
e)颜色值:使用#RRGGBB格式
第四部分:UE指导原则
1.网站LOGO的视觉统一,网站主体的视觉风格、文本颜色、链接颜色、修饰图片风格以及按钮和表单控件的视
觉进行统一;
2.为每一个页面设定一个最合适的标题,使用户和搜索引擎一目了然知道页面的主题;
3.为大部分页面加入元标记,即相关内容,描述页面属性;在最终页加入具有亲和力的版权说明、
免责声明、交互设计说明文档的链接地址;
4.页面中必须有回到“首页”的链接一般做法是将站点LOGO加上首页的链接,最好还是有回到首页的文字
链接;
5.如果网站栏目很多,要让用户知道所处的页面属于哪个栏目之下,以及很轻松的可以回到上一级栏目标签
是一种不错的方法;
6.现在位置。如果上一条原则处理的很好,“现在位置”可以去掉;
7.搜索。合理的放置搜索表单,最好在首屏,并且确保搜索结果的准确性;
表单设计原则:
1.面向菜鸟和专业用户,填写项尽量精简,做简单的填写说明,仅放置与填写表单相关的链接,避免用户通过其
他链接转移视线到别的地方,从而放弃填写表单
2.清晰的验证告诉用户为什么出现错误,并引导正确的填写;
3.如果完成表单任务需要多个步骤,需要用图形或文字表明所需的步骤,以及当前正在进行的步骤使用户知
道离成功还有多远;
4.如果可能,尽量先放置input、textaera等需要键盘输入的项,再放置下拉、单选、复选等键盘操作的项,紧
接着是“提交”按钮就是说,减少键盘操作被鼠标操作打断的次数;
5.文本域允许更改内容的文本格式,比如加粗、字体大小、超链接、图片等等,而且,尽量让此内容与用户完成
发布以后的内容格式相同;6.提供将表单保存为草稿的功能;7.设计符合习惯的表单。
个人总结
Web开发的分散性和交互性,决定了Web开发必须遵从一定的开发规范和技术约定,只有每个开发人员都按照一个共同的规范去设计、沟通、开发、测试、部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量。本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下要灵活运用,做一定的变通,仅供个人参考。
扩展阅读:rsp技术开发规范总结
终端RSP
开发规201*-3-4
范目录
一、StoryBoard规范....................................................................................................3
1、场景描述规范................................................................................................32、ServiceTree规范...........................................................................................3二、命名规范..............................................................................................................3
1、RSP命名规范................................................................................................32、元素节点命名规范........................................................................................33、RSP中Java代码命名规范...........................................................................44、切图图片命名规范........................................................................................4三、注释规范..............................................................................................................4
1、RSP文件注释................................................................................................42、RSP节点注释................................................................................................53、业务条件注释................................................................................................5四、开发框架规范......................................................................................................5
1、目录规范........................................................................................................52、RSP框架规范................................................................................................63、屏幕适配框架使用规范..............................................................................104、Cache使用规范...........................................................................................135、CacheObject使用规范.................................................................................14
一、StoryBoard规范
1、场景描述规范
1)描述场景功能,对每个场景编号,该编号和ServiceTree中场景编号对应;2)描述场景中各个元素的来源,动画效果和交互效果;
2、ServiceTree规范
ServiceTree要对没一个业务场景编号,该编号和StoryBoard的场景编号对应。ServiceTree要反映各个场景的跳转和层次关系,根据此层次关系确定开发框架中的场景级数。
二、命名规范
1、RSP命名规范
RSP命名形式:文件所在位置_所属业务_场景名_类型
文件所在位置是指文件是在客户端还是服务器端。在客户端的文件用"c"表
示,在服务器端的文件用"s"表示;
所属业务是指该文件属于哪个业务模块,比如该页面在客户端,且属于新闻模块则写成:c_news.rsp。业务名全部用英文表示;
场景名是指该rsp所描述对应场景名,场景名用英文表示。如该页面在客户端是新闻模块,描述的是新闻类型则该rsp名是c_news_type.rsp;类型是指该rsp是View还是Content。比如该页面在客户端,且属于新闻模块且为View则写成:c_news_type_view.rsp;如果该rsp文件既不是View也不是Content则该类型可以不写。
文件名一律小写。
文件编码必须是UTF-8
2、元素节点命名规范
节点命名形式:节点域_所属业务_场景名_内容描述
节点域,本地用“Local”,全局用“Global”禁止使用简写;
内容描述,由开发人员定义。只要符合能表述清楚该节点的功能或内容的原则就行。内容描述用英文;
节点名称遵循驼峰是命名规则,Global:newsDetail表示新闻明细或者Global:news_detail
其他描述同RSP命名规范。
3、RSP中Java代码命名规范
RSP中Java代码变量全小写,只要符合能表述清楚该变量的意义的原则皆可。代码编写必须遵循java1.5的规范.遵循匈牙利命名规则.
4、切图图片命名规范
图片命名形式:图片所在位置_所属业务_内容
图片所在位置是指图片是在客户端还是服务器端。在客户端的图片用"c"表示,在服务器端的文件用"s"表示;
所属业务是指该图片属于哪个业务模块,比如该图片在客户端,且属于新闻模块则写成:c_news.png。图片名全部用英文表示;
内容是指对该图片意思的表述,如该图片是按钮按下的图片,在客户端属于新闻模块则写成:c_news_button_down.png
三、注释规范
1、RSP文件注释
在每个RSP文件开头要有如下形式的注释:2、RSP节点注释
对RSP文件中的每个节点或节点块头标明该节点对应StoryBoard中的场景或动作效果。如:
........
3、业务条件注释
如果由于业务条件的不同,同一个表示区域会有不同的效果或动作则要在条件判断处要标明在什么情况下会进入哪段代码。
四、开发框架规范
1、目录规范
目录规范用于说明项目工作区的文档结构,规范文件放置。具体结构如下:src
公用目录业务组1
子业务1子业务2…业务组2
子业务1子业务2…...Res
Devices设备配置目录
Layouts界面布局配置目录Skins皮肤配置目录
不同分辨率图片文件夹公用图片夹业务1业务2…如图:
表示:240x320分辨率下的”无线生活”文件下的”便民查询”查询文件夹
整个工作去分src,res,libs文件夹,分别放置源代码,资源文件,外部包和配置文件。
src下每个业务分别建立自己的源代码文件夹,文件夹名用能代表该业务的英文说明表示;
res下分为devices,layouts,skins三个文件夹,主要放置配置文件.分别放置公共资源,客户端资源,服务器端资源。其中客户端资源和服务器端资源中的各个业务的资源放置到自己所属的业务资源文件夹中;
libs下放置扩展包和交互API;
2、RSP框架规范
RSP框架规范用于说明终端开发中要遵循的各项框架性的准则和要求,定义一个基本的开发结构框架。
基本原则:
1、View/Content分离,View包含显示框架、显示逻辑和控制逻辑,放置在客户端;Content负责与后台交互并向View填充数据;
2、合理运用缓存;
服务器端的场景要尽可能多的缓存;
对于没有特定关联关系的业务场景(新闻,天气等)要使用一级缓
存以减少服务器编译时间;
常用的外部资源(美图业务的图片)要使用二级缓存以减少RMS与外部的服务交互;
可预知用户操作的业务(读书)要使用CacheObect提前缓存,减少用户等待时间;
使用缓存队列维护缓存;建立合理的缓存控制机制。
3、定义符合该项目的主体场景树;主体场景树要求包含该项目的所有框架节点,供开发业务时使用;
4、开发过程中不要使用无target的Insert节点,主体场景树定义RSP除外;5、除主体场景树所在的RSP外不要有或减少Insert节点,特别是无target的Insert节点;
6、一个场景的Action尽量写在一个单独的Action节点中;7、场景加载时按照ServiceTree添加到对应的级别Transform;
8、在同一个业务中有本级向下一级跳转时不要删除本级页面代码而是将本级隐藏,当由下级向上级返回时删除本级代码,显示上级节点;
9、如果业务存在过多的跨业务的跳转需讨论决定是否使用6,7两点。因为此种情况下维护级别节点是个不小的开销;
10、服务器端的RSP要被try/cache包住,并处理异常;
11、将一个RSP分成多个单元,将优先显示的内容放在前面,次要的需要大量时间传输的内容放在后面。根据实际场景做具体调整
12、关闭超时,最后才渲染的场景放在finally里面.主体框架示例:目录结构示例src
base
c_main.rsp
c_cache_clean_view.rsps_cache_clean_content.rsps_update_client.rsp
c_version_check_view.rsps_version_check_content.rspc_dummy.rsp
common
home
c_home_view.rsp
c_home_content.rspnews
c_news_base.rsp
c_news_type_view.rsps_news_type_content.rsp
res
clientcommon
background.png
foot.pngheader.pngnewsserver
commonnewslibs
client.jar
conf
文件说明
c_main.rsp
项目的主体场景树。其包含了整个项目中要使用的节点。文件内容见附件c_main.rsp
c_version_check_view.rsp,s_version_check_content.rsp
这两个文件负责登录时的版本校验。在c_main.rsp最后会调用c_version_check_view.rsp这个文件,该文件中包含了所有需要校验版本的业务Text节点和Save节点以保存版本号。s_version_check_content.rsp负责从后台取最新的版本号并和已有的版本好比对,并更新版本号。如客户端需更新则调用s_update_client.rsp。
"stzserver://c_cache_clean_view.rsp"/>
s_update_client.rsp
负责更新客户端。关键代码如下:
url="cmd://cleanRMSData?cached=TRUE&saved=TRUE"startTime="NOW">
c_cache_clean_view.rsp和c_cache_clean_content.rsp这两个文件负责清理需要更新的缓存。用法如下
这样把所有以news.rsp开头的缓存就都清除了。
场景间的跳转
每个场景在业务中都有其场景级别。当要跳转到该场景时要隐藏上一级的场景,需调用c_main.rsp中的对应级别的动作。如第0级到第一级要调用
Global:replace_back_from_loading_for_content.L1这个方法隐藏第0级。返回时则调用Global:replace_back_from_loading_for_content.L0显示第0级的内容。
返回示例代码:
场景的更新
每个场景页面要在开头替换掉之前该场景的内容,一个空场景的模板代码如下:
以第零级为例:
该场景的内容
五、实用代码规范
1、屏幕适配框架使用规范
屏幕适配通过scale或layout组件实现。屏幕适配的好处是开发一套UI能适配其他分辨率的版本,降低了开发工作量。
使用scale的好处是适配简单,能快速应用到一个新的分辨率。缺点是无法对场景进行微调,如果发现界面上有部分显示效果不佳只能以硬编码的方式解决,无法通用。
Scale的使用已经在开发框架中搭建好。只要配上后台API就能使用。
使用layout的好处是它能精细的调节场景上的每一个元素,通过配置文件进行管理,可以在不改变代码的情况下适配各种分辨率。缺点是配置文件过多过复杂,如果layout被放置在服务器端使用则会影响效率,放在客户端则不会。
要使用Layout需要adaptaion.jar包。新版本的Developer新建service时会自动提供该包,并会产生一个adaptation.xml。
以下是个标准的adaptation.xml
可以看出layout由Theme,Skin,Layout三部分组成。
Theme包含多个Skin,每个Skin负责定义该分辨率下各个元素的显示样式,如高度,颜色等。比如QVGA.xml:
其指定了footer_bg这个Image节点读取图片的url是“QVGA/footer_bg.png”,高度是20,名字为footer_txt的Text节点颜色是“#FFFFFF”。
LayoutSet是一个Layout集合,其可以包含多个Layout。Layout负责定义每个Transform的大小。如main.xml:
每个Container都定义了显示的百分比高度等属性,在RSP中只要调用这些ID就能将该Container的显示定义加载到调用的Transform上。
在RSP中使用Layout的方法:首先要得到Container:
设置加载资源和Transform
这里最关键的是
root.getChildByIdRecurs("Search").applyTo(currentTransform);
它将配置文件中的属性加载到了当前的Transform,这样就实现了通过配置文件设置页面上元素的位子,大小,样式。
2、Cache使用规范
Cache能将资源或页面缓存到客户端或服务器,提高了用户使用速度。Cache分为客户端Cache和服务器端Cache。
客户端Cache
客户端Cache是将访问的场景缓存到客户端。这样用户再次访问该页面时就不用访问服务器,既减少了数据流量又提高的显示速度。具体用法如下:
在RSP的header中加入缓存的属性:
cacheable设置为true则该页面会缓存clientCacheTtl设置缓存有效时间,以毫秒为单位。过了时间则缓存失效。Permanent是设置是否永久缓存,如果为true则会该缓存会保存到内存上永不失效,除非通过命令清除缓存。
注意:由于RME默认缓存大小只有1024KB所以如果要获得更多的缓存空间需要修改默认缓存值后重新编译RME。
服务器端cache
服务器端cache分为cacheL1和cacheL2
L1的作用是在服务器端将stz文件缓存到内存中。这样减少了服务器与后台交互以及生成stz的时间。
用法如下:
在中加入serverCacheTtl属性,如
L2的作用是将外部资源缓存到服务器的内存中,这样可以减少RMS和外部服务器交互的时间。用法如下:
关键就是stzRequest.getExternalResource这个方法。此例子就是把指定url的图片缓存到了服务器端。
3、CacheObject使用规范
当用户在浏览某一个页面的时候,总是希望后台此时不是空闲状态,而是继续下载即将可能会被加载的下一页面,这样,当用户点击进入下一页面时,可以直接从本地缓存区读取,节省了用户的时间,达到更好的用户体验。使用方法如下:
cacheObject标签在streamezzo标签下使用,置于AUnits之间。url是需要提前加载的页面,endTime是缓存页面的生存时间,permanent是缓存页面的存储方式,priority确定页面的下载顺序。
此标签主要用于在浏览某一页面时提前在后台加载其他页面,并缓存在本地,当该缓存页面的生存时间结束时,将其从本地清除,或者提前加载该缓存页面的某一页面从服务器重新被加载,则该缓存页面被更新。注意:
(假设a页面是主页面,利用cacheObject提前加载其他页面)1)a页面可以同时提前加载缓存多个页面,每个缓存页面也可以设置相应的
生存时间,在生存时间内,缓存页面存在于内存中;
2)重新加载a页面时,会重新下载cacheObject中设置的缓存页面,即使该
缓存页面生存时间尚未失效;
3)当priority设置为HIGH时,根据cacheObject在AUnits中所处的位置决
定加载缓存页面的时间;当priority设置为LOW,则是在a页面所有的AUnits都加载完后再加载缓存页面;
4)a页面加载的缓存页面不能利用cacheObject来cachea页面。我们假设a
页面提前加载b页面,b页面提前加载a页面,当a页面加载b页面时会执行b页面中提前加载a页面的操作,然后会再次重新从服务器加载a页面,并再次执行a页面中提前加载b页面的操作,如此一来就会形成一个死循环;
5)当a页面还在加载缓存页面时,这时触发动作跳转到其他页面,则加载
操作中断,即最新的url请求会中断前一个url请求;
6)假设a页面提前加载b页面,b页面提前加载c页面,那么就会形成一个
加载链,即在加载a页面后会将b页面和c页面都提前加载下来,如此一来就会造成一定的混乱,尤其是当这样的加载链太长的时候。所以在使用时要事先规划好页面间加载与被加载的关系。
4、异常处理
异常处理在框架页面(c_main.rsp)中集中注册,并定义好出现异常后处理代码。
首先注册异常:
异常的名字在Java代码中用String数组定义,在这用循环统一捕获。每个异常捕获命令的target属性都是指向一个Action,该Action用于处理出现异常后的动作,比如显示出错信息并退出系统等。
5、上传下载文件
上传文件关键命令:cmd://uploadFile
参数:fileName上传文件名fileType文件类型destURL目的url
onBegin当上传开始时调用的动作onSuccess当上传成功时调用的动作onError当上传错误时调用的动作progressTarget指定反应上传进度的动画segmentSize上传文件每个包的大小Resume指定传输中断后能否恢复onResume传输回复后调用的动作
Stop停止传输,这个参数只能单独使用
示例:
下载文件:
关键命令:cmd://download
主要参数:contentURL下载内容URLcontentName下载文件名
Type下载文件类型(Mime-Type)如“image/jpge”
beginDownloadTarget下载开始时调用的动作endOfDownloadTarget下载结束时调用的动作
errorDownloadTarget下载错误时调用的动作(该错误一共有6个)
totalSizeTarget指定显示总共下载大小的text节点actualSizeTarget指定已经下载的大小的text节点progressTarget指定反应下载进度的动画示例代码:
6、发送短信
关键命令:cmd://sms参数:num电话号码Msg短信内容示例代码:
7、旋转图片
示例代码:
Replace的target指向一个Bitmap节点,roteateVal为一个旋转弧度的浮点值。
8、图片缩放
示例代码:
Replace的target指向一个Bitmap节点,vec2fvalue是x,y轴的缩放比例
9、调用电话薄
命令:cmd://getContactInfo
参数:phoneNumber显示选择的手机号码的text节点示例代码:
10、手动滚动Text节点文字
示例代码:
11、监控设备声音
示例代码:
Source值为volume,target指定一个展示音量的动画节点
12、监控电量
完整代码:关联电量:
电量显示动画:
13、存储本地变量
设定一个存储在本地的变量,利用此命令对此变量进行设定、获取、增量、减量的操作。
命令:fs_varSet;fs_varGet;fs_Add;fs_varSub示例代码:
14、强制打开背景灯
命令:defaultBacklight
示例:
15、调用摄像头照相
命令:cameraCapture,cameraVideo、cameraStopVideo、
launchCameraApplicationcmd:cameraCapture
使用:此命令用于调用手机摄像头,并将照片存于本地。cmd:cameraVideo、cameraStopVideo
使用:此命令用于调用手机摄像头,并将视频存于本地,cameraVideo开始摄像,cameraStopVideo结束摄像。cmd:launchCameraApplication
使用:此命令用于调用手机摄像头,并可以选择是采用picture或是video模式。示例代码
16、同一个图片的多次引用
如果同一个图片需要多次改变大小在不同的地方引用,图片不要多次加载.示例代码
必须用同一个streamID加载.然后对
17、repace语句的应用
如果repace语句不需要在某种条件下调用,直接写在auit节点中.不需要插入节点,杜绝这种写法,如图
正确写法:
如果是条件调用,应该插入相应的节点中.采用上述写法.
18、图片的加载顺序,场景的渲染顺序.
图片在rsp中的渲染顺序必须,必须根据场景的顺序加载,首先展示的图片,放在靠前的aunit中.图文混排的情况分多个aunit加载,必须对图片进行监听.用户优先看到文字,文字场景优先渲染.让用户感到文字和图片是异步加载的.
渲染文字加载图片
渲染图片,同时对图片做监听
19、java代码动态加载图片.
intstate=0;booleanisSuccess=true;try{URLurl=newURL(cp[0].getFullScreenPicture());HttpURLConnectionurlConnection=(HttpURLConnection)url.openConnection();//建立http的链接urlConnection.setConnectTimeout(30000);//设置链接时间urlConnection.setReadTimeout(60000);//设置读取时间state=urlConnection.getResponseCode();//获取图片的状态System.out.println("state==="+state);if(state==200){isSuccess=true;InputStreamis=stzRequest.transcodeExternalImage(cp[0].getFullScreenPicture(),0,true/*servercache*/,24*3600*1000/*ttl*/);//采用流方式加载图片,根据程序需要是否设置cache,cache多长时间.authoring.addImage("sid_beaty_pic",is,0);//绑定图片}else{System.out.println("HHHHHHHHHHHHHHHHH加载服务器图片失败!"+state);%>//图不存在的处理source="Global:weather_image_big"target="Global:pic_conditional_fail"/>
20、客户端代码样例.
StzConnectorsManager.getAdaptationConnector(stzRequest.getService(),0);
%>//Theskin,layoutanddevicepropertiescanbeaccessedfrom
thetransaction
//Beginatransactionforthecurrentrequest.
Stringtheme="theme";//TODOsettheaccuratethemevalueStringlayoutset="layoutset";//TODOsettheaccuratelayoutsetAdaptationTransactiontx=null;try{
tx=(AdaptationTransaction)
value
adaptationConnector.beginTransaction(stzRequest,theme,layoutset);
}finally{}
%>21、服务器端列表
场景描述:网站listupdate来源RSP:c_News_view.rsp来源参数:参数类型:
进入RSP:s_news_express进入RSP参数:参数类型:
%>
StringStringPageNumTo=
//StringStringQueryPageNumPerTime=StringStringItemDisplayNum=
stzRequest.getRequestParameter("PageNumTo");
stzRequest.getRequestParameter("QueryPageNumPerTime");stzRequest.getRequestParameter("ItemDisplayNum");
intPageNumTo=Integer.valueOf(StringPageNumTo);//intQueryPageNumPerTime=intItemDisplayNumView=
//intItemDisplayNum=ItemDisplayNumView*
Integer.valueOf(StringQueryPageNumPerTime);Integer.valueOf(StringItemDisplayNum);QueryPageNumPerTime;
StringDataQuerySuccessed="false";
System.out.println(">>>>>>>>>>>>>>>>>>>>【FCity】:RequestSource:"+RequestSource);
System.out.println(">>>>>>>>>>>>>>>>>>>>【FCity】:ListID:"+ListID);
System.out.println(">>>>>>>>>>>>>>>>>>>>【FCity】:Cacheable:"+Cacheable);
System.out.println(">>>>>>>>>>>>>>>>>>>>【FCity】:ClientCacheTtl:"+ClientCacheTtl);
/****************************************************************
%>/*******/*******【注意】ItemContents、ItemContentImageURLs、
************/
ItemFireURLs三个数组个数必须一致!!************//*******************/
%>}else{
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>【FCity】:ItemCount:"+ItemCount);
//列表item文字(没有文字用""代替)
ItemContents[i]=item.getStructureName();//列表item图片地址(没有文字用""代替)ItemContentImageURLs[i]="";
StringimageUrl="";
for(inti=0;i //列表item参数 item=(CMSResourceStructure)list.get(i);if(item!=null){ ItemParameters[i][0]=ItemParameters[i][1]=ItemParameters[i][2]= String[]image=newString[ItemCount];String[]image2=newString[ItemCount]; //列表item参数 String[][]ItemParameters=newString[ItemCount][9];//列表item文字 String[]ItemContents=newString[ItemCount];//列表item图片地址String[]ItemContentImageURLs=newString[ItemCount];//列表item默认图标地址 String[]ItemIconDefaultURLs=newString[ItemCount];//列表item选中图标地址 String[]ItemIconSelectedtURLs=new //列表item点击地址 String[]ItemFireURLs=newString[ItemCount];//列表item点击地址("Client"or"Server")StringItemFireURLType="Server"; String[ItemCount]; URLEncoder.encode("execute_show_news_main_action","UTF-8");URLEncoder.encode("WebsiteList","UTF-8"); URLEncoder.encode(item.getStructureid(),"UTF-8");i; //列表item默认图标地址(没有文字用""代替) ItemIconDefaultURLs[i]="Global:ItemBitmapTr"+ //列表item选中图标地址(没有文字用""代替)ItemIconSelectedtURLs[i]=""; //列表item点击地址(必须是服务器端的rsp,没有文字用""代替, 注意,如果是Client页面,前面需加"stzserver://") ItemFireURLs[i]="s_news_express.rsp"; DataQuerySuccessed="true"; //列表数据是否加载成功(无需更改) stzRequest.addRequestAttribute("DataQuerySuccessed", //列表item点击地址(无需更改) stzRequest.addRequestAttribute("ItemFireURLType",if(ItemParameters!=null) //列表参数(无需更改) stzRequest.addRequestAttribute("ItemParameters", ItemFireURLType); ItemParameters); //列表文字(无需更改) stzRequest.addRequestAttribute("ItemContents",//列表图片地址(无需更改) ItemContents); stzRequest.addRequestAttribute("ItemContentImageURLs", //列表item默认图标地址(无需更改) ItemContentImageURLs); stzRequest.addRequestAttribute("ItemIconDefaultURLs", //列表item选中图标地址(无需更改) ItemIconDefaultURLs); stzRequest.addRequestAttribute("ItemIconSelectedtURLs", //列表点击地址(无需更改) stzRequest.addRequestAttribute("ItemFireURLs",//列表总页数(无需更改) stzRequest.addRequestAttribute("PageCount", ItemIconSelectedtURLs); ItemFireURLs); totalPage);DataQuerySuccessed); target="Global:Transform.WheelAnchor.List.Item.Icon"/> for(inti=0;i for(inti=0;i authoring.addImage("ItemBitmap"+i,is,0);}catch(Exceptionre) System.out.println("没有取到图片"); {//ResourceNotFoundException field="Conditional.startTime" }catch(Throwablee){ e.printStackTrace(); startTime="NOW"> if(tx!=null){} tx.endTransaction(); 22、页面节点清空策略 1.当资源文件采用分模块加载方式的时候,进入当前页面清空其他页面的资源节点.2.清空当前页面主节点. 3.如果仅仅是内容替换,就不要用节点,而是直接采用方式.4.”返回”的时候如果是逐级返回,返回时清空当前页面主节点23、日志打印策略 由于日志管理对服务器的维护至关重要,目前系统的日志输出时采用System.out.pritln();输出.。这种打印输出是极其错误的。Io操作对服务器性能影响很大。System.out.pritln();严禁使用。为了开发时方便调试,和服务器后期维护。日志打印方式采用:以下两种方式。1.公共信息打印: ServiceLoggerlogger=stzRequest.getLogger();2.个人开发业务日志打印 ServiceLoggerlogger=new ServiceLogger(stzSession.getId(),"service_id_YLTD_MT","service_name_YLTD_MT_WD");//标示“娱乐天地_美图”开发者吴迪日志级别: logger.debug("★★★★=========loggerdebug============"+ogger.debug);logger.info("★★★★===========loggerinfo========="+logger.info);logger.warn("★★★==========loggerwarn======="+logger.warn);logger.error("★★★★===========loggererror======="+logger.error);logger.fatal("★★★★==========loggerfatal=========="+logger.fatal); 1.workbench里的调试信息,一遍采用logger.debug打印2.从接口取到的数据信息,采用logger.info 3.Trycatch中处理需要打印的信息,做了异常处理的信息采用logger.warn打印。其他采用logger.error打印 4.比较关键性信息,或者必须打印的信息采用logger.fatal,比较致命的信息采用logger.fatal 24、ant编译 由于业务集成,按照新的组织架构,采用jar方式集成,每个业务组单独编译自己的业务jar文件。以下是注意事项和如何配置ant配置文件。 Build.xml配置文件说明(该文件编码必须为utf-8) /> Files/Java/jdk1.5.0_17/bin/java.exe"/> 25、layout框架规范 layout框架工作区目录结构(如图) Adapatation.xml主要关联图片配置文件,界面布局配置文件和设备配置文件. Mappings.xml 该配置文件主要关联特殊型号手机的型号配置.. default.properties N96 nokia-N95-8GB.properties 设备属性文件default.propertiespackage_version=1.0touchScreen=trueos=symbian #os=java,WMSP(smartphone),WMPPC(pocketPC),S6050(SymbianS605th),S6030 mediaPlayer=downloadTarget=#supportOverlay#javaFullscreen #supportNativeInstall=true目前只支持以上属性配置,不支持自定义配置. 界面配置文件. 界面配置文件必须按照业务规则命名.yltd_mt.xml标示娱乐天地的美图业务.详细参数配置参见帮助文档.和附件ppt. API读取相应配置文件实例. System.out.println("===========================top=="+top); SkinImagebottom=skin.getImage("bottom");System.out.println("bottom=="+bottom); SkinImagebg=skin.getImage("bg");System.out.println("bg=="+bg); SkinImageloading=skin.getImage("loading");System.out.println("loading=="+loading);//读取颜色值属性 SkinColorstartColor= //读取图形属性 SkinShaperectangle=skin.getShape("RectangleShape"); skin.getColor("splashLoadingWheelStartColor"); //帮助里面错误了, //ContainerrootContainer=tx.getRootContainer(/*LayoutName*/"myScene"); //读取界面布局 ContainerrootContainer=tx.getRootContainer("main"); ContainerheaderContainer=rootContainer.getChildByIdRecurs("header");ContainerbodyContainer=rootContainer.getChildByIdRecurs("body");ContainerfooterContainer=rootContainer.getChildByIdRecurs("footer"); //API加载图片 authoring.addImage("sid_top",top.getSource(),0);authoring.addImage("sid_bottom",bottom.getSource(),0);authoring.addImage("sid_bg",bg.getSource(),0); authoring.addImage("sid_loading",loading.getSource(),0); //读取设备配置文件 Deviced=tx.getDevice();Stringpackage_version=null; System.out.println("=========package_version====================" d.getProperty("package_version",package_version); +d.getProperty("package_version","package_version")); System.out.println("=========t===================="+d.getProperty System.out.println("=========d.getModel()===================="+d. System.out.println("=========os===================="+d.getPropert System.out.println("=========mediaPlayer===================="+d.g System.out.println("=========downloadTarget===================="+%> ("touchScreen","false")); getModel()); y("os","")); etProperty("mediaPlayer","")); d.getProperty("downloadTarget","")); 26、layout框架集成规范 目前项目组处于多业务组合作并行开发工作模式.随着业务的增加,当rsp页面增多的时候编译发布会越来越慢.鉴于此中原因,采用streamezzo的新的业务集成方式.首先由每一个业务组集成把rsp变成成class文件打成各自业务组的总的jar包,由业务组组长提交终端总体组发布.由于资源文件是共享的,仍然采用svn方式提交到svn服务器.各小组人员仍然要提交自己开发的rsp.以作源码备份使用,集成发布不checkoutRSP源文件.这样集成发布更快,程序版本备份更方便. 友情提示:本文中关于《前端技术规范总结》给出的范例仅供您参考拓展思维使用,前端技术规范总结:该篇文章建议您自主创作。 来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《前端技术规范总结》由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
链接地址:http://www.bsmz.net/gongwen/673094.html