codecamp

快应用 文件组织

应用资源


一个应用包含:描述项目配置信息的 manifest文件,放置项目公共资源脚本的 app.ux文件,多个描述页面/自定义组件的 ux文件 ,典型示例如下:

应用根目录

├── manifest.json
├── app.ux
├── Page1
│   ├── page1.ux
├── Page2
│   ├── page2.ux
└── Common
    ├── ComponentA.ux
    ├── ComponentB.ux
    └── xxx.png

其中Common目录下为公用的资源文件和组件文件,每个页面目录下存放各自页面私有的资源文件和组件文件,如:图片,CSS,JS等

文件存储


在应用平台中是按分区来存储文件的,目前支持以下分区

  1. Cache,一般用于存储缓存文件,比如通过fetch接口下载的文件会存储在该分区中,该分区中的文件可能因存储空间不够被系统删除
  2. Files,一般用于存储比较小的永久文件,该分区中的文件由应用自己管理
  3. Mass,一般用于存储比较大的文件,但该分区并不保证一直可用
  4. Temp,表示从外部映射过来的临时文件,出于安全性考虑,临时文件是只读的,并且只能通过调用特定的API获取,比如media.pickVideo方法。另外临时文件的访问是临时的,应用重启后无法访问到临时文件,需要通过特定API重新获取。

另外应用资源也作为一个特殊的只读分区进行处理。

URI


URI 用于标识应用资源和文件,组件 和 接口 通过URI来访问应用资源和文件。

资源类型 URI 只读 示例 说明
应用资源 /path /Common/header.png -
Cache internal://cache/path internal://cache/fetch-123456.png -
Files internal://files/path internal://files/image/demo.png -
Mass internal://mass/path internal://mass/video/demo.mp4 -
Temp internal://tmp/path internal://tmp/xxxxx 由系统动态生成

URI允许的字符是0-9a-zA-Z_-./%:(不包含引号),URI中不能出现..,URI支持目录结构,目录由斜线'/'分隔。

internal URI表示的是应用私有文件,即在指定internal URI时,无需指定应用标识,同一个internal URI对于不同的应用会指向不同的文件。

资源和文件访问规则


应用资源路径分为绝对路径和相对路径,以"/"开头的路径表示绝对路径,比如 /Common/a.png,不以"/"开头的路径是相对路径,比如 a.png 和 ../Common/a.png 等。

应用资源文件分为代码文件和资源文件,代码文件是指 .js/.css/.ux 等包含代码的文件,其他文件则是资源文件,这类文件一般只当作数据来使用,比如图片、视频等。

  1. 在代码文件中,导入其他代码文件时,使用相对路径,比如:../Common/component.ux。
  2. 在代码文件中,引用资源文件(如:图片、视频等)时,一般情况下使用相对路径,比如: ./abc.png。
  3. 当代码文件需要被导入时,如果导入文件与被导入文件在同一个目录,被导入文件引用资源文件时可以使用相对路径,但如果不在同一目录,必须使用绝对路径,因为被导入文件编译时会被复制到导入文件中,编译后目录会发生变化。比如 a.css 文件被 b.ux 导入,如果 a.css 与 b.ux 在同一个目录,a.css 引用资源文件时可以写相对路径:abc.png,如果不在同一个目录,必须写绝对路径:/Common/abc.png,再比如当 a.ux 文件被 b.ux 文件导入时,如果 a.ux 与 b.ux 在同一个目录,a.ux 引用资源文件时可以写相对路径:a.png,如果不在同一个目录,a.ux 引用资源必须写绝对路径:/Common/abc.png。
  4. 在CSS中,与前端开发一致,使用url(PATH)的方式访问资源文件,如:url(/Common/abc.png)


快应用 框架简介
快应用 manifest文件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

快应用 参考手册

快应用 安全

快应用 声音音频

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }