电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

360°教你搞定“自定义控件开发”(开发规范篇)

来源:金蝶云社区作者:金蝶2024-09-237

360°教你搞定“自定义控件开发”(开发规范篇)


1 业务场景


在自定义控件开发中,开发者经常会碰到一些问题。例如,自定义控件没有注册(代码中没有注册控件id)、自定义控件在IE11上没显示(使用了不兼容IE11的语法)。而事实上,这些问题都可以在开发自定义控件过程中避免。


为提高自定义控件开发效率,便于后期开发者添加功能及维护、输出高质量的自定义控件,本文将针对开发者经常碰到的问题,从准备工作代码编写打包上传三个方面,为开发者定制一份自定义控件的开发规范(包括务必遵守推荐执行两方面)。


2 规范分类


强制:这些规范能够帮助开发者规避自定义控件开发过程中的错误,所以开发者必须严格遵守该类规范,从而避免不必要的错误。


推荐:这些规范能够改善自定义控件代码中的可读性和开发体验。即使开发者不遵循,代码仍然可以照常运行,但是推荐遵循该类规范。


3 准备工作


注册控件id名称【强制】


注册自定义控件时,控件id组成规则应为 `开发商标识-领域标识-控件名称` 以确保控件id唯一性。同时,命名需采用小写方式,可以用中划线分隔或者使用小写驼峰命名,避免出现大写的控件id。


正例【emoji】


// 开发商标识:kingdee,领域标识:hr,控件名称:search-box
KDApi.register('kingdee-hr-search-box', MyFunction)



反例【emoji】:


// 这些都是不可取的
KDApi.register('SearchBox', MyFunction) // 控件id命名规则应为 `开发商标识-领域标识-控件名称`,且为小写
KDApi.register('kingdee_hr_search_box', MyFunction) // 控件id命名应该使用中划线分割


4 代码编写


(1) `model.dom.innerHTML` 挂载页面元素【强制】


当自定义控件需要渲染页面元素时,必须使用 `model.dom.innerHTML` 挂载页面元素。


 正例【emoji】


KDApi.getTemplateStringByFilePath('./html/entry.html', model).then(function (result) {
  model.dom.innerHTML = result
})


 反【emoji】


KDApi.getTemplateStringByFilePath('./html/entry.html', model).then(function (result) {
  // 加载了html文件,并没有使用
})


(2)禁止在jquery中使用es6/es7语法【强制】


es6/es7语法在IE11上兼容性极差。如果自定义控件项目没有经过babel转译,应避免使用es6/es7语法 (vue、react项目可使用)。


 正例【emoji】


function getName () {}



反例【emoji】


// es6语法在ie11上兼容性极差,如果项目没有经过babel转译,应尽量避免
const getName = () => {}



(3)禁止定义全局变量【强制】


所有的变量都应该定义在函数作用域。这样可以避免污染全局变量,并且全局变量是不会被垃圾回收的,容易引起内存泄漏等问题。


正例【emoji】


function getName() {
   var name = '张三'
}



反例【emoji】


window.name = '张三'



(4)禁止使用reset.css等样式文件【强制】


严禁使用该类样式文件,因为此样式会重置页面上对应标签的样式。


反例【emoji】



html,body,div,span {
  margin:0;
  padding:0;
  border:0;
  font-size:100%;
  font:inherit;
  font-weight:normal;
  vertical-align:baseline;
}


(5)禁止定义全局标签选择器【强制】


禁止使用全局标签选择器,以防止全局样式被污染。


正例【emoji】


.search-box-header {
  width: 100%;
}


反例【emoji】


div {
  width: 100%;

360°教你搞定“自定义控件开发”(开发规范篇)

1 业务场景在自定义控件开发中,开发者经常会碰到一些问题。例如,自定义控件没有注册(代码中没有注册控件id)、自定义控件在IE11上没显...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信