大家好,我是 码工,一个有十年工作经验的码农,一心追求技术。

来啦来啦,最近经常有小伙伴问我有关鸿蒙的项目目录结构,让我讲一下鸿蒙开发的目录结构。

今天终于有时间了,给大家详细讲解一下。

主要从两方面讲,Java项目结构和Js项目结构。

为啥要说两个的呢?这就体现了鸿蒙开发的好处,鸿蒙开发太方便了,既可以使用Java开发,还可以使用Js开发。

根据个人的喜好或者擅长来选择,进行开发。

话不错说,开干。

1,Java 项目目录结构

Java工程目录结构如下图所示。

gradle:Gradle配置文件,由系统自动生成,一般情况下不需要进行修改。

entry:默认启动模块(主模块),开发者用于编写源码文件以及开发资源文件的目录。

element 目录下文件:

1,boolean.json:布尔型

2,color.json:颜色

3,float.json:浮点型

4,intarray.json:整型数组

5,integer.json:整型

6,pattern.json:样式

7,plural.json:复数形式

8,strarray.json:字符串数组

9,string.json:字符串值。

entry>libs:用于存放entry模块的依赖文件-jar包。

entry>src>main>Java:用于存放Java源码。

entry>src>main>resources:用于存放应用所用到的资源文件,如图形、多媒体、字符串、布局文件等。

资源目录

资源文件说明

base>element

包括字符串、整型数、颜色、样式等资源的json文件。每个资源均由json格式进行定义,例如:

  • boolean.json:布尔型
  • color.json:颜色
  • float.json:浮点型
  • intarray.json:整型数组
  • integer.json:整型
  • pattern.json:样式
  • plural.json:复数形式
  • strarray.json:字符串数组
  • string.json:字符串值。

base>graphic

xml类型的可绘制资源,如SVG(Scalable Vector Graphics)可缩放矢量图形文件、Shape基本的几何图形(如矩形、圆形、线等)等。

base>layout

xml格式的界面布局文件。

base>media

多媒体文件,如图形、视频、音频等文件,支持的文件格式包括:.png.gif.mp3.mp4等。

base>profile

用于存储任意格式的原始资源文件。区别在于rawfile不会根据设备的状态去匹配不同的资源,需要指定文件路径和文件名进行引用。

rawfile

entry>src>main>config.json:HAP清单文件。

en/zh element  支持的与语言,目前有中文和英文。

entry>src>test:编写代码单元测试代码的目录,运行在本地Java虚拟机(JVM)上。

entry>.gitignore:标识git版本管理需要忽略的文件。

entry>build.gradle:entry模块的编译配置文件。

2,js项目目录结构

JS工程目录结构如下图所示。

  • common目录:可选,用于存放公共资源文件,如媒体资源、自定义组件和JS文档等,可以在下面添加其它目录。
  • i18n目录:可选,用于存放多语言的json文件,可以在该目录下定义应用在不同语言系统下显示的内容,如应用文本词条、图片路径等。
  • pages目录:pages文件夹下可以包含1个或多个页面,每个页面都需要创建一个文件夹(如图中的index)。页面文件夹下主要包含3种文件类型:css、js和hml文件。
    • pages>index>index.hml文件:hml文件定义了页面的布局结构,使用到的组件,以及这些组件的层级关系。
    • pages>index>index.css文件:css文件定义了页面的样式与布局,包含样式选择器和各种样式属性等。
    • pages>index>index.js文件:js文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有的逻辑关系,比如数据、事件等。
  • resources:可选,用于存放资源配置文件,比如:全局样式、多分辨率加载等配置文件。
  • app.js文件:全局的JavaScript逻辑文件和应用的生命周期管理。

JS服务卡片(entry/src/main/js/module)的典型开发目录结构如下:

图1 目录结构

目录结构中文件分类如下:

  • .hml结尾的HML模板文件,这个文件用来开发页面的模板布局结构。
  • .css结尾的CSS样式文件,这个文件用于开发页面样式。
  • .json结尾的JSON文件,这个文件用于开发使用的变量和action事件。

说明

i18n和resources是开发保留文件夹,不可重命名。

3,应用资源访问规则

应用资源可通过绝对路径或相对路径的方式进行访问,本开发框架中绝对路径以"/"开头,相对路径以"./"或"../"。具体访问规则如下:

  • 引用代码文件,需使用相对路径,比如:../common/style.css。
  • 引用资源文件,推荐使用绝对路径。比如:/common/xxx.png。
  • 公共代码文件和资源文件推荐放在common下,通过规则1和规则2进行访问。
  • CSS样式文件中通过url()函数创建<url>数据类型,如:url(/common/xxx.png)。

这篇的目录结构非常重要,在开发中需要根据目录去添加和设置文件,清楚这些目录是必备技能。

原创不易,有用就关注一下。要是帮到了你 就给个三连吧,多谢支持。

觉得不错的小伙伴,记得帮我 点个赞和关注哟,笔芯笔芯~**

作者:码工

有问题请留言或者私信,可以 微信搜索:程序员漫话编程,关注公众号获得更多免费学习资料。

鸿蒙APP开发入门到进阶 | 聊聊鸿蒙项目结构和使用方法相关推荐

  1. 鸿蒙APP开发入门到进阶 | 入门完整篇。

    大家好,我是 码工,一个有十年工作经验的码农,一心追求技术. 先说说我的开发经历,10年毕业,到目前已经十多年开发经验,大学学习了多种语言,Java,Android,c,c++,到毕业时真正掌握了几乎 ...

  2. 鸿蒙App开发(1)---初识鸿蒙开发

    [摘要] 鸿蒙App开发 搭建鸿蒙开发环境首先,我们需要安装Java JDK,博主后续的讲解大部分都是用Java语言开发鸿蒙App,所以系统中必须有Java JDK,安装地址:https://www. ...

  3. 【鸿蒙OS开发入门】18 - HDF驱动子系统:加速度计传感器 Driver层驱动代码分析

    [鸿蒙OS开发入门]18 - HDF驱动子系统:加速度计传感器 Driver层代码分析 一.如何添加速度计传感器驱动代码(代码.编译.配置) 1.驱动代码实现 2.驱动编译配置 2.1 linux 编 ...

  4. 【鸿蒙OS开发入门】13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解

    [鸿蒙OS开发入门]13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解 一. /etc/init.cfg 系统默认cfg:启动lo回环网卡 1.1 init.Hi35 ...

  5. 【鸿蒙OS开发入门】06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 启动init进程

    [鸿蒙OS开发入门]06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 一.head.S 启动start_kernel() 1.1 start_kernel() ...

  6. 【鸿蒙OS开发入门】16 - 重头搭建Ubuntu新环境编译OpenHarmony 3.0 LTS

    [鸿蒙OS开发入门]16 - 重头搭建Ubuntu新环境编译OpenHarmony 3.0 LTSv 一.配置Telnet 和 samba 二.下载code-v3.0-LTS.tar.gz源码 三.配 ...

  7. (转载)H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 一.H5 的含义 二.原生应用 2.1 概念 2.2 优点 2.3 缺点 三.Web 应用 3.1 概念 3.2 优点和缺点 3.3 Web APP 的劣势 3. ...

  8. 5G 时代的 Android App 开发入门与项目实战

    随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑.智能电视.车载大屏.智能家居.智能手表等诸多设备,Android开发依然是前景可期的IT岗位. 当然,整个社会正在迈向5G时代 ...

  9. 《Android App开发入门与项目实战》出版后记

    <Android Studio开发实战:从零基础到App上线>自面世以来,承蒙众多朋友的抬爱,该书一直保持不错的销量,其中第一版的出货量突破一万,第二版的出货量即将突破两万.对于一个程序员 ...

最新文章

  1. DNS重绑定DNS Rebinding攻击
  2. 【bzoj4318】OSU! 期望dp
  3. java 设计模式_快速上手Java设计模式之简介
  4. 工作201:所需功能优化
  5. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法
  6. phpcms 怎样实现PC端、手机端的双模版
  7. 优秀的gdb图形化前端调试器
  8. 跨平台的网络通信中间件:ICE和ACE
  9. linux查看双机热备运行,linux双机热备,故障切换!!!
  10. 【Python读文件】'gbk' codec can't decode byte 0xb1 in position 5: illegal multibyte sequence
  11. linux创建文件夹操作步骤,linux如何用命令创建新建文件夹
  12. 驱动精灵卸载后无限蓝屏重启
  13. nar神经网络_基于神经网络的预测模型
  14. excel简繁切换_excel简繁转换_EXCEL中的“中文简繁转换”按钮不见了!
  15. VUE:element ui组件应用之个人中心页面
  16. Linux下PCB的task_struck结构体
  17. 选字验证码破解思路:CTPN - 自然场景文本检测
  18. 在后台删除新闻时,需要删除服务器上的文件夹
  19. 拿什么拯救你 我的“游戏寡妇”、“游戏孤儿”们
  20. 仅需3分钟,你就能明白Kafka的工作原理

热门文章

  1. Graphics.MeasureString 不能获得精确宽度的问题
  2. linux网络流量iptables,如何用IPtables限制网络流量(4)
  3. ipmitool介绍_ipmitool命令详解
  4. 图片的格式怎么转换?这几种转换格式的方法请收好
  5. Ubuntu20.04分区方案
  6. Oracle PDB save state
  7. WebApp开发实战视频教程
  8. 让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心
  9. CAD发布为GeoServer地图服务
  10. 莱仕达V18无极2方向盘使用手记