JianghuJS代码规范

为什么要对代码进行规范

代码规范是为了使代码更加可读、易维护和易于合作开发而制定的一系列约定和规则。以下是代码规范的几个重要作用:

  • 提高代码可读性:代码规范可以统一代码的格式、命名规则、注释等,使代码更易于阅读和理解,从而提高代码的可读性。
  • 提高代码质量:代码规范可以强制执行最佳实践,例如在代码中使用有意义的命名、避免重复的代码、优化代码结构等,从而提高代码的质量。
  • 便于合作开发:代码规范可以使不同开发人员之间的代码风格一致,降低开发人员之间的沟通成本和学习成本,从而提高开发效率和代码质量。
  • 降低维护成本:代码规范可以使代码更易于维护,例如标准的缩进和注释,可以使代码更易于排版和理解,从而降低维护成本。

async function

使用async await解决异步callback嵌套问题。async function是语言层面提供的语法糖,在 async function 中,我们可以通过 await 关键字来等待一个 Promise 被 resolve(或者 reject,此时会抛出异常), Node.js 现在的 LTS 版本(8.x)已原生支持。

  1. const fn = async function () {
  2. const user = await getUser();
  3. const posts = await fetchPosts(user.id);
  4. return { user, posts };
  5. };
  6. fn()
  7. .then((res) => console.log(res))
  8. .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),其易于维护和修改。

  1. // doUiAction定义与实现
  2. methods: {
  3. // 定义doUiAction
  4. async doUiAction(uiActionId, uiActionData) {
  5. switch (uiActionId) {
  6. case 'startCreateItem':
  7. await this.prepareCreateFormData();
  8. await this.openCreateDrawer();
  9. break;
  10. default:
  11. console.error("[doUiAction] uiActionId not find", {uiActionId});
  12. break;
  13. }
  14. },
  15. // ---------- startCreateItem uiAction >>>>>>>>>> --------
  16. async prepareCreateFormData() {
  17. //do something...
  18. },
  19. async openCreateDrawer() {
  20. //do something...
  21. },
  22. // ---------- <<<<<<<<<<< startCreateItem uiAction ---------
  23. }
  24. //调用
  25. <v-btn @click="doUiAction('startCreateItem')">新增</v-btn>

Resource代码规范之 施工方案

不同端之间所传递的数据,江湖JS所做的规范与设计在应用协议的设计上,进行了统一和简化,能够做到在不同通讯通道间无缝切换。

在江湖JS里,一个HTTP请求/Socket请求对应数据库_resource表中的一行数据。

我们把请求resource 分成两类:

  • sql resource:后端根据请求组装出sql,执行并将结果返回给前端。
  • service resource:后端根据请求找出/app/service下对应的service,执行对应的方法并将结果返回给前端。
  1. const rows = (await window.jianghuAxios({
  2. data: {
  3. appData: {
  4. pageId: 'albumManagement',
  5. actionId: 'viewAlbumArticleList',
  6. actionData: { albumId, offset: 10000 },
  7. }
  8. }
  9. })).data.appData.resultData.rows;

数据库

  • 清理多余的数据
  • 表字段要符合Jianghu表的风格