This package provides complete Baidu Mini Program runtime and compiler support for the uni-app cross-platform development framework. It enables Vue.js applications to be compiled and run on the Baidu Smart Mini Program platform while maintaining uni-app's unified development experience and API compatibility.
npm install @dcloudio/uni-mp-baidu// Main uni API (default export)
import uni from "@dcloudio/uni-mp-baidu";
// Or import specific functions
import { createApp, createPage, createComponent } from "@dcloudio/uni-mp-baidu";For CommonJS:
// Main uni API
const uni = require("@dcloudio/uni-mp-baidu");
// Or destructure specific functions
const { createApp, createPage, createComponent } = require("@dcloudio/uni-mp-baidu");import uni, { createApp, createPage } from "@dcloudio/uni-mp-baidu";
// Create a Baidu Mini Program app from Vue app
const app = createApp({
onLaunch() {
console.log('App launched');
}
});
// Create a page from Vue component options
const page = createPage({
data() {
return { message: 'Hello Baidu Mini Program' };
},
onLoad() {
console.log('Page loaded');
}
});The package is structured around several key components:
Core uni-app API implementation providing access to all platform capabilities through a unified interface. The main uni object provides cross-platform APIs with Baidu-specific adaptations.
// Main uni object (default export)
export default uni: {
// Unit conversion
upx2px(number: number, newDeviceWidth?: number): number;
// Interceptor system
addInterceptor(method: string, interceptor: Interceptor): void;
removeInterceptor(method: string, interceptor?: Interceptor): void;
// Event system
$on(event: string, handler: Function): void;
$off(event: string, handler?: Function): void;
$once(event: string, handler: Function): void;
$emit(event: string, ...args: any[]): void;
// Provider and payment APIs
getProvider(options: ProviderOptions): Promise<ProviderResult>;
requestPayment(params: PaymentParams): Promise<any>;
// Media query observer
createMediaQueryObserver(): MediaQueryObserver;
// Navigation APIs
navigateTo(options: NavigateToOptions): Promise<any>;
redirectTo(options: RedirectToOptions): Promise<any>;
navigateBack(options?: NavigateBackOptions): Promise<any>;
navigateToMiniProgram(options: NavigateToMiniProgramOptions): Promise<any>;
navigateBackMiniProgram(options?: NavigateBackMiniProgramOptions): Promise<any>;
// System APIs
getSystemInfo(options?: SystemInfoOptions): Promise<SystemInfo>;
getSystemInfoSync(): SystemInfo;
getAccountInfoSync(): AccountInfo;
// Network APIs
request(options: RequestOptions): Promise<RequestResult>;
connectSocket(options: ConnectSocketOptions): SocketTask;
// Media APIs
previewImage(options: PreviewImageOptions): Promise<any>;
createCanvasContext(canvasId: string, component?: any): CanvasContext;
getRecorderManager(): RecorderManager;
getBackgroundAudioManager(): BackgroundAudioManager;
// Scanner API
scanCode(options?: ScanCodeOptions): Promise<ScanCodeResult>;
// Share API
showShareMenu(options?: ShowShareMenuOptions): Promise<any>;
};Functions for converting Vue.js applications and components into Baidu Mini Program format with full lifecycle support.
function createApp(instance: VueAppInstance): BaiduMiniProgramApp;
function createPage(vuePageOptions: VuePageOptions): BaiduMiniProgramPage;
function createComponent(vueOptions: VueComponentOptions): BaiduMiniProgramComponent;
function createSubpackageApp(instance: VueAppInstance): BaiduMiniProgramSubpackageApp;
function createPlugin(instance: VueAppInstance): BaiduMiniProgramPlugin;Page navigation and routing functionality for navigating between pages and mini-programs with platform-specific adaptations for Baidu Smart Programs.
function navigateTo(options: NavigateToOptions): Promise<any>;
function redirectTo(options: RedirectToOptions): Promise<any>;
function navigateBack(options?: NavigateBackOptions): Promise<any>;
function navigateToMiniProgram(options: NavigateToMiniProgramOptions): Promise<any>;
function navigateBackMiniProgram(options?: NavigateBackMiniProgramOptions): Promise<any>;Device and system information APIs providing access to device capabilities, account information, and system configuration.
function getSystemInfo(options?: SystemInfoOptions): Promise<SystemInfo>;
function getSystemInfoSync(): SystemInfo;
function getAccountInfoSync(): AccountInfo;Network communication APIs for HTTP requests and WebSocket connections with Baidu-specific protocol adaptations.
function request(options: RequestOptions): Promise<RequestResult>;
function connectSocket(options: ConnectSocketOptions): SocketTask;Utilities for seamlessly integrating Vue.js components with Baidu Mini Program runtime, handling data binding, event systems, and lifecycle management.
function initComponentInstance(instance: VueInstance, options: ComponentOptions): void;
function handleEvent(event: BaiduMiniProgramEvent): void;
function setModel(target: any, key: string, value: any, modifiers: ModelModifiers): void;Configuration and compilation utilities for transforming Vue.js applications into Baidu Mini Program format during the build process.
const options: {
cssVars: CSSVariables;
extnames: FileExtensions;
filterTag: string;
project: string;
subPackages: boolean;
};
function copyWebpackOptions(platformOptions: any, vueOptions: any): WebpackCopyOptions;Built-in automation capabilities for testing and debugging Baidu Mini Program applications with DevTools integration. Available globally via the swan object in the Baidu Mini Program runtime environment.
// Available globally as swan.$$initRuntimeAutomator
function $$initRuntimeAutomator(options?: AutomatorOptions): void;
interface AutomatorAPI {
getData(): any;
setData(data: any): void;
callMethod(method: string, args: any[]): any;
}interface VueAppInstance {
onLaunch?(): void;
onShow?(options: any): void;
onHide?(): void;
onError?(error: string): void;
onPageNotFound?(options: any): void;
onUnhandledRejection?(options: any): void;
onThemeChange?(options: any): void;
globalData?: any;
}
interface VuePageOptions {
data?(): any;
onLoad?(options: any): void;
onShow?(): void;
onReady?(): void;
onHide?(): void;
onUnload?(): void;
onPullDownRefresh?(): void;
onReachBottom?(): void;
onShareAppMessage?(options: any): any;
onPageScroll?(options: any): void;
onResize?(options: any): void;
onTabItemTap?(options: any): void;
[key: string]: any;
}
interface VueComponentOptions {
props?: any;
data?(): any;
computed?: any;
methods?: any;
watch?: any;
created?(): void;
mounted?(): void;
updated?(): void;
destroyed?(): void;
[key: string]: any;
}
interface PaymentParams {
orderInfo: string;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface MediaQueryObserver {
observe(options: MediaQueryOptions, callback: (result: MediaQueryResult) => void): void;
disconnect(): void;
}
interface MediaQueryOptions {
minWidth?: number;
maxWidth?: number;
width?: number;
minHeight?: number;
maxHeight?: number;
height?: number;
orientation?: 'landscape' | 'portrait';
}
interface MediaQueryResult {
matches: boolean;
}
interface NavigateToOptions {
url: string;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
events?: any;
}
interface RedirectToOptions {
url: string;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface NavigateBackOptions {
delta?: number;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface NavigateToMiniProgramOptions {
appId: string;
path?: string;
extraData?: any;
envVersion?: 'develop' | 'trial' | 'release';
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface NavigateBackMiniProgramOptions {
extraData?: any;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface SystemInfoOptions {
success?(result: SystemInfo): void;
fail?(error: any): void;
complete?(): void;
}
interface SystemInfo {
brand: string;
model: string;
pixelRatio: number;
screenWidth: number;
screenHeight: number;
windowWidth: number;
windowHeight: number;
statusBarHeight: number;
language: string;
version: string;
system: string;
platform: string;
fontSizeSetting: number;
SDKVersion: string;
safeArea: SafeArea;
safeAreaInsets: SafeAreaInsets;
[key: string]: any;
}
interface SafeArea {
left: number;
right: number;
top: number;
bottom: number;
width: number;
height: number;
}
interface SafeAreaInsets {
top: number;
left: number;
right: number;
bottom: number;
}
interface AccountInfo {
miniProgram: {
appId: string;
};
plugin?: {
appId: string;
version: string;
};
}
interface RequestOptions {
url: string;
data?: any;
header?: any;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'HEAD' | 'OPTIONS' | 'TRACE';
timeout?: number;
dataType?: 'json' | 'text' | 'base64';
responseType?: 'text' | 'arraybuffer';
success?(result: RequestResult): void;
fail?(error: any): void;
complete?(): void;
}
interface RequestResult {
data: any;
statusCode: number;
header: any;
cookies?: string[];
}
interface ConnectSocketOptions {
url: string;
header?: any;
protocols?: string[];
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface SocketTask {
send(options: any): void;
close(options?: any): void;
onOpen(callback: (result: any) => void): void;
onClose(callback: (result: any) => void): void;
onError(callback: (error: any) => void): void;
onMessage(callback: (result: any) => void): void;
}
interface PreviewImageOptions {
urls: string[];
current?: string;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface CanvasContext {
measureText(text: string, callback?: (result: { width: number }) => void): { width: number } | void;
[key: string]: any;
}
interface RecorderManager {
start(options?: any): void;
pause(): void;
resume(): void;
stop(): void;
onStart(callback: () => void): void;
onPause(callback: () => void): void;
onStop(callback: (result: any) => void): void;
onFrameRecorded?: (callback: (result: any) => void) => void;
onError(callback: (error: any) => void): void;
}
interface BackgroundAudioManager {
duration: number;
currentTime: number;
paused: boolean;
src: string;
startTime: number;
title: string;
epname: string;
singer: string;
coverImgUrl: string;
webUrl: string;
protocol: string;
play(): void;
pause(): void;
stop(): void;
seek(position: number): void;
onCanplay(callback: () => void): void;
onPlay(callback: () => void): void;
onPause(callback: () => void): void;
onStop(callback: () => void): void;
onEnded(callback: () => void): void;
onTimeUpdate(callback: () => void): void;
onPrev?: (callback: () => void) => void;
onNext?: (callback: () => void) => void;
onError(callback: (error: any) => void): void;
}
interface ScanCodeOptions {
success?(result: ScanCodeResult): void;
fail?(error: any): void;
complete?(): void;
}
interface ScanCodeResult {
result: string;
scanType: string;
charSet: string;
path: string;
}
interface ShowShareMenuOptions {
withShareTicket?: boolean;
success?(result: any): void;
fail?(error: any): void;
complete?(): void;
}
interface ProviderOptions {
service: 'oauth' | 'share' | 'payment' | 'push';
success?(result: ProviderResult): void;
fail?(error: any): void;
}
interface ProviderResult {
service: string;
provider: string[];
}
interface Interceptor {
invoke?(options: any): any;
success?(result: any): any;
fail?(error: any): any;
complete?(): void;
returnValue?(result: any): any;
}