uni-app

※前提条件:vue3 的uniapp开发

概要 [edit]

在 C 语言中,通过 #ifdef、#ifndef 的方式,为 windows、mac 等不同 os 编译不同的代码。 uni-app 参考这个思路,为 uni-app 提供了条件编译手段,在一个工程里优雅的完成了平台个性化实现。

运行时(runtime) [edit]

runtime不是运行在电脑开发环境,而是运行在真正的终端上。

uni-app在每个平台(Web、Android App、iOS App、各家小程序)都有各自的runtime。这是一个比较庞大的工程。

条件编译 [edit]

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

条件编译写法说明
#ifdef APP-PLUS
需条件编译的代码
#endif
仅出现在 App 平台下的代码
#ifndef H5
需条件编译的代码
#endif
除了 H5 平台,其它平台均存在的代码
#ifdef H5 || MP-WEIXIN
需条件编译的代码
#endif
在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

%PLATFORM% 可取值如下: [edit]

平台
APP-PLUSApp
APP-PLUS-NVUE或APP-NVUEApp nvue
H5H5
MP-WEIXIN微信小程序
MP-ALIPAY支付宝小程序
MP-BAIDU百度小程序
MP-TOUTIAO字节跳动小程序
MP-QQQQ小程序
MP-360360小程序
MP微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW快应用通用(包含联盟、华为)

|QUICKAPP-WEBVIEW-UNION|快应用联盟

例子 [edit]

组件 [edit]

<!-- #ifdef MP-WEIXIN -->
<ad unit-id="123456789"></ad>
<!-- #endif -->

CSS [edit]

在 CSS 中使用条件编译,往往是因为某些平台的内置组件的样式,会影响到一血界面的渲染。

/* #ifdef MP-ALIPAY*/
input {
padding: 0;
/* #endif */
}

js [edit]

// #ifdef APP-PLUS
const uuid = plus.device.uuid;
// #endif

json [edit]

{
"globalStyle": {
	"navigationBarBackgroundColor": "#FF3333"
},
"pages": [{
		"path": "pages/index/index"
		}
		// #ifdef APP-PLUS
		, {
		"path": "pages/speech/speech"
		}
		// #endif
	]
}

Comment:



(画像の文字列を入力して下さい)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS