project.md 5.8 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
# uni-app x项目

## 新建
在HBuilder3.9起,新建uni-app项目界面的底部有一个checkbox:uni-app x。勾选后会新建为uni-app x项目。

![](./static/newproject.png)

uni-app x不支持vue2,所以无法同时勾选vue2。

uni-app x的项目,manifest.json中会多一个节点`"uni-app-x" : {}`。这是HBuilder识别项目类型的标记。如手动增删这个节点,需对项目点右键"重新识别项目类型"
```json
{
    "name" : "hello-uniapp x",
    "appid" : "__UNI__4517034",
    "description" : "",
    "versionName" : "1.0.0",
    "versionCode" : "100",
    "uni-app-x" : {
    }
}
```

uni-app x的项目,在左侧项目管理器的图标是圆形的U(之前是方型的U)。

![](./static/project-icon.png)

## 项目结构

29
uni-app x的项目结构与[uni-app js引擎版的项目结构](https://uniapp.dcloud.net.cn/tutorial/project.html)基本一致。
D
DCloud_LXH 已提交
30 31 32 33 34

主要的差别是没有nativeplugins目录和wxcomponents目录。原因是uni-app x不支持uni-app js引擎版的原生语言插件,不支持微信小程序wxml组件。

基于uts的插件,可以在uni-app x和uni-app上通用。

W
x  
wanganxp 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
<pre v-pre="" data-lang="">
	<code class="lang-" style="padding:0">
┌─uniCloud              云空间目录,支付宝小程序云为uniCloud-alipay,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见<a href="https://doc.dcloud.net.cn/uniCloud/quickstart?structure&id=structure">uniCloud</a>
│─components            符合vue组件规范的uni-app x组件目录
│  └─comp-a.vue         可复用的a组件
├─utssdk                存放uts文件
├─pages                 业务页面文件存放的目录
│  ├─index
│  │  └─index.uvue      index页面
│  └─list
│     └─list.uvue       list页面
├─static                存放应用引用的本地静态资源(如图片、字体、音视频等)的目录,<b>注意:</b>静态资源都应存放于此目录  <a href="https://doc.dcloud.net.cn/uni-app-x/compiler/#static">详见</a>
├─uni_modules           存放uni_module <a href="https://uniapp.dcloud.net.cn/plugin/uni_modules.html">详见</a>
├─platforms             存放各平台专用页面的目录,<a href="https://uniapp.dcloud.net.cn/tutorial/platform.html#preprocessor">详见</a>
├─nativeResources       App端原生资源目录
│  ├─android            Android原生资源目录 <a href="https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android">详见</a>
|  └─ios                iOS原生资源目录 <a href="https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios.html#%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6-bundle-resources">详见</a>
├─hybrid                App端存放web-view组件使用的本地html文件的目录,<a href="./component/web-view">详见</a>
├─unpackage             非工程代码,一般存放运行或发行的编译结果、App自定义基座
├─main.uts              Vue初始化入口文件
├─App.uvue              应用配置,用来配置App全局样式以及监听 <a href="/collocation/App#应用生命周期">详见</a>
├─pages.json            配置页面路由、导航条、选项卡等页面类信息,<a href="/collocation/pages">详见</a>
├─manifest.json         配置应用名称、appid、logo、版本等打包信息,<a href="/collocation/manifest">详见</a>
├─AndroidManifest.xml   Android原生应用清单文件 <a href="https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android">详见</a>
├─Info.plist            iOS原生应用配置文件 <a href="https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios">详见</a>
└─uni.scss              内置的常用样式变量
	</code>
</pre>

W
web  
wanganxp 已提交
64 65 66
## App的运行和发行

### App运行
D
DCloud_LXH 已提交
67

W
x  
wanganxp 已提交
68
uni-app x的真机运行基座(playground),和uni-app js引擎版不同,是一个绿色圆形的U(之前是方型H),基座名称默认为`uni-app x`(之前叫HBuilder)。
D
DCloud_LXH 已提交
69 70 71 72 73
![](./static/playground.jpg)

- uni-app x基座,只能运行uni-app x项目,包名是io.dcloud.uniappx
- HBuilder基座,可以运行5+App、wap2app和uni-app js引擎版。包名是io.dcloud.HBuilder

W
x  
wanganxp 已提交
74 75 76 77
标准基座使用的图标、包名、证书以及配置的三方sdk的appkey等各种原生信息,都是DCloud的。这些无法更改。

当需要使用自己的包名、证书和原生配置进行运行调试时,需在打包界面勾选打包自定义基座,打包后的自定义基座会放置在项目的unpackage目录下,然后在运行项目时的界面中可以选择自定义基座来运行。

D
DCloud_LXH 已提交
78 79
uni-app x运行时,控制台右上角可以选择开启原生日志。

W
wanganxp 已提交
80
目前支持真机运行、从HBuilderX 4.0起支持uts插件的debug断点。但目前还不支持uvue的断点debug。
D
DCloud_LXH 已提交
81

W
web  
wanganxp 已提交
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
### App发行

uni-app x App平台,目前只能打包apk。暂不支持渠道包。不支持wgt热更新、不支持安心打包。下载到项目下的uts插件可打包含入。

## web的运行和发行

uni-app x运行到浏览器时,编译基于vite,其特点是按需编译。所以项目运行后很快能看到首页,但点击二级页时有等待延迟,因为此时正在先编译后再渲染。

这带来2个问题:
1. 运行时点击初次打开的二级页有等待过程。在一个运行的周期内,已编译过的页面再次进入时瞬间打开。
2. 运行后未点到页面由于不会被编译,其中隐藏的类型错误不可知,需在发行时查阅。

发行时会编译全部项目。因为运行时未必点全所有页面,所以发行时可能看到更多编译报错。另外发行后由于已编译过,打开二级页面时很快。

发行后的文件如果部署uniCloud的前端网页托管,记得在uniCloud的web控制台点强制刷新。
W
x  
wanganxp 已提交
97

W
web  
wanganxp 已提交
98
如果有条件的话,可以在重新部署后用各地ip访问一遍,让文件同步到各地的cdn节点,这样当地用户第一次访问时就会更快。