1. 单层项目架构
ts
ets
├── apis //网络层
├── abilitystage //应用程序页
│ └── AtourAbilityStage.ets
├── base //基础模块
│ └── manager // - 基础模块,管理类
├── common // 通用模
│ ├── builders // - 通用组件 @Builder
│ ├── components // - 通用组件 @Component
│ ├── constants // - 常量数据
│ ├── images // - 图片资源
│ └── utils // - 工具类
├── datasource // List懒加载datasource目录
├── entryability // 入口UIAbility
│ └── EntryAbility.ets
├── models // 数据模型
│ └── request // - 请求数据模型
│ └── response // - 响应数据模型
│ └── bean // - 其他数据模型
│ └── enum // - 枚举数据模型
│ └── interface // - 接口数据模型
│ └── parmas // - 参数数据模型
│── pages // 页面组件
│ ├── HomePage.ets
│ └── index.ets
-
目录名要小写,类名第一个字母大写
-
所有自定义@Builder放到builders目录下
-
所有自定义@Component放到component目录下
-
所有数据实体类放到models目录下
- 所有的请求数据模型放到request目录下
- 所有的响应数据模型(后台返回结果)放到response目录下
- 其他数据模型(和网络无关的)放到bean
- 和无网络无关的请求参数放到parmas
-
所有常量类放到constants目录下
2. 三层项目架构
arduino
project-root
├── commons // 基础层(通用组件、工具类、资源)
│ └── basic // - 通用模块
├── features // 需求层(业务组件)
│ ├── home // - 首页模块
│ └── mine // - 我的模块
│ └── hotel // - 酒店模块
│ └── order // - 订单模块
└── products // 入口层(页面)
└── phone // - 设备模块
└── watch
3. ets文件命名规范
3.1. 命名规则:
- 类名首字母大写,使用驼峰命名法。
- 类名应描述类的作用或用途,避免使用过于抽象或模糊的名称
目录名 | 描述 | 例如 |
---|---|---|
apis目录 | Api作为后缀标识 | HotelListApi |
abilitystage目录 | AbilityStage为后缀标识 | AtourAbilityStage |
manager目录 | Manager作为后缀标识 | HomeManager |
helper目录 | Helper作为后缀标识 | HotelHelper |
builders目录 | Builder作为后缀标识 | FeatServiceBuild |
components目录 | Component作为后缀标识 | CouponComponent |
constants目录 | Constants作为后缀标识 | CommonConstants |
images目录 | Image作为后缀标识 | BasicImage |
utils目录 | Utils作为后缀标识 | DownloadUtils |
datasource目录 | DataSource作为后缀标识 | CityListDataSource |
entryability目录 | EntryAbility作为后缀标识 | PageEntryAbility |
request目录 | Request作为后缀标识 | HomeRequest |
response目录 | Response作为后缀标识 | MarketingConfigResponse |
bean目录 | Bean作为后缀标识 | LoginBean |
enum目录 | Enum作为后缀标识 | CityListEnum |
interface目录 | I开头/able/ible结尾 | IHomeView、Runnable |
page目录 | Page作为后缀标识 | HotelDetailPage、HotelListPage |
params目录 | Params作为后缀 | SearchParams |
3.2. 导出文件规范:
- 在每个模块的一级目录下(main/ets/下的目录为一级目录),都必须新建一个名为
index.ets
的文件,这个文件的作用是把该目录下所有需要导出的组件统一导出,方便其他地方引用 - 若本目录下没有任何导出文件,可无index.ets,如 pages目录
- 在项目的根目录下,也要有一个名为
Index.ets
的文件,用来导出所有模块的index.ets
文件。这样,整个项目的所有模块和组件就都能通过这个文件来统一管理和引用。
4. 属性命名规范
- 若不涉及数据更新,只是简单的展示,可直接使用「interface」,变量不需要初始化
- 若涉及数据更新,推荐使用「class」,变量需要初始化
- 所有的名字不要用""、''来修饰,直接使用名字加类型,如下面代码
typescript
export interface LoginInfo {
cookString: string | null;
encryptedOpenId: string | null;
personalInfoResponse: LoginData;
oid: string | null;
thirdToken: string | null;
token: string;
userKey: string;
userMarketFlag: boolean
}
- 使用时若声明全局对象,需要进行初始化,设置为null即可
java
@State userInfo: LoginInfo | null = null
5. 方法命名规范
5.1. 方法命名
-
方法名应该是动词或动词短语,简洁明了,符合功能。
-
方法名使用驼峰命名法,首字母小写。
-
用于UI更新的:
updateHotelList()
:更新酒店列表的方法showErrorMessage()
:显示错误消息的方法
-
用于数据处理的:
processOrderData()
:处理订单数据的方法fetchHotelDetails()
:获取酒店详情的方法
-
用于事件响应的:
onLoginSuccess()
:登录成功后的回调方法onOrderSubmitted()
:订单提交后的回调方法
5.2. 参数命名
-
参数名应该具描述性,避免使用
a
、b
等无意义的命名。fetchHotelDetails(hotelId: number)
:获取酒店详情的方法,参数为hotelId
submitOrder(order: OrderModel)
:提交订单的方法,参数为order
6. 常量命名规范
6.1. 常量命名
-
常量使用全大写字母,并用下划线连接单词。
-
常量类命名使用
Constants
作为后缀。BASE_URL
:基础URL常量TIMEOUT_DURATION
:请求超时时间常量USER_ID
:用户ID常量DEFAULT_PAGE_SIZE
:默认分页大小
6.2. 枚举类命名
-
枚举类使用
Enum
后缀,枚举项通常用全大写。OrderStatusEnum
:订单状态枚举类PaymentMethodEnum
:支付方式枚举类
7. color资源
-
一般公司颜色资源都是固定的那几套
-
color资源是以#AARRGGBB为格式,写入module对应下的colors.xml中,所以使用命名可以使用格式
-
color_RRGGBB_透明度 (透明度可不加)
- 如:
-
json
{
"name": "color_B59E6D_alpha_6",
"value": "#0FB59E6D"
}
-
或 颜色_alpha_透明度
- 如:
json
{
"name": "black_alpha_10",
"value": "#1A000000"
},