上市公司前端开发规范参考

news2024/11/30 7:37:21

上市公司前端开发规范参考

  • 命名规则
    • 通用约定
    • 文件与目录命名
    • HTML命名
    • CSS命名
    • JS命名
  • 代码格式
    • 通用约定
    • HTML格式
    • CSS格式
    • JS格式
    • 注释
  • 组件
    • 组件大小
    • 单文件组件
    • 容器组件
    • 组件使用说明
    • Prop
    • 指令缩写
    • 组件通讯
    • 组件的挂载和销毁
    • 按需加载
    • 第三方组件库的规定
  • 脚手架使用规范
    • 移动端脚手架
    • PC端脚手架
  • 代码管理
    • 代码更新
    • 代码提交
  • 页面性能指标
    • 延时情况
    • 加载时间
    • 页面大小
    • 图片大小
    • 图片优化
    • 弱网最低支持
  • 其他
    • 版本要求
    • 部署注意事项
    • IDE的选择

命名规则

通用约定

  1. 驼峰(camel)命名法:以小写单词开头,后续单词首字母大写

    myProjectName

  2. 帕斯卡(pascal)命名法:每个单词首字母大写

    MyProjectName

  3. 中划线命名法:单词小写,以中划线连接

    my-project-name

  4. 下划线命名法:单词小写,以下划线连接

    my_project_name

  5. 命名遵循语义化

文件与目录命名

小写,采用中划线命名。

HTML命名

  1. 标签:小写
    <html><head></head><body></body></html>
    
  2. 属性:中划线命名
    <img alt="logo" data-src="/image/logo.png" />
    
  3. ID:下划线命名
    <a id="link_home"></a>
    

CSS命名

  1. Class:中划线命名
    .my-class-name {
    	font-size: 20px;
    }
    
  2. ID:下划线命名
    #my_class_id {
    	color: #f00;
    }
    
  3. 组件块和子组件块:推荐继承命名
    /* */
    .content {
    	padding: 10px;
    }
    /* */
    .content-title {
    	display: block;
    }
    

JS命名

  1. 变量:驼峰命名

    //
    let maxCount = 10;
    let tableTitle = 'LoginTable';
    //
    let setCount = 10;
    let getTitle = 'LoginTable';
    
  2. 常量:下划线命名,单词全部大写

    const MAX_COUNT = 100;
    
  3. 函数/方法:驼峰命名,前缀修饰
    前缀 含义 返回值
is 判断是否为某个值 布尔值
    在这里插入图片描述

    //
    function canRead() {
    	return true;
    }
    //
    function getName() {
    	return this.name;
    }
    
  4. 类、构造函数:帕斯卡命名

    class Person {
    	public name: string;
    	constructor(name) {
    		this.name = name;
    	}
    }
    const person = new Person('Tom');
    
  5. 私有变量:驼峰命名,以下划线开头

  6. 枚举:枚举名称使用驼峰命名,属性用大写下划线命名

代码格式

通用约定

  1. 编码:UTF-8
  2. 缩进:统一使用Tab缩进,并善用IDE的格式化代码快捷键

HTML格式

  1. 标签必须闭合,自闭合标签使用“/”闭合
<a href="index.html"></a>
<img src="logo.png" />
  1. 属性值必须使用双引号包围
  2. 属性顺序,按照以下顺序保证易读性
id
class
name
data-xxx
src, for, type, href
title, alt
aria-xxx, role

CSS格式

  1. 以组件为单位组织代码段
  2. 代码段之间使用空行分隔
  3. 语句必须以分号 ; 结尾
  4. url() 、属性选择符、属性值使用双引号
  5. 声明顺序
Positioning
Box model
Typographic
Visual

JS格式

  1. 语句:必须以分号 ; 结尾
  2. 引号:使用单引号,特殊情况使用双引号(如json文件)
  3. import、const、var 等引用和声明语句需放在文件或代码块的上方
  4. 尽可能使用let代替var

注释

  1. 注释需新开一行,避免在语句后面写注释
  2. 注释规则
/*
*
* @constructor
* @param {string} title -
* @param {string} author -
* @param {number} pageNum -
* @return {object} -
*/

更多参考 http://usejsdoc.org/

组件

组件大小

每个组件的代码建议不要超出 500 行,如果超出建议拆分组件。

组件一般分为基础(UI)组件和业务组件。基础组件一般是承载呈现,基础功能,不和业务耦合;业务组件一般包含业务逻辑和数据交互等。

单文件组件

基础功能组件,建议定义成单文件组件,并给

容器组件

基础功能组件,建议定义成单文件组件,并给

组件使用说明

参考 ,如果组件结构比较复杂,建议新建一个 文件进行详细描述。

注释规则JS readme.md组件及模块的引入应使用相对路径,避免使用路径别名,路径别名对编译器不友好,无法完成代码追踪和自动提示等功能

//
import Header from '@/components/common/Header';
//
import Header from '../../components/common/Header';

ChunkName

const UserInfo = () => import(/* webpackChunkName: "user.info" */
'../views/index/UserInfo.vue');

jsjshttp

Prop

Prop 的定义应该尽量详细的指定其类型、默认值和验证。

指令缩写

为了统一规范始终使用指令缩写,使用 v-bind v-on, 并没有什么不好,这里仅为了统一规范。

组件通讯

避免数据的分发源混乱,不建议使用 eventBus控制数据,应使用 props来和 $emit来数据分发和传送。

同级组件的通讯一般会有一个中间容器组件作为桥梁,容器组件作为数据的接受和分发点。

组件的挂载和销毁

使用v-if指令来控制组件挂载和销毁,组件销毁时请确保终止组件内的定时器和网络请求等异步操作,以免发生意外。

按需加载

使用v-if指令来控制组件挂载和销毁,组件销毁时请确保终止组件内的定时器和网络请求等异步操作,以免发生意外。

第三方组件库的规定

为减少开发人员的学习成本,统一技术栈,提升开发效率,对第三方组件库的选择做如下规定:
在这里插入图片描述

脚手架使用规范

移动端脚手架

新搭建的移动端项目必须使用移动端基础框架模板 ,统一规范化。也可对老项目进行升级。

PC端脚手架

新搭建的PC端项目必须使用PC端基础框架模板 ,统一规范化。也可对老项目进行升级。

代码管理

代码更新

在修改项目之前,必须先拉取一下代码,并确保将分支切换到dev。

代码提交

  1. 提交之前必须做code review和diff对比,确保所有更改都是可靠的。

  2. 代码push之后要通知团队其他成员进行merge。

  3. 控制好代码提交频率,按功能点提交,避免一次性提交过多代码。

  4. 代码提交必须写comment,comment模版参考:JIRA编号+更改内容。

  5. 为避免意外,除正常push外,每天下班之前必须确保所有修改均已push。

页面性能指标

延时情况

出现请求超时的现象。此时需要给予提示,或有其他处理方式。

加载时间

4秒内打开网页, 90%以上的用户都能顺利进入网站。

页面大小

移动端控制在3M以内, PC端可控制在10M以内。

图片大小

控制在300KB 以内,超出大小的图片,需要进行分割。

图片优化

在不影响视觉的情况下压缩图片(推荐压缩工具TinyPNG);将多张小图片或icon合并至一张图片中,以减少请求数,提升显示速度。

弱网最低支持

网速最低在1.25Mbps以上,对于1.25Mbps以下的各种报错不予支持,推荐网速在10Mbps,响应时间为3s;
一般的为10Mbps,5s;

其他

版本要求

为保证项目的可扩展性和性能,对编译环境和库制定最低版本要求:
在这里插入图片描述

如对现有项目进行版本升级,请确保做好全量测试,避免遇到兼容性问题

部署注意事项

  1. 如果采用自动化部署,部署脚本确保加入 npm install 命令,避免因依赖包版本不一致导致的问题

  2. 单页应用的路由如果使用了history模式,需要对服务器做url rewrite设置

IDE的选择

推荐使用WebStorm,有着丰富的插件生态和一系列的人性化设置,能够极大地提高开发效率。

WebStorm统一配置:根据版本下载WebStorm.settings.2019.2.4.zip并导入配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下安装Elasticsearch以及ES-head插件

Linux下安装ElasticSearch以及ES-head插件 安装Elasticsearch 由于Elasticsearch客户端版本和ElasticSearch版本有对应关系&#xff0c;所以建议安装之前先考虑安装哪个版本的ElasticSearch。 ElasticSearch、Spring Data Elasticsearch、SpringBoot、Spring版本对应关系 安…

OpenCV for Python 学习第五天:图片属性的获取

上一篇博文当中&#xff0c;我们学习了如何获取图片的通道&#xff0c;我们了解了通道的分离方法split()和通道的组合方法merge()。那么我们今天就来对图片的属性做一个深入的了解。 文章目录 图片属性OpenCV中属性介绍图片属性的获取 图片属性 图片属性是指描述和定义一张图片…

爬虫与反爬虫的攻防对抗

一、爬虫的简介 1 概念 爬虫最早源于搜索引擎&#xff0c;它是一种按照一定的规则&#xff0c;自动从互联网上抓取信息的程序&#xff0c;又被称为爬虫&#xff0c;网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫&#xff0c;按授权情况可以分为合法爬虫和恶意爬虫。恶…

【NLP】从预训练模型中获取Embedding

从预训练模型中获取Embedding 背景说明下载IMDB数据集进行分词下载并预处理GloVe词嵌入数据构建模型训练模型并可视化结果结果对比其他代码 在NLP领域中&#xff0c;构建大规模的标注数据集非常困难&#xff0c;以至于仅用当前语料无法有效完成特定任务。可以采用迁移学习的方法…

hbuilder创建基于vue2的uniapp小程序项目

参考vant官网&#xff1a;https://vant-contrib.gitee.io/vant/v3/#/zh-CN/quickstart#an-zhuang官网 参考别人博客&#xff1a;https://www.yii666.com/blog/465379.html 1.创建项目 1.1 hbuilder进去右上角点击文件–新建–项目 1.2 vue2项目如下图 2.安装依赖 2.1 2.2…

Linux搭建SVN环境(最新版)

最新版本号(svn-1.14) https://opensource.wandisco.com/centos/7 更新版本库 sudo tee /etc/yum.repos.d/wandisco-svn.repo <<-EOF [WandiscoSVN] nameWandisco SVN Repo baseurlhttp://opensource.wandisco.com/centos/$releasever/svn-1.14/RPMS/$basearch/ enabled…

TypeScript 学习笔记(七):条件类型

条件类型 TS中的条件类型就是在类型中添加条件分支&#xff0c;以支持更加灵活的泛型&#xff0c;满足更多的使用场景。内置条件类型是TS内部封装好的一些类型处理&#xff0c;使用起来更加便利。 一、基本用法 当T类型可以赋值给U类型时&#xff0c;则返回X类型&#xff0c…

一探究竟:人工智能、机器学习、深度学习

一、人工智能 1.1 人工智能是什么&#xff1f; 1956年在美国Dartmounth 大学举办的一场研讨会中提出了人工智能这一概念。人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;简称AI&#xff0c;是计算机科学的一个分支&#xff0c;它企图了解智能的实质&am…

拦截器是什么

拦截器 package com.qf.config;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class MyIntercep…

VSCode下载安装(保姆级--一步到胃)

前言 Visual Studio Code&#xff08;简称“VSCode” &#xff09;是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的&#xff0c;针对于编写现代Web和云应用的跨平台源代码编辑器&#xff0c;可在桌面上运行&#xff0c;并且…

零售行业门店综合管理系统怎么做?店务系统有什么功能?

线下门店则变成了零售行业的重要战场。今时不同往日&#xff0c;现在线下门通常得需要兼多种角色&#xff0c;无论是对于门店员工还是管理者来说经营难度和工作强度都在显著增加。像传统落后的门店管理存在着库存失衡&#xff0c;服务效率低&#xff0c;信息滞后且准确度低等问…

使用IDEA社区版创建SpringBoot项目

文章目录 1.关于IDEA社区版的版本2.下载Spring Boot Helper3.创建项目4.配置Maven国内源4.1找不到settings.xml的情况4.2找得到settings.xml的情况 4.3删除repository目录下的所有文件和目录5.加载项目6.解决org.springframework.boot:spring-boot-starter-parent:pom:2.7.13.R…

学员管理系统——面向对象

文章目录 前言基本思路Student.pymain.pyStudentManage.py菜单 menu()根据菜单实现程序的大概逻辑add_student() 添加学员信息delete_student() 删除学员信息modify_studnet() 修改学员信息search_student() 查找学员信息print_student() 显示所有学员信息save_student() 保存学…

使用qt的webengine让客户端嵌入网页

前提 在windows下&#xff0c;qt下 界面 用qt的界面设计拉上一些东西&#xff0c;一个跑按钮&#xff0c;一个刷新按钮&#xff0c;一个弹出框按钮&#xff0c;地址栏是为了填入新的https地址&#xff0c;一个verticalLayout是为了限定webengine的显示&#xff0c;需要包含 …

UI界面中的图标设计趋势与最佳实践

作为UI设计师&#xff0c;在日常的工作中&#xff0c;避免不了做图标规范。今天跟大家聊一聊&#xff0c;UI设计中的图标设计。 规范的重要性不用多说了&#xff0c;没有规范多个设计师绘制的图标会有很多差异&#xff0c;描边粗细、角度、圆角度等等。今天的文章和大家聊一下…

opencv-14 图像加密和解密

在OpenCV中&#xff0c;图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或&#xff0c;可以实现加密&#xff1b;将加密后的图像与密钥图像再次进行按位异或&#xff0c;可以实…

MFC第十八天 非模式对话框、对话框颜色管理、记事本项目(查找替换、文字和背景色、Goto(转到)功能的开发)

文章目录 非模式对话框非模式对话框的特点非模式对话框与QQ聊天窗口开发非模态对话框&#xff08;Modeless Dialog&#xff09;和模态对话框&#xff08;Modal Dialog&#xff09;区别 记事本开发CFindReplaceDialog类的成员查找替换(算法分析)使用RichEdit控件 开发Goto(转到)…

Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十二&#xff09;自定义函数模块DebugTalks 序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; pytho…

3.13 Bootstrap 页面标题(Page Header)

文章目录 Bootstrap 页面标题&#xff08;Page Header&#xff09; Bootstrap 页面标题&#xff08;Page Header&#xff09; 页面标题&#xff08;Page Header&#xff09;是个不错的功能&#xff0c;它会在网页标题四周添加适当的间距。当一个网页中有多个标题且每个标题之间…