JianghuJS代码规范
为什么要对代码进行规范
代码规范是为了使代码更加可读、易维护和易于合作开发而制定的一系列约定和规则。以下是代码规范的几个重要作用:
- 提高代码可读性:代码规范可以统一代码的格式、命名规则、注释等,使代码更易于阅读和理解,从而提高代码的可读性。
- 提高代码质量:代码规范可以强制执行最佳实践,例如在代码中使用有意义的命名、避免重复的代码、优化代码结构等,从而提高代码的质量。
- 便于合作开发:代码规范可以使不同开发人员之间的代码风格一致,降低开发人员之间的沟通成本和学习成本,从而提高开发效率和代码质量。
- 降低维护成本:代码规范可以使代码更易于维护,例如标准的缩进和注释,可以使代码更易于排版和理解,从而降低维护成本。
async function
使用async await解决异步callback嵌套问题。async function是语言层面提供的语法糖,在 async function 中,我们可以通过 await 关键字来等待一个 Promise 被 resolve(或者 reject,此时会抛出异常), Node.js 现在的 LTS 版本(8.x)已原生支持。
const fn = async function () {
const user = await getUser();
const posts = await fetchPosts(user.id);
return { user, posts };
};
fn()
.then((res) => console.log(res))
.catch((err) => console.error(err.stack));
html
- form 表单尽量手写html,不要使用for 循环,方便阅读 & 修改。table 里的 action、button 也是同理 。
- 页面上所有的操作都要走 doUiAction
- 从施工方案查看/拷贝注释,使用该注释将代码块排版,增加代码可读性
- 删除不必要的 vue data
- 注意代码排版和缩进
参考 zhiyuan-v6/student_admin/app/view/page/classOfStudentList.html
Page代码规范之 doUiAction
基于"统一中转链式操作",其核心思想是将不同的操作以一种可重复使用的方式封装在一起,从而提高代码的可读性和可维护性。通过doUiAction("uiActionId", uiActionParamObj)
来链式执行方法(function
),其易于维护和修改。
// doUiAction定义与实现
methods: {
// 定义doUiAction
async doUiAction(uiActionId, uiActionData) {
switch (uiActionId) {
case 'startCreateItem':
await this.prepareCreateFormData();
await this.openCreateDrawer();
break;
default:
console.error("[doUiAction] uiActionId not find", {uiActionId});
break;
}
},
// ---------- startCreateItem uiAction >>>>>>>>>> --------
async prepareCreateFormData() {
//do something...
},
async openCreateDrawer() {
//do something...
},
// ---------- <<<<<<<<<<< startCreateItem uiAction ---------
}
//调用
<v-btn @click="doUiAction('startCreateItem')">新增</v-btn>
Resource代码规范之 施工方案
不同端之间所传递的数据,江湖JS所做的规范与设计在应用协议的设计上,进行了统一和简化,能够做到在不同通讯通道间无缝切换。
在江湖JS里,一个HTTP请求/Socket请求对应数据库_resource
表中的一行数据。
我们把请求resource 分成两类:
- sql resource:后端根据请求组装出sql,执行并将结果返回给前端。
- service resource:后端根据请求找出
/app/service
下对应的service,执行对应的方法并将结果返回给前端。
const rows = (await window.jianghuAxios({
data: {
appData: {
pageId: 'albumManagement',
actionId: 'viewAlbumArticleList',
actionData: { albumId, offset: 10000 },
}
}
})).data.appData.resultData.rows;
数据库
- 清理多余的数据
- 表字段要符合Jianghu表的风格