├── .github
└── workflows
│ └── nodejs.yml
├── .gitignore
├── LICENSE
├── README.md
├── _config.yml
├── deploy.sh
├── package.json
├── program-docs
├── docs
│ ├── .vuepress
│ │ ├── config.js
│ │ ├── enhanceApp.js
│ │ ├── plugins
│ │ │ ├── code-pre-wapper.js
│ │ │ ├── container.js
│ │ │ ├── gen-search.js
│ │ │ ├── make-sitemap.js
│ │ │ ├── md-loader.js
│ │ │ └── router.js
│ │ ├── templates
│ │ │ ├── dev.html
│ │ │ └── ssr.html
│ │ ├── theme
│ │ │ ├── assets
│ │ │ │ ├── images
│ │ │ │ │ ├── arrow-relative.png
│ │ │ │ │ ├── arrow.png
│ │ │ │ │ ├── back-to-top.png
│ │ │ │ │ ├── copy-active.png
│ │ │ │ │ ├── copy.png
│ │ │ │ │ ├── edit-active.png
│ │ │ │ │ ├── edit.png
│ │ │ │ │ ├── feedback.png
│ │ │ │ │ ├── head-menu-mobile.png
│ │ │ │ │ ├── logo-mobile.png
│ │ │ │ │ ├── logo.png
│ │ │ │ │ ├── logo_docs.png
│ │ │ │ │ ├── mobile-close.png
│ │ │ │ │ ├── mobile-select.png
│ │ │ │ │ ├── next.png
│ │ │ │ │ ├── prev.png
│ │ │ │ │ ├── qrcode-logo.png
│ │ │ │ │ ├── search-icon-mobile.png
│ │ │ │ │ ├── search-icon.png
│ │ │ │ │ ├── status.png
│ │ │ │ │ ├── title-bg.png
│ │ │ │ │ ├── tool-hover.png
│ │ │ │ │ ├── tool.png
│ │ │ │ │ └── webview.png
│ │ │ │ └── less
│ │ │ │ │ ├── common
│ │ │ │ │ ├── code-tab.less
│ │ │ │ │ ├── color.less
│ │ │ │ │ ├── common.less
│ │ │ │ │ ├── custom.css
│ │ │ │ │ ├── global-menu.less
│ │ │ │ │ ├── params.less
│ │ │ │ │ ├── plugin-container.less
│ │ │ │ │ ├── qr-code.less
│ │ │ │ │ └── table.less
│ │ │ │ │ └── components
│ │ │ │ │ ├── article.less
│ │ │ │ │ ├── bottom-nav.less
│ │ │ │ │ ├── footer.less
│ │ │ │ │ ├── header.less
│ │ │ │ │ ├── mobile-head-nav.less
│ │ │ │ │ ├── relative-link.less
│ │ │ │ │ ├── search-box.less
│ │ │ │ │ ├── sidebar-tree.less
│ │ │ │ │ ├── sidebar.less
│ │ │ │ │ └── sub-nav.less
│ │ │ ├── components
│ │ │ │ ├── Article.vue
│ │ │ │ ├── BackToTop.vue
│ │ │ │ ├── BottomNav.vue
│ │ │ │ ├── Footer.vue
│ │ │ │ ├── GlobalMenu.vue
│ │ │ │ ├── Header.vue
│ │ │ │ ├── MobileHeadNav.vue
│ │ │ │ ├── RelativeLink.vue
│ │ │ │ ├── Sidebar.vue
│ │ │ │ ├── SidebarTree.vue
│ │ │ │ ├── SubNav.vue
│ │ │ │ ├── WebSimulator.vue
│ │ │ │ └── search
│ │ │ │ │ ├── SearchBox.vue
│ │ │ │ │ └── SearchSug.vue
│ │ │ ├── global-components
│ │ │ │ ├── CodeTab.vue
│ │ │ │ ├── CodeTabContent.vue
│ │ │ │ ├── CodeTabIcon.vue
│ │ │ │ ├── OpenIde.vue
│ │ │ │ └── QRCode.vue
│ │ │ ├── layouts
│ │ │ │ ├── 404.vue
│ │ │ │ └── Layout.vue
│ │ │ └── utils
│ │ │ │ ├── api.js
│ │ │ │ ├── get-device.js
│ │ │ │ ├── get-init-data.js
│ │ │ │ ├── link-loader.js
│ │ │ │ ├── report.js
│ │ │ │ └── request.js
│ │ └── utils
│ │ │ ├── constant.js
│ │ │ ├── init-url.js
│ │ │ ├── link-filter.js
│ │ │ ├── nav-loader.js
│ │ │ └── tools.js
│ ├── data
│ │ ├── concept.md
│ │ ├── concept_conversion.md
│ │ ├── concept_retain.md
│ │ ├── concept_source.md
│ │ ├── concept_survey.md
│ │ ├── concept_useanalysis.md
│ │ ├── concept_useranalysis.md
│ │ ├── custom.md
│ │ ├── host_scene.md
│ │ ├── performance-point.md
│ │ ├── scene.md
│ │ ├── target_active.md
│ │ ├── target_data.md
│ │ ├── target_habit.md
│ │ ├── target_page.md
│ │ ├── target_retain.md
│ │ ├── target_user.md
│ │ └── visualization.md
│ ├── design
│ │ ├── component
│ │ │ ├── actionsheet.md
│ │ │ ├── bottomtab.md
│ │ │ ├── button.md
│ │ │ ├── dialog.md
│ │ │ ├── empty_state.md
│ │ │ ├── guide_add.md
│ │ │ ├── input.md
│ │ │ ├── list.md
│ │ │ ├── selection.md
│ │ │ ├── showModal.md
│ │ │ ├── toast.md
│ │ │ ├── topnav.md
│ │ │ └── toptab.md
│ │ ├── foundation
│ │ │ ├── detailPages.md
│ │ │ ├── layout.md
│ │ │ ├── logo.md
│ │ │ ├── pic.md
│ │ │ ├── typography.md
│ │ │ └── writing.md
│ │ ├── overview
│ │ │ └── introduction.md
│ │ ├── principle
│ │ │ ├── easytouse.md
│ │ │ ├── hierarchical.md
│ │ │ └── innovation.md
│ │ ├── resource
│ │ │ ├── animationVideo.md
│ │ │ ├── checklist.md
│ │ │ ├── lottie.md
│ │ │ └── uikit.md
│ │ ├── story
│ │ │ ├── arzoo.md
│ │ │ └── light_up.md
│ │ └── whitebook
│ │ │ ├── how_to_guide_add.md
│ │ │ ├── how_to_improve_browsing_experience.md
│ │ │ └── how_to_login.md
│ ├── develop
│ │ ├── api
│ │ │ ├── ai
│ │ │ │ ├── ai.md
│ │ │ │ ├── audio.md
│ │ │ │ ├── audit.md
│ │ │ │ ├── classify_swan-ai-advancedGeneralIdentify.md
│ │ │ │ ├── classify_swan-ai-animalClassify.md
│ │ │ │ ├── classify_swan-ai-carClassify.md
│ │ │ │ ├── classify_swan-ai-dishClassify.md
│ │ │ │ ├── classify_swan-ai-logoClassify.md
│ │ │ │ ├── classify_swan-ai-objectDetectIdentify.md
│ │ │ │ ├── classify_swan-ai-plantClassify.md
│ │ │ │ ├── face_swan-ai-faceDetect.md
│ │ │ │ ├── face_swan-ai-faceLivenessSessioncode.md
│ │ │ │ ├── face_swan-ai-faceMatch.md
│ │ │ │ ├── face_swan-ai-facePersonIdmatch.md
│ │ │ │ ├── face_swan-ai-facePersonVerify.md
│ │ │ │ ├── face_swan-ai-faceSearch.md
│ │ │ │ ├── ocr_swan-ai-ocrBankCard.md
│ │ │ │ ├── ocr_swan-ai-ocrDrivingLicense.md
│ │ │ │ ├── ocr_swan-ai-ocrIdCard.md
│ │ │ │ ├── ocr_swan-ai-ocrVehicleLicense.md
│ │ │ │ ├── text_swan-ai-textReview.md
│ │ │ │ ├── voice_VoiceRecognizer-cancel.md
│ │ │ │ ├── voice_VoiceRecognizer-onError.md
│ │ │ │ ├── voice_VoiceRecognizer-onFinish.md
│ │ │ │ ├── voice_VoiceRecognizer-onRecognize.md
│ │ │ │ ├── voice_VoiceRecognizer-onStart.md
│ │ │ │ ├── voice_VoiceRecognizer-start.md
│ │ │ │ ├── voice_VoiceRecognizer-stop.md
│ │ │ │ ├── voice_swan-VoiceRecognizer.md
│ │ │ │ ├── voice_swan-ai-getVoiceRecognizer.md
│ │ │ │ └── word.md
│ │ │ ├── apilist.md
│ │ │ ├── base_app_event
│ │ │ │ ├── swan-offAppHide.md
│ │ │ │ ├── swan-offAppShow.md
│ │ │ │ ├── swan-offError.md
│ │ │ │ ├── swan-offPageNotFound.md
│ │ │ │ ├── swan-onAppHide.md
│ │ │ │ ├── swan-onAppShow.md
│ │ │ │ ├── swan-onError.md
│ │ │ │ └── swan-onPageNotFound.md
│ │ │ ├── canvas_color.md
│ │ │ ├── cardticket.md
│ │ │ ├── cardticket_new.md
│ │ │ ├── device_sys
│ │ │ │ ├── hostlist.md
│ │ │ │ ├── onmemory.md
│ │ │ │ ├── swan-addEventOnCalendar.md
│ │ │ │ ├── swan-addPhoneContact.md
│ │ │ │ ├── swan-canIUse.md
│ │ │ │ ├── swan-deleteEventOnCalendar.md
│ │ │ │ ├── swan-getBatteryInfo.md
│ │ │ │ ├── swan-getBatteryInfoSync.md
│ │ │ │ ├── swan-getClipboardData.md
│ │ │ │ ├── swan-getEnvInfoSync.md
│ │ │ │ ├── swan-getNetworkType.md
│ │ │ │ ├── swan-getScreenBrightness.md
│ │ │ │ ├── swan-getSystemInfo.md
│ │ │ │ ├── swan-getSystemInfoSync.md
│ │ │ │ ├── swan-makePhoneCall.md
│ │ │ │ ├── swan-onAccelerometerChange.md
│ │ │ │ ├── swan-onCompassChange.md
│ │ │ │ ├── swan-onDeviceMotionChange.md
│ │ │ │ ├── swan-onNetworkStatusChange.md
│ │ │ │ ├── swan-onUserCaptureScreen.md
│ │ │ │ ├── swan-scanCode.md
│ │ │ │ ├── swan-setClipboardData.md
│ │ │ │ ├── swan-setKeepScreenOn.md
│ │ │ │ ├── swan-setScreenBrightness.md
│ │ │ │ ├── swan-startAccelerometer.md
│ │ │ │ ├── swan-startCompass.md
│ │ │ │ ├── swan-startDeviceMotionListening.md
│ │ │ │ ├── swan-stopAccelerometer.md
│ │ │ │ ├── swan-stopCompass.md
│ │ │ │ ├── swan-stopDeviceMotionListening.md
│ │ │ │ ├── swan-vibrateLong.md
│ │ │ │ └── swan-vibrateShort.md
│ │ │ ├── errorcode.md
│ │ │ ├── file
│ │ │ │ ├── FileSystemManager-access.md
│ │ │ │ ├── FileSystemManager-accessSync.md
│ │ │ │ ├── FileSystemManager-appendFile.md
│ │ │ │ ├── FileSystemManager-appendFileSync.md
│ │ │ │ ├── FileSystemManager-copyFile.md
│ │ │ │ ├── FileSystemManager-copyFileSync.md
│ │ │ │ ├── FileSystemManager-getFileInfo.md
│ │ │ │ ├── FileSystemManager-getSavedFileList.md
│ │ │ │ ├── FileSystemManager-mkdir.md
│ │ │ │ ├── FileSystemManager-mkdirSync.md
│ │ │ │ ├── FileSystemManager-readFile.md
│ │ │ │ ├── FileSystemManager-readFileSync.md
│ │ │ │ ├── FileSystemManager-readdir.md
│ │ │ │ ├── FileSystemManager-readdirSync.md
│ │ │ │ ├── FileSystemManager-removeSavedFile.md
│ │ │ │ ├── FileSystemManager-rename.md
│ │ │ │ ├── FileSystemManager-renameSync.md
│ │ │ │ ├── FileSystemManager-rmdir.md
│ │ │ │ ├── FileSystemManager-rmdirSync.md
│ │ │ │ ├── FileSystemManager-saveFile.md
│ │ │ │ ├── FileSystemManager-saveFileSync.md
│ │ │ │ ├── FileSystemManager-stat.md
│ │ │ │ ├── FileSystemManager-statSync.md
│ │ │ │ ├── FileSystemManager-unlink.md
│ │ │ │ ├── FileSystemManager-unlinkSync.md
│ │ │ │ ├── FileSystemManager-unzip.md
│ │ │ │ ├── FileSystemManager-writeFile.md
│ │ │ │ ├── FileSystemManager-writeFileSync.md
│ │ │ │ ├── FileSystemManager.md
│ │ │ │ ├── open.md
│ │ │ │ ├── remove.md
│ │ │ │ ├── save_swan-getFileInfo.md
│ │ │ │ ├── save_swan-getSavedFileInfo.md
│ │ │ │ ├── save_swan-getSavedFileList.md
│ │ │ │ ├── save_swan-saveFile.md
│ │ │ │ └── swan-getFileSystemManager.md
│ │ │ ├── getextconfig
│ │ │ │ ├── swan-getExtConfig.md
│ │ │ │ └── swan-getExtConfigSync.md
│ │ │ ├── location
│ │ │ │ ├── MapContext-getCenterLocation.md
│ │ │ │ ├── MapContext-getRegion.md
│ │ │ │ ├── MapContext-getScale.md
│ │ │ │ ├── MapContext-includePoints.md
│ │ │ │ ├── MapContext-moveToLocation.md
│ │ │ │ ├── MapContext-translateMarker.md
│ │ │ │ ├── MapContext.md
│ │ │ │ ├── swan-chooseLocation.md
│ │ │ │ ├── swan-createMapContext.md
│ │ │ │ ├── swan-getLocation.md
│ │ │ │ ├── swan-offLocationChange.md
│ │ │ │ ├── swan-onLocationChange.md
│ │ │ │ ├── swan-openLocation.md
│ │ │ │ ├── swan-startLocationUpdate.md
│ │ │ │ └── swan-stopLocationUpdate.md
│ │ │ ├── media
│ │ │ │ ├── animationvideo_AnimationVideo-pause.md
│ │ │ │ ├── animationvideo_AnimationVideo-play.md
│ │ │ │ ├── animationvideo_AnimationVideo-seek.md
│ │ │ │ ├── animationvideo_AnimationVideo.md
│ │ │ │ ├── animationvideo_swan-createAnimationVideo.md
│ │ │ │ ├── arcameracontext_ARCameraContext-reset.md
│ │ │ │ ├── arcameracontext_ARCameraContext-startRecord.md
│ │ │ │ ├── arcameracontext_ARCameraContext-stopRecord.md
│ │ │ │ ├── arcameracontext_ARCameraContext-takePhoto.md
│ │ │ │ ├── arcameracontext_ARCameraContext.md
│ │ │ │ ├── arcameracontext_swan-createARCameraContext.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onCanplay.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onEnded.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onError.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onNext.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onPause.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onPlay.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onPrev.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onSeeked.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onSeeking.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onStop.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onTimeUpdate.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-onWaiting.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-pause.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-play.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-seek.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager-stop.md
│ │ │ │ ├── backgroundaudiomanager_BackgroundAudioManager.md
│ │ │ │ ├── backgroundaudiomanager_swan-getBackgroundAudioManager.md
│ │ │ │ ├── cameracontext_CameraContext-startRecord.md
│ │ │ │ ├── cameracontext_CameraContext-stopRecord.md
│ │ │ │ ├── cameracontext_CameraContext-takePhoto.md
│ │ │ │ ├── cameracontext_CameraContext.md
│ │ │ │ ├── cameracontext_swan-createCameraContext.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-destroy.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offCanplay.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offEnded.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offError.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offPause.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offPlay.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offSeeked.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offSeeking.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offStop.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offTimeUpdate.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-offWaiting.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onCanplay.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onEnded.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onError.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onPause.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onPlay.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onSeeked.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onSeeking.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onStop.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onTimeUpdate.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-onWaiting.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-pause.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-play.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-seek.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext-stop.md
│ │ │ │ ├── createinneraudiocontext_InnerAudioContext.md
│ │ │ │ ├── createinneraudiocontext_swan-createInnerAudioContext.md
│ │ │ │ ├── createinneraudiocontext_swan-setInnerAudioOption.md
│ │ │ │ ├── image_swan-chooseAlbum.md
│ │ │ │ ├── image_swan-chooseImage.md
│ │ │ │ ├── image_swan-compressImage.md
│ │ │ │ ├── image_swan-getImageInfo.md
│ │ │ │ ├── image_swan-previewImage.md
│ │ │ │ ├── image_swan-saveImageToPhotosAlbum.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-exitFullScreen.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-mute.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-pause.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-play.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-requestFullScreen.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-resume.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext-stop.md
│ │ │ │ ├── liveplayercontext_LivePlayerContext.md
│ │ │ │ ├── liveplayercontext_swan-createLivePlayerContext.md
│ │ │ │ ├── menu_info.md
│ │ │ │ ├── recorder_RecorderManager-onError.md
│ │ │ │ ├── recorder_RecorderManager-onInterruptionBegin.md
│ │ │ │ ├── recorder_RecorderManager-onInterruptionEnd.md
│ │ │ │ ├── recorder_RecorderManager-onPause.md
│ │ │ │ ├── recorder_RecorderManager-onResume.md
│ │ │ │ ├── recorder_RecorderManager-onStart.md
│ │ │ │ ├── recorder_RecorderManager-onStop.md
│ │ │ │ ├── recorder_RecorderManager-pause.md
│ │ │ │ ├── recorder_RecorderManager-resume.md
│ │ │ │ ├── recorder_RecorderManager-start.md
│ │ │ │ ├── recorder_RecorderManager-stop.md
│ │ │ │ ├── recorder_RecorderManager.md
│ │ │ │ ├── recorder_swan-getAvailableAudioSources.md
│ │ │ │ ├── recorder_swan-getRecorderManager.md
│ │ │ │ ├── video_swan-chooseVideo.md
│ │ │ │ ├── video_swan-saveVideoToPhotosAlbum.md
│ │ │ │ ├── videocontext_VideoContext-exitFullScreen.md
│ │ │ │ ├── videocontext_VideoContext-hideStatusBar.md
│ │ │ │ ├── videocontext_VideoContext-pause.md
│ │ │ │ ├── videocontext_VideoContext-play.md
│ │ │ │ ├── videocontext_VideoContext-playbackRate.md
│ │ │ │ ├── videocontext_VideoContext-requestFullScreen.md
│ │ │ │ ├── videocontext_VideoContext-seek.md
│ │ │ │ ├── videocontext_VideoContext-sendDanmu.md
│ │ │ │ ├── videocontext_VideoContext-showStatusBar.md
│ │ │ │ ├── videocontext_VideoContext-stop.md
│ │ │ │ ├── videocontext_VideoContext.md
│ │ │ │ └── videocontext_swan-createVideoContext.md
│ │ │ ├── net
│ │ │ │ ├── downloadFile.md
│ │ │ │ ├── downloadTask-abort.md
│ │ │ │ ├── downloadTask-onProgressUpdate.md
│ │ │ │ ├── downloadTask.md
│ │ │ │ ├── net_rule.md
│ │ │ │ ├── request.md
│ │ │ │ ├── requestTask-abort.md
│ │ │ │ ├── requestTask.md
│ │ │ │ ├── uploadTask-abort.md
│ │ │ │ ├── uploadTask-onProgressUpdate.md
│ │ │ │ ├── uploadTask.md
│ │ │ │ ├── uploadfile.md
│ │ │ │ ├── websocket.md
│ │ │ │ ├── websocket_SocketTask-close.md
│ │ │ │ ├── websocket_SocketTask-onClose.md
│ │ │ │ ├── websocket_SocketTask-onError.md
│ │ │ │ ├── websocket_SocketTask-onMessage.md
│ │ │ │ ├── websocket_SocketTask-onOpen.md
│ │ │ │ ├── websocket_SocketTask-send.md
│ │ │ │ ├── websocket_SocketTask.md
│ │ │ │ ├── websocket_swan-closeSocket.md
│ │ │ │ ├── websocket_swan-onSocketClose.md
│ │ │ │ ├── websocket_swan-onSocketError.md
│ │ │ │ ├── websocket_swan-onSocketMessage.md
│ │ │ │ ├── websocket_swan-onSocketOpen.md
│ │ │ │ └── websocket_swan-sendSocketMessage.md
│ │ │ ├── open
│ │ │ │ ├── UpdateManager-applyUpdate.md
│ │ │ │ ├── UpdateManager-onCheckForUpdate.md
│ │ │ │ ├── UpdateManager-onUpdateFailed.md
│ │ │ │ ├── UpdateManager-onUpdateReady.md
│ │ │ │ ├── UpdateManager.md
│ │ │ │ ├── authorize_list.md
│ │ │ │ ├── authorize_set.md
│ │ │ │ ├── authorize_swan-authorize.md
│ │ │ │ ├── chooseaddress_swan-chooseAddress.md
│ │ │ │ ├── community_swan-closeCommunityEditor.md
│ │ │ │ ├── community_swan-openCommunityEditor.md
│ │ │ │ ├── log.md
│ │ │ │ ├── log_Session-Key.md
│ │ │ │ ├── log_getunionid.md
│ │ │ │ ├── log_swan-checkSession.md
│ │ │ │ ├── log_swan-isLoginSync.md
│ │ │ │ ├── log_swan-login.md
│ │ │ │ ├── log_userdata.md
│ │ │ │ ├── payment_swan-requestPolymerPayment.md
│ │ │ │ ├── replyeditor_swan-closeReplyEditor.md
│ │ │ │ ├── replyeditor_swan-openReplyEditor.md
│ │ │ │ ├── setting_swan-getSetting.md
│ │ │ │ ├── setting_swan-openSetting.md
│ │ │ │ ├── share_onShareAppMessage.md
│ │ │ │ ├── share_swan-openShare.md
│ │ │ │ ├── share_swan-shareFile.md
│ │ │ │ ├── share_web-view.md
│ │ │ │ ├── swan-chooseInvoiceTitle.md
│ │ │ │ ├── swan-getSystemRiskInfo.md
│ │ │ │ ├── swan-getUpdateManager.md
│ │ │ │ ├── swan-loadSubPackage.md
│ │ │ │ ├── swan-navigateBackSmartProgram.md
│ │ │ │ ├── swan-navigateToSmartProgram.md
│ │ │ │ ├── swan-reportAnalytics.md
│ │ │ │ ├── swan-setDocumentTitle.md
│ │ │ │ ├── swan-setEnableDebug.md
│ │ │ │ ├── swan-setMetaDescription.md
│ │ │ │ ├── swan-setMetaKeywords.md
│ │ │ │ ├── swan-setPageInfo.md
│ │ │ │ ├── swan-subscribeService.md
│ │ │ │ ├── timer_clearInterval.md
│ │ │ │ ├── timer_clearTimeout.md
│ │ │ │ ├── timer_setInterval.md
│ │ │ │ ├── timer_setTimeout.md
│ │ │ │ ├── userinfo_signature.md
│ │ │ │ ├── userinfo_swan-getSwanId.md
│ │ │ │ ├── userinfo_swan-getUserInfo.md
│ │ │ │ └── userinfo_swanid.md
│ │ │ ├── order.md
│ │ │ ├── show
│ │ │ │ ├── background_swan-setBackgroundColor.md
│ │ │ │ ├── background_swan-setBackgroundTextStyle.md
│ │ │ │ ├── canvas.md
│ │ │ │ ├── canvas_CanvasContext-addColorStop.md
│ │ │ │ ├── canvas_CanvasContext-arc.md
│ │ │ │ ├── canvas_CanvasContext-beginPath.md
│ │ │ │ ├── canvas_CanvasContext-bezierCurveTo.md
│ │ │ │ ├── canvas_CanvasContext-clearRect.md
│ │ │ │ ├── canvas_CanvasContext-clip.md
│ │ │ │ ├── canvas_CanvasContext-closePath.md
│ │ │ │ ├── canvas_CanvasContext-createCircularGradient.md
│ │ │ │ ├── canvas_CanvasContext-createLinearGradient.md
│ │ │ │ ├── canvas_CanvasContext-draw.md
│ │ │ │ ├── canvas_CanvasContext-drawImage.md
│ │ │ │ ├── canvas_CanvasContext-fill.md
│ │ │ │ ├── canvas_CanvasContext-fillRect.md
│ │ │ │ ├── canvas_CanvasContext-fillText.md
│ │ │ │ ├── canvas_CanvasContext-font.md
│ │ │ │ ├── canvas_CanvasContext-lineTo.md
│ │ │ │ ├── canvas_CanvasContext-measureText.md
│ │ │ │ ├── canvas_CanvasContext-moveTo.md
│ │ │ │ ├── canvas_CanvasContext-quadraticCurveTo.md
│ │ │ │ ├── canvas_CanvasContext-rect.md
│ │ │ │ ├── canvas_CanvasContext-restore.md
│ │ │ │ ├── canvas_CanvasContext-rotate.md
│ │ │ │ ├── canvas_CanvasContext-save.md
│ │ │ │ ├── canvas_CanvasContext-scale.md
│ │ │ │ ├── canvas_CanvasContext-setFillStyle.md
│ │ │ │ ├── canvas_CanvasContext-setFontSize.md
│ │ │ │ ├── canvas_CanvasContext-setGlobalAlpha.md
│ │ │ │ ├── canvas_CanvasContext-setLineCap.md
│ │ │ │ ├── canvas_CanvasContext-setLineDash.md
│ │ │ │ ├── canvas_CanvasContext-setLineDashOffset.md
│ │ │ │ ├── canvas_CanvasContext-setLineJoin.md
│ │ │ │ ├── canvas_CanvasContext-setLineWidth.md
│ │ │ │ ├── canvas_CanvasContext-setMiterLimit.md
│ │ │ │ ├── canvas_CanvasContext-setShadow.md
│ │ │ │ ├── canvas_CanvasContext-setStrokeStyle.md
│ │ │ │ ├── canvas_CanvasContext-setTextAlign.md
│ │ │ │ ├── canvas_CanvasContext-setTextBaseline.md
│ │ │ │ ├── canvas_CanvasContext-setTransform.md
│ │ │ │ ├── canvas_CanvasContext-stroke.md
│ │ │ │ ├── canvas_CanvasContext-strokeRect.md
│ │ │ │ ├── canvas_CanvasContext-strokeText.md
│ │ │ │ ├── canvas_CanvasContext-transform.md
│ │ │ │ ├── canvas_CanvasContext-translate.md
│ │ │ │ ├── canvas_CanvasContext.md
│ │ │ │ ├── canvas_CanvasGradient-addColorStop.md
│ │ │ │ ├── canvas_CanvasGradient.md
│ │ │ │ ├── canvas_swan-canvasGetImageData.md
│ │ │ │ ├── canvas_swan-canvasPutImageData.md
│ │ │ │ ├── canvas_swan-canvasToTempFilePath.md
│ │ │ │ ├── canvas_swan-createCanvasContext.md
│ │ │ │ ├── createanimation_Animation-matrix.md
│ │ │ │ ├── createanimation_Animation-matrix3d.md
│ │ │ │ ├── createanimation_Animation-rotate.md
│ │ │ │ ├── createanimation_Animation-rotate3d.md
│ │ │ │ ├── createanimation_Animation-rotateX.md
│ │ │ │ ├── createanimation_Animation-rotateY.md
│ │ │ │ ├── createanimation_Animation-rotateZ.md
│ │ │ │ ├── createanimation_Animation-scale.md
│ │ │ │ ├── createanimation_Animation-scale3d.md
│ │ │ │ ├── createanimation_Animation-scaleX.md
│ │ │ │ ├── createanimation_Animation-scaleY.md
│ │ │ │ ├── createanimation_Animation-scaleZ.md
│ │ │ │ ├── createanimation_Animation-skew.md
│ │ │ │ ├── createanimation_Animation-skewX.md
│ │ │ │ ├── createanimation_Animation-skewY.md
│ │ │ │ ├── createanimation_Animation-translate.md
│ │ │ │ ├── createanimation_Animation-translate3d.md
│ │ │ │ ├── createanimation_Animation-translateX.md
│ │ │ │ ├── createanimation_Animation-translateY.md
│ │ │ │ ├── createanimation_Animation-translateZ.md
│ │ │ │ ├── createanimation_Animation.md
│ │ │ │ ├── createanimation_Animationn-scaleZ.md
│ │ │ │ ├── createanimation_swan-createAnimation.md
│ │ │ │ ├── custom_component.md
│ │ │ │ ├── menu_info.md
│ │ │ │ ├── nacomponent.md
│ │ │ │ ├── navigationbar_swan-hideNavigationBarLoading.md
│ │ │ │ ├── navigationbar_swan-setNavigationBarColor.md
│ │ │ │ ├── navigationbar_swan-setNavigationBarTitle.md
│ │ │ │ ├── navigationbar_swan-showNavigationBarLoading.md
│ │ │ │ ├── pagescrollto_swan-pageScrollTo.md
│ │ │ │ ├── pull_onPullDownRefresh.md
│ │ │ │ ├── pull_swan-startPullDownRefresh.md
│ │ │ │ ├── pull_swan-stopPullDownRefresh.md
│ │ │ │ ├── query_IntersectionObserver-disconnect.md
│ │ │ │ ├── query_IntersectionObserver-observe.md
│ │ │ │ ├── query_IntersectionObserver-relativeTo.md
│ │ │ │ ├── query_IntersectionObserver-relativeToViewport.md
│ │ │ │ ├── query_IntersectionObserver.md
│ │ │ │ ├── query_NodesRef-boundingClientRect.md
│ │ │ │ ├── query_NodesRef-fields.md
│ │ │ │ ├── query_NodesRef-scrollOffset.md
│ │ │ │ ├── query_NodesRef.md
│ │ │ │ ├── query_SelectorQuery-exec.md
│ │ │ │ ├── query_SelectorQuery-in.md
│ │ │ │ ├── query_SelectorQuery-select.md
│ │ │ │ ├── query_SelectorQuery-selectAll.md
│ │ │ │ ├── query_SelectorQuery-selectViewport.md
│ │ │ │ ├── query_SelectorQuery.md
│ │ │ │ ├── query_swan-createIntersectionObserver.md
│ │ │ │ ├── query_swan-createSelectorQuery.md
│ │ │ │ ├── tab_swan-navigateBack.md
│ │ │ │ ├── tab_swan-navigateTo.md
│ │ │ │ ├── tab_swan-reLaunch.md
│ │ │ │ ├── tab_swan-redirectTo.md
│ │ │ │ ├── tab_swan-switchTab.md
│ │ │ │ ├── tabbar_swan-hideTabBar.md
│ │ │ │ ├── tabbar_swan-hideTabBarRedDot.md
│ │ │ │ ├── tabbar_swan-removeTabBarBadge.md
│ │ │ │ ├── tabbar_swan-setTabBarBadge.md
│ │ │ │ ├── tabbar_swan-setTabBarItem.md
│ │ │ │ ├── tabbar_swan-setTabBarStyle.md
│ │ │ │ ├── tabbar_swan-showTabBar.md
│ │ │ │ ├── tabbar_swan-showTabBarRedDot.md
│ │ │ │ ├── toast_swan-hideLoading.md
│ │ │ │ ├── toast_swan-hideToast.md
│ │ │ │ ├── toast_swan-showActionSheet.md
│ │ │ │ ├── toast_swan-showLoading.md
│ │ │ │ ├── toast_swan-showModal.md
│ │ │ │ └── toast_swan-showToast.md
│ │ │ ├── storage
│ │ │ │ ├── remove_swan-clearStorage.md
│ │ │ │ ├── remove_swan-clearStorageSync.md
│ │ │ │ ├── remove_swan-removeStorage.md
│ │ │ │ ├── remove_swan-removeStorageSync.md
│ │ │ │ ├── save_process.md
│ │ │ │ ├── save_swan-getStorage.md
│ │ │ │ ├── save_swan-getStorageInfo.md
│ │ │ │ ├── save_swan-getStorageInfoSync.md
│ │ │ │ ├── save_swan-getStorageSync.md
│ │ │ │ ├── save_swan-setStorage.md
│ │ │ │ └── save_swan-setStorageSync.md
│ │ │ └── url_query
│ │ │ │ ├── onURLQueryChange.md
│ │ │ │ ├── swan-getURLQuery.md
│ │ │ │ └── swan-setURLQuery.md
│ │ ├── appendix
│ │ │ ├── apifaq.md
│ │ │ ├── canvas_color.md
│ │ │ ├── confaq.md
│ │ │ ├── error.md
│ │ │ ├── framworkfaq.md
│ │ │ ├── frequently.md
│ │ │ ├── toolfaq.md
│ │ │ └── webfaq.md
│ │ ├── cloud
│ │ │ ├── cloud_database
│ │ │ │ ├── collection.md
│ │ │ │ ├── collection_add.md
│ │ │ │ ├── collection_count.md
│ │ │ │ ├── collection_doc.md
│ │ │ │ ├── collection_field.md
│ │ │ │ ├── collection_get.md
│ │ │ │ ├── collection_limit.md
│ │ │ │ ├── collection_orderBy.md
│ │ │ │ ├── collection_skip.md
│ │ │ │ ├── collection_where.md
│ │ │ │ ├── command.md
│ │ │ │ ├── command_and.md
│ │ │ │ ├── command_eq.md
│ │ │ │ ├── command_gt.md
│ │ │ │ ├── command_gte.md
│ │ │ │ ├── command_in.md
│ │ │ │ ├── command_inc.md
│ │ │ │ ├── command_lt.md
│ │ │ │ ├── command_lte.md
│ │ │ │ ├── command_mul.md
│ │ │ │ ├── command_neq.md
│ │ │ │ ├── command_nin.md
│ │ │ │ ├── command_or.md
│ │ │ │ ├── command_pop.md
│ │ │ │ ├── command_push.md
│ │ │ │ ├── command_remove.md
│ │ │ │ ├── command_set.md
│ │ │ │ ├── command_shift.md
│ │ │ │ ├── command_unshift.md
│ │ │ │ ├── database.md
│ │ │ │ ├── doc.md
│ │ │ │ ├── doc_get.md
│ │ │ │ ├── doc_set.md
│ │ │ │ └── doc_update.md
│ │ │ ├── cloud_deleteFile.md
│ │ │ ├── cloud_downloadFile.md
│ │ │ ├── cloud_essentials.md
│ │ │ ├── cloud_essentials_function.md
│ │ │ ├── cloud_essentials_storage.md
│ │ │ ├── cloud_essentials_user.md
│ │ │ ├── cloud_functions.md
│ │ │ ├── cloud_info.md
│ │ │ ├── cloud_init.md
│ │ │ ├── cloud_start.md
│ │ │ ├── cloud_uploadFile.md
│ │ │ ├── console.md
│ │ │ ├── console_data.md
│ │ │ ├── console_function.md
│ │ │ ├── console_storage.md
│ │ │ ├── guide
│ │ │ │ ├── editor.md
│ │ │ │ ├── guide.md
│ │ │ │ ├── guide_databasefaq.md
│ │ │ │ ├── guide_dev.md
│ │ │ │ ├── guide_function.md
│ │ │ │ └── guide_user.md
│ │ │ └── server_sdk
│ │ │ │ ├── cloud-callFunction.md
│ │ │ │ ├── collection.md
│ │ │ │ ├── database.md
│ │ │ │ ├── document.md
│ │ │ │ ├── getSwanContext.md
│ │ │ │ ├── init.md
│ │ │ │ └── storage.md
│ │ ├── component
│ │ │ ├── ad.md
│ │ │ ├── animation-video.md
│ │ │ ├── animation-view-Lottie.md
│ │ │ ├── base_animation-view-Lottie.md
│ │ │ ├── base_icon.md
│ │ │ ├── base_progress.md
│ │ │ ├── base_rich-text.md
│ │ │ ├── base_text.md
│ │ │ ├── canvas.md
│ │ │ ├── component.md
│ │ │ ├── formlist_button.md
│ │ │ ├── formlist_checkbox-group.md
│ │ │ ├── formlist_checkbox.md
│ │ │ ├── formlist_form.md
│ │ │ ├── formlist_input.md
│ │ │ ├── formlist_label.md
│ │ │ ├── formlist_picker-view-column.md
│ │ │ ├── formlist_picker-view.md
│ │ │ ├── formlist_picker.md
│ │ │ ├── formlist_radio-group.md
│ │ │ ├── formlist_radio.md
│ │ │ ├── formlist_slider.md
│ │ │ ├── formlist_switch.md
│ │ │ ├── formlist_textarea.md
│ │ │ ├── map.md
│ │ │ ├── media_ar-camera.md
│ │ │ ├── media_audio.md
│ │ │ ├── media_camera.md
│ │ │ ├── media_image.md
│ │ │ ├── media_live-player.md
│ │ │ ├── media_video.md
│ │ │ ├── native.md
│ │ │ ├── nav.md
│ │ │ ├── open.md
│ │ │ ├── open_web-view.md
│ │ │ ├── tab-item.md
│ │ │ ├── tabs.md
│ │ │ ├── view_cover-image.md
│ │ │ ├── view_cover-view.md
│ │ │ ├── view_movable-area.md
│ │ │ ├── view_movable-view.md
│ │ │ ├── view_scroll-view.md
│ │ │ ├── view_swiper-item.md
│ │ │ ├── view_swiper.md
│ │ │ └── view_view.md
│ │ ├── devtools
│ │ │ ├── audits.md
│ │ │ ├── audits_score.md
│ │ │ ├── auto
│ │ │ │ ├── automator
│ │ │ │ │ ├── connect.md
│ │ │ │ │ └── launch.md
│ │ │ │ ├── demo.md
│ │ │ │ ├── element
│ │ │ │ │ ├── $$.md
│ │ │ │ │ ├── $.md
│ │ │ │ │ ├── attribute.md
│ │ │ │ │ ├── innerHTML.md
│ │ │ │ │ ├── offset.md
│ │ │ │ │ ├── outerHTML.md
│ │ │ │ │ ├── outerSwan.md
│ │ │ │ │ ├── size.md
│ │ │ │ │ ├── style.md
│ │ │ │ │ ├── swan.md
│ │ │ │ │ ├── tagName.md
│ │ │ │ │ ├── tap.md
│ │ │ │ │ ├── text.md
│ │ │ │ │ └── value.md
│ │ │ │ ├── page
│ │ │ │ │ ├── $$.md
│ │ │ │ │ ├── $.md
│ │ │ │ │ ├── data.md
│ │ │ │ │ ├── path.md
│ │ │ │ │ ├── query.md
│ │ │ │ │ ├── size.md
│ │ │ │ │ └── waitFor.md
│ │ │ │ ├── quick-start.md
│ │ │ │ ├── remote.md
│ │ │ │ └── smartprogram
│ │ │ │ │ ├── callSwanMethod.md
│ │ │ │ │ ├── close.md
│ │ │ │ │ ├── currentPage.md
│ │ │ │ │ ├── disconnect.md
│ │ │ │ │ ├── login.md
│ │ │ │ │ ├── navigateBack.md
│ │ │ │ │ ├── navigateTo.md
│ │ │ │ │ ├── pageStack.md
│ │ │ │ │ ├── reLaunch.md
│ │ │ │ │ ├── redirectTo.md
│ │ │ │ │ ├── remote.md
│ │ │ │ │ ├── switchTab.md
│ │ │ │ │ └── systemInfo.md
│ │ │ ├── cloudtext.md
│ │ │ ├── code.md
│ │ │ ├── commandtool.md
│ │ │ ├── complation.md
│ │ │ ├── components_panel.md
│ │ │ ├── diff.md
│ │ │ ├── editor_debug.md
│ │ │ ├── editor_file.md
│ │ │ ├── editor_git.md
│ │ │ ├── editor_rpx.md
│ │ │ ├── editor_set.md
│ │ │ ├── history.md
│ │ │ ├── page_debug.md
│ │ │ ├── page_editor.md
│ │ │ ├── page_menu.md
│ │ │ ├── page_monitor.md
│ │ │ ├── page_start.md
│ │ │ ├── page_tool.md
│ │ │ ├── pre_testtool.md
│ │ │ ├── question.md
│ │ │ ├── remotedebugging.md
│ │ │ ├── remoterelease.md
│ │ │ ├── set_edit.md
│ │ │ ├── set_outlook.md
│ │ │ ├── set_proxy.md
│ │ │ ├── set_shortcutkey.md
│ │ │ ├── smartappdebug_function_change.md
│ │ │ ├── smartappdebug_function_compilation.md
│ │ │ ├── smartappdebug_function_monitor.md
│ │ │ ├── smartappdebug_function_pre.md
│ │ │ ├── smartappdebug_pre.md
│ │ │ ├── smartappdebug_tool_App-data-panel.md
│ │ │ ├── smartappdebug_tool_Console-panel.md
│ │ │ ├── smartappdebug_tool_Network-panel.md
│ │ │ ├── smartappdebug_tool_Security-panel.md
│ │ │ ├── smartappdebug_tool_Sensors-panel.md
│ │ │ ├── smartappdebug_tool_Sources-panel.md
│ │ │ ├── smartappdebug_tool_Storage-panel.md
│ │ │ ├── smartappdebug_tool_Swan-audits.md
│ │ │ ├── smartappdebug_tool_Swan-panel.md
│ │ │ ├── source-manager.md
│ │ │ ├── uplog_compile.md
│ │ │ ├── uplog_tool_beta.md
│ │ │ ├── uplog_tool_normal.md
│ │ │ └── uplog_tool_rc.md
│ │ ├── extended
│ │ │ ├── component-content
│ │ │ │ ├── commentpublish.md
│ │ │ │ ├── concern.md
│ │ │ │ ├── follow.md
│ │ │ │ └── like.md
│ │ │ ├── component
│ │ │ │ ├── comment-publish.md
│ │ │ │ └── publish.md
│ │ │ ├── extendedlist.md
│ │ │ ├── lib
│ │ │ │ ├── bdparse.md
│ │ │ │ ├── smt-md5.md
│ │ │ │ ├── smt-mobx.md
│ │ │ │ ├── smt-observer.md
│ │ │ │ ├── smt-promisify.md
│ │ │ │ └── smt-swanx.md
│ │ │ ├── template
│ │ │ │ ├── content-detail.md
│ │ │ │ ├── smt-detail-pages.md
│ │ │ │ ├── smt-feed-page.md
│ │ │ │ └── smt-status-page.md
│ │ │ └── ui_component
│ │ │ │ ├── info.md
│ │ │ │ ├── smt-feed-item.md
│ │ │ │ ├── smt-feed.md
│ │ │ │ ├── smt-icon.md
│ │ │ │ ├── smt-navigation.md
│ │ │ │ ├── smt-page-status.md
│ │ │ │ ├── smt-refresh.md
│ │ │ │ └── smt-spin.md
│ │ ├── extension
│ │ │ └── template
│ │ │ │ └── content-detail.md
│ │ ├── framework
│ │ │ ├── app_service.md
│ │ │ ├── app_service_aop.md
│ │ │ ├── app_service_aopapp-after.md
│ │ │ ├── app_service_aoppage-after.md
│ │ │ ├── app_service_aopswan-after.md
│ │ │ ├── app_service_page.md
│ │ │ ├── app_service_page_setData.md
│ │ │ ├── app_service_pagecomponent.md
│ │ │ ├── app_service_pagedata.md
│ │ │ ├── app_service_pagefunction.md
│ │ │ ├── app_service_pagelife.md
│ │ │ ├── app_service_register.md
│ │ │ ├── app_service_registergetapp.md
│ │ │ ├── app_service_route.md
│ │ │ ├── app_service_routefile.md
│ │ │ ├── app_service_routegetCurrentPages.md
│ │ │ ├── app_service_routemodule.md
│ │ │ ├── app_service_routestyle.md
│ │ │ ├── custom-component.md
│ │ │ ├── custom-component_behaviors.md
│ │ │ ├── custom-component_comp.md
│ │ │ ├── custom-component_cont.md
│ │ │ ├── custom-component_extend.md
│ │ │ ├── custom-component_generic.md
│ │ │ ├── custom-component_lifetimes.md
│ │ │ ├── custom-component_observers.md
│ │ │ ├── custom-component_temp.md
│ │ │ ├── custom-component_trdparty.md
│ │ │ ├── dynamiclib_topone.md
│ │ │ ├── dynamiclib_use.md
│ │ │ ├── echarts.md
│ │ │ ├── modelviewer.md
│ │ │ ├── operating-environment.md
│ │ │ ├── operating-mechanism.md
│ │ │ ├── panoviewer.md
│ │ │ ├── process_life.md
│ │ │ ├── sitemap.md
│ │ │ ├── sjs_annotation.md
│ │ │ ├── sjs_basic_library.md
│ │ │ ├── sjs_datatype.md
│ │ │ ├── sjs_esnext.md
│ │ │ ├── sjs_operator.md
│ │ │ ├── sjs_start.md
│ │ │ ├── sjs_statement.md
│ │ │ ├── sjs_variable.md
│ │ │ ├── spintileviewer.md
│ │ │ ├── view_css.md
│ │ │ ├── view_data.md
│ │ │ ├── view_filter.md
│ │ │ ├── view_for.md
│ │ │ ├── view_if.md
│ │ │ ├── view_incident.md
│ │ │ ├── view_quote.md
│ │ │ ├── view_template.md
│ │ │ └── vrvideo.md
│ │ ├── fuctionlist
│ │ │ └── list.md
│ │ ├── function
│ │ │ ├── error_code.md
│ │ │ ├── file_system.md
│ │ │ ├── file_system_local.md
│ │ │ ├── file_system_package.md
│ │ │ ├── invoke_process.md
│ │ │ ├── keygen_v2.md
│ │ │ ├── navigation.md
│ │ │ ├── opensmartprogram.md
│ │ │ ├── ordercenter.md
│ │ │ ├── parameter.md
│ │ │ ├── payfaq.md
│ │ │ ├── proposal.md
│ │ │ ├── sign_v2.md
│ │ │ ├── tune_up.md
│ │ │ ├── tune_up_applyorderrefund.md
│ │ │ ├── tune_up_capitaBill.md
│ │ │ ├── tune_up_drawback.md
│ │ │ ├── tune_up_examine.md
│ │ │ ├── tune_up_notice.md
│ │ │ ├── tune_up_orderBill.md
│ │ │ ├── tune_up_queryorderdetail.md
│ │ │ ├── tune_up_rest.md
│ │ │ └── webintroduction.md
│ │ ├── performance
│ │ │ ├── http.md
│ │ │ ├── performance-analysis-tool.md
│ │ │ ├── performance-tips.md
│ │ │ ├── subpackages.md
│ │ │ └── whitescreen.md
│ │ ├── serverapi
│ │ │ ├── addTemplate.md
│ │ │ ├── appendix.md
│ │ │ ├── contact_api.md
│ │ │ ├── contact_api_background.md
│ │ │ ├── contact_api_page.md
│ │ │ ├── contact_api_send.md
│ │ │ ├── deleteTemplate.md
│ │ │ ├── deleteresource.md
│ │ │ ├── deletesitemap.md
│ │ │ ├── faq.md
│ │ │ ├── get.md
│ │ │ ├── getTemplateLibraryById.md
│ │ │ ├── getTemplateLibraryList.md
│ │ │ ├── getTemplateList.md
│ │ │ ├── getunlimited.md
│ │ │ ├── open_feed.md
│ │ │ ├── open_infomation.md
│ │ │ ├── open_risk_power.md
│ │ │ ├── open_risk_power_detectrisk.md
│ │ │ ├── power_exp.md
│ │ │ ├── sendTemplateMessage.md
│ │ │ ├── sendintroduction.md
│ │ │ ├── serverapilist.md
│ │ │ ├── submitresource.md
│ │ │ ├── submitsitemap.md
│ │ │ ├── type.md
│ │ │ └── useintroduction.md
│ │ ├── simple
│ │ │ ├── h5.md
│ │ │ └── process.md
│ │ ├── swan
│ │ │ ├── client-lib.md
│ │ │ ├── compatibility.md
│ │ │ ├── compatibility_api.md
│ │ │ ├── compatibility_caniuse.md
│ │ │ ├── compatibility_compare.md
│ │ │ ├── compatibility_diff.md
│ │ │ ├── compatibility_version.md
│ │ │ ├── swanchangelog.md
│ │ │ └── version.md
│ │ └── tutorial
│ │ │ ├── demo.md
│ │ │ ├── dev.md
│ │ │ ├── devcss.md
│ │ │ ├── devjs.md
│ │ │ ├── devjson.md
│ │ │ ├── frameworkdevelop.md
│ │ │ ├── function.md
│ │ │ ├── function_api.md
│ │ │ ├── function_component.md
│ │ │ ├── function_page.md
│ │ │ ├── install.md
│ │ │ ├── move.md
│ │ │ ├── process.md
│ │ │ ├── processjs.md
│ │ │ ├── publish.md
│ │ │ ├── startdevelop.md
│ │ │ └── testapp.md
│ ├── introduction
│ │ ├── OpenCard.md
│ │ ├── accessfeed.md
│ │ ├── accessfeed_examine.md
│ │ ├── accessfeed_monitor.md
│ │ ├── accessfeed_publish.md
│ │ ├── accessfeed_push.md
│ │ ├── accessfeed_suggest.md
│ │ ├── adopen.md
│ │ ├── adopen_feedback.md
│ │ ├── auditing_faq.md
│ │ ├── auditing_road.md
│ │ ├── auditing_tieba.md
│ │ ├── auditinginfo_examine.md
│ │ ├── auditinginfo_settled.md
│ │ ├── auditinginfo_vertical.md
│ │ ├── authenticity.md
│ │ ├── authenticity_verification.md
│ │ ├── baijiahao.md
│ │ ├── baijiahao_audit.md
│ │ ├── baijiahao_submit.md
│ │ ├── baijiahaoexample.md
│ │ ├── baijiahaointroduction.md
│ │ ├── base.md
│ │ ├── category.md
│ │ ├── contact.md
│ │ ├── contact_standard.md
│ │ ├── content_course.md
│ │ ├── content_inro.md
│ │ ├── design 6.textClipping
│ │ ├── enter_application.md
│ │ ├── examine_faq.md
│ │ ├── feed.md
│ │ ├── getphonenumber.md
│ │ ├── intro.md
│ │ ├── mount.md
│ │ ├── online.md
│ │ ├── pay.md
│ │ ├── productlaboratory.md
│ │ ├── productlaboratory_ad.md
│ │ ├── productlaboratory_faq.md
│ │ ├── productlaboratory_search.md
│ │ ├── publish.md
│ │ ├── rank.md
│ │ ├── rank_api.md
│ │ ├── rank_data.md
│ │ ├── rank_delete.md
│ │ ├── rank_faq.md
│ │ ├── rank_h5.md
│ │ ├── rank_pageinfo.md
│ │ ├── rank_road.md
│ │ ├── rank_robots.md
│ │ ├── rank_setimage.md
│ │ ├── rank_single.md
│ │ ├── rank_sitemap.md
│ │ ├── rank_synchronism.md
│ │ ├── rank_url.md
│ │ ├── register_addbodyinfo.md
│ │ ├── register_choosebodystyle.md
│ │ ├── register_consummate.md
│ │ ├── register_prepare.md
│ │ ├── return.md
│ │ ├── scancode.md
│ │ ├── tieba.md
│ │ ├── tool.md
│ │ ├── type_send.md
│ │ ├── type_thridtool.md
│ │ ├── type_tool.md
│ │ └── whitebook2.md
│ ├── operations
│ │ ├── behaviour_norms.md
│ │ ├── catagory.md
│ │ ├── game.md
│ │ ├── service.md
│ │ ├── specification.md
│ │ ├── thirdparty_ad.md
│ │ ├── thirdparty_agreement.md
│ │ ├── thirdparty_law.md
│ │ ├── thirdparty_low.md
│ │ └── whitebook.md
│ └── third
│ │ ├── api.md
│ │ ├── apppage.md
│ │ ├── brandword.md
│ │ ├── coupon.md
│ │ ├── create.md
│ │ ├── customer.md
│ │ ├── customerability.md
│ │ ├── datastatistics.md
│ │ ├── deciphering.md
│ │ ├── develop.md
│ │ ├── domain.md
│ │ ├── info.md
│ │ ├── log.md
│ │ ├── login.md
│ │ ├── module.md
│ │ ├── pathandkeyword.md
│ │ ├── paymentservice.md
│ │ ├── pro.md
│ │ ├── publication.md
│ │ ├── register.md
│ │ ├── sitemap.md
│ │ └── upload.md
└── nav
│ └── nav.yml
├── report.20200228.014848.18420.0.001.json
└── source
└── img
└── tp
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
├── card1.png
└── card2.png
/.github/workflows/nodejs.yml:
--------------------------------------------------------------------------------
1 | name: Node CI
2 |
3 | on: [push, pull_request]
4 |
5 | jobs:
6 | build:
7 |
8 | runs-on: ubuntu-latest
9 |
10 | strategy:
11 | matrix:
12 | node-version: [10.x]
13 |
14 | steps:
15 | - uses: actions/checkout@v1
16 | - name: Use Node.js ${{ matrix.node-version }}
17 | uses: actions/setup-node@v1
18 | with:
19 | node-version: ${{ matrix.node-version }}
20 | - name: npm install, build, and test
21 | run: |
22 | npm i
23 | npm run build --max-old-space-size=100000000
24 | env:
25 | CI: true
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | Thumbs.db
3 | db.json
4 | *.log
5 | .idea
6 | node_modules/
7 | public/
8 | .deploy*/
9 | output
10 | package-lock.json
11 | .npmrc
12 | .vscode
13 | .project
14 | miniapp_docs_*
15 | source/sitemap.txt
16 | fis-conf.js
17 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 |
2 | # hexo g
3 | cd output
4 | mkdir docs
5 | mv miniappdocs/* docs
6 | mv docs miniappdocs
7 | cd ..
8 | fis3 release
9 | # rm -rf ./output
10 | echo "deploy done!"
11 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/plugins/code-pre-wapper.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file code代码重新包装
3 | * @author wulinfei
4 | */
5 |
6 | const extensionLanguageMap = {
7 | swan: 'markup',
8 | md: 'markdown',
9 | ts: 'typescript',
10 | py: 'python',
11 | sh: 'bash',
12 | yml: 'yaml'
13 | };
14 |
15 | const getLangExtension = exlang => {
16 | const lowerlang = exlang.toLowerCase();
17 | return extensionLanguageMap[lowerlang] || lowerlang;
18 | };
19 |
20 | module.exports = md => {
21 | const fence = md.renderer.rules.fence;
22 | md.renderer.rules.fence = (...args) => {
23 | const [tokens, idx] = args;
24 | const token = tokens[idx];
25 | const rawlang = token.info.trim();
26 | token.info = getLangExtension(rawlang);
27 | const tabName = rawlang.toUpperCase() || 'TEXT';
28 | const rawCode = fence(...args);
29 | return ``
30 | + `${rawCode}`;
31 | };
32 | };
33 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/plugins/router.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file 路由映射,将产出生成为index.html的形式,对齐hexo
3 | * @author wulinfei
4 | */
5 |
6 | const path = require('path');
7 | const globby = require('globby');
8 |
9 | const sourceDir = path.join(__dirname, '../../');
10 |
11 | const routers = globby.sync(['**/*.md', '!README.md'], {cwd: sourceDir});
12 |
13 | const routersMap = routers.map(item => {
14 | const router = `/${item.substring(0, item.length - 3)}/`;
15 | return {
16 | path: router,
17 | filePath: path.resolve(__dirname, `../../${item}`)
18 | };
19 | });
20 |
21 | // routersMap.push({path: '/index/', filePath: path.resolve(__dirname, '../../README.md')});
22 | // routersMap.push({path: '/', filePath: path.resolve(__dirname, '../../README.md')});
23 |
24 | module.exports = {
25 | additionalPages: routersMap
26 | };
27 |
28 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/arrow-relative.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/arrow-relative.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/arrow.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/back-to-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/back-to-top.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/copy-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/copy-active.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/copy.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/edit-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/edit-active.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/edit.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/feedback.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/head-menu-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/head-menu-mobile.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/logo-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/logo-mobile.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/logo.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/logo_docs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/logo_docs.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/mobile-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/mobile-close.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/mobile-select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/mobile-select.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/next.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/prev.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/qrcode-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/qrcode-logo.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/search-icon-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/search-icon-mobile.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/search-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/search-icon.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/status.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/title-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/title-bg.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/tool-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/tool-hover.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/tool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/tool.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/images/webview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swan-team/swan-docs/87accb3c0e79036fcca83a0768b65c96c2132c49/program-docs/docs/.vuepress/theme/assets/images/webview.png
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/common/color.less:
--------------------------------------------------------------------------------
1 |
2 | /* 全局颜色 */
3 | // @href-color: #3388FF;
4 | @href-color: #4B78B2;
5 | @href-active-color: #3388FF;
6 | @relative-color: #4B78B2;
7 | @elite-color: #fa8429;
8 | @tip-error: #F7534F;
9 | @tip-info: #04AA61;
10 |
11 | /* 背景颜色 */
12 | @bg-white: #fff;
13 | @bg-white1: #F7F8F9;
14 | @bg-white2: #f0f0f0;
15 | @bg-white3: #f2f2f2;
16 | @bg-white4: #F2F3F4;
17 | @bg-blue: #38f;
18 | @bg-gray1: #F2F3F5;
19 | @bg-gray2: #e6e6e6;
20 | @bg-gray3: #EBEDEF;
21 | @bg-gray4: #F5F5F5;
22 | @bg-gray5: #eee;
23 | @bg-black1: #000;
24 |
25 | /* 字体颜色 */
26 | @font-default: #000;
27 | @font-black1: #333;
28 | @font-black2: #666;
29 | @font-black3: #ccc;
30 | @font-black4: #999;
31 | @font-black5: #4F4F4F;
32 | @font-white1: #fff;
33 | @font-blue1: #3388FF;
34 |
35 | /* 边框颜色 */
36 | @border-gray1: #e6e6e6;
37 | @border-gray2: #F0F1F2;
38 | @border-gray3: #F2F3F5;
39 | @border-black1: #000;
40 | @border-black2: #ccc;
41 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/common/params.less:
--------------------------------------------------------------------------------
1 | // PC端最大宽度
2 | @pc-max-width: 1980px;
3 |
4 | // PC最小宽度/移动端最大宽度
5 | @mobile-max-width: 1080px;
6 |
7 | // before
8 | // @font-body: "PingFang SC", "Microsoft YaHei", STHeiti, SimHei, "Helvetica Neue", Arial, Verdana;
9 | // @font-code: Menlo, Monaco, Consolas, monospace;
10 |
11 | @font-body: Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetiva, Arial, sans-serif;
12 | @font-code: Menlo, Monaco, Consolas, monospace;
13 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/common/qr-code.less:
--------------------------------------------------------------------------------
1 | @import './color.less';
2 | @import './params.less';
3 |
4 | .qr-code {
5 | margin: 10px 0;
6 | &-image {
7 | width: 140px;
8 | height: 160px;
9 | background-color: @bg-white1;
10 | padding-top: 10px;
11 | border-radius: 8px;
12 | &-content {
13 | margin: 0 auto;
14 | width: 120px;
15 | position: relative;
16 | img {
17 | border: none;
18 | position: absolute;
19 | width: 40px;
20 | height: 40px;
21 | margin: 0;
22 | padding: 0;
23 | top: 50%;
24 | left: 50%;
25 | margin-top: -20px;
26 | margin-left: -20px;
27 | }
28 | }
29 | &-text {
30 | text-align: center;
31 | color: @font-black2;
32 | }
33 | }
34 |
35 | &-text {
36 | line-height: 24px;
37 | margin-bottom: 20px;
38 |
39 | &-botton {
40 | color: @href-color;
41 | cursor: pointer;
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/components/footer.less:
--------------------------------------------------------------------------------
1 | @import '../common/color.less';
2 |
3 | .footer {
4 | margin-bottom: 24px;
5 | display: flex;
6 | justify-content: center;
7 | &-license {
8 | color: @font-black2;
9 | font-size: 14px;
10 | line-height: 24px;
11 | a {
12 | color: @font-black2;
13 | }
14 | a:hover {
15 | color: @href-color;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/components/mobile-head-nav.less:
--------------------------------------------------------------------------------
1 | @import '../common/color.less';
2 |
3 | .mobile-header-nav {
4 | position: fixed;
5 | top: 60px;
6 | width: 100%;
7 | z-index: 1000;
8 | height: 100vh;
9 | background-color: @bg-white;
10 | ul {
11 | width: 100%;
12 | li {
13 | width: 100%;
14 | line-height: 60px;
15 | :hover {
16 | background-color: @border-gray3;
17 | }
18 | a {
19 | width: 100%;
20 | display: flex;
21 | justify-content: center;
22 | color: @font-black5;
23 | }
24 | }
25 | }
26 |
27 | &-item-active {
28 | background-color: @border-gray3;
29 | }
30 | }
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/assets/less/components/sidebar.less:
--------------------------------------------------------------------------------
1 | @import '../common/color.less';
2 | @import '../common/params.less';
3 |
4 | .m-doc-sidebar {
5 | background-color: @bg-white1;
6 | box-sizing: border-box;
7 | height: 100vh;
8 | overflow-y: auto;
9 | top: 0;
10 | left: 0;
11 | z-index: -1;
12 | min-height: calc(100vh - 60px);
13 | padding-bottom: 100px;
14 | box-sizing: border-box;
15 | font-size: 14px;
16 | }
17 |
18 | .page-container-sidebar {
19 | width: 280px;
20 | &-fixed {
21 | position: fixed;
22 | top: 0;
23 | }
24 | &-top {
25 | min-height: calc(100vh - 60px);
26 | top: 60px;
27 | }
28 |
29 | }
30 |
31 | @media screen and (max-width: @mobile-max-width) {
32 | .page-container-sidebar {
33 | position: fixed;
34 | z-index: 1000;
35 | }
36 | }
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/components/BottomNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{left.text}}
7 |
8 |
9 |
10 |
11 | {{right.text}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/components/MobileHeadNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/components/SubNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
9 | {{item.text}}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/layouts/404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | page not found
4 |
5 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/utils/api.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file api.js
3 | * @description 请求接口集合
4 | */
5 |
6 | export const Url = {
7 | searchSugUrl: '/forum/api/search_category',
8 | searchReportUrl: '/forum/api/statistics_wordstatisticsadd',
9 | searchRelativeUrl: '/forum/api/search_docrelation',
10 | relativeReportUrl: '/forum/api/statistics_urlstatisticsadd'
11 | };
12 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/utils/get-device.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file 判断设备环境
3 | * @author wulinfei
4 | */
5 |
6 | export const isPc = () => {
7 | const reg = /Android|webOS|iPhone|SymbianOS|Windows Phone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;
8 | return !(reg.test(navigator.userAgent));
9 | };
10 |
11 | export const isIOS = () => {
12 | const reg = /webOS|iPhone|iPad|iPod/i;
13 | return reg.test(navigator.userAgent);
14 | };
15 |
16 | export const isBox = () => {
17 | return / baiduboxapp\//i.test(navigator.userAgent);
18 | };
19 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/utils/link-loader.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file 处理链接
3 | * @author wulinfei
4 | */
5 |
6 |
7 | // 获取导航链接,如果导航不存在link,则找其子项第一项的链接
8 | export const findLink = item => {
9 | if (item.link) {
10 | return item.link;
11 | }
12 | const sidebar = item.sidebar;
13 | if (sidebar && sidebar[0].link) {
14 | return sidebar[0].link;
15 | }
16 | return findLink(sidebar[0]);
17 | };
18 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/utils/report.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file 打点上报Server
3 | * @author wulinfei
4 | */
5 |
6 | import {get} from './request';
7 | import {Url} from './api';
8 |
9 | /**
10 | * 搜索打点上报
11 | * @param {Object} params 打点的参数
12 | * @param {string} params.word 搜索词
13 | * @param {string} params.source 搜索来源
14 | * @param {string} params.module 搜索类型 index: 主搜索 category: sug 搜索
15 | * @param {string} params.countType 事件类型 query: 展示 click: 点击
16 | * @return {Promise} 打点请求
17 | */
18 |
19 | export const searchReport = params => {
20 | params.source = params.source || 'docs';
21 | return get(Url.searchReportUrl, params).catch(() => {});
22 | };
23 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/theme/utils/request.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file request.js
3 | * @description 请求函数
4 | */
5 |
6 | import axios from 'axios';
7 | import Qs from 'qs';
8 |
9 | export const get = (url, params) => {
10 | return axios.get(url + '?' + Qs.stringify(params, {arrayFormat: 'indices'}))
11 | .then(res => res.data);
12 | };
13 |
--------------------------------------------------------------------------------
/program-docs/docs/.vuepress/utils/init-url.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @file 替换废弃的url,不经过编译,不能使用ES6
3 | * @author wulinfei
4 | */
5 |
6 | !(function (url) {
7 | // 放置被删除的页面映射
8 | var urlMap = {
9 | // 例 '/docs/design/principle/':'/docs/design/overview/introduction/'
10 | };
11 | if (!window._swanIde) {
12 | urlMap[url] && location.replace(urlMap[url]);
13 | !url.match('\/$') && !url.match('\.html$') && location.replace(url + '/');
14 | }
15 | })(location.pathname);
--------------------------------------------------------------------------------
/program-docs/docs/data/concept.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 常规分析
3 | header: data
4 | nav: book
5 | sidebar: concept
6 | ---
7 |
8 | 智能小程序数据分析功能为开发者提供了用户分析、使用分析、来源分析、留存分析、转化分析等模块分析功能,帮助开发者了解小程序整体运营状况,分析小程序的用户来源、用户构成、用户增长趋势、用户留存与转化、用户小程序使用行为习惯等一些列问题,已实现数据驱动商业运营与产品迭代的目标。
9 |
10 | 
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_conversion.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 转化分析
3 | header: data
4 | nav: book
5 | sidebar: concept_conversion
6 | ---
7 |
8 |
9 | 分析过程中的转化与流失情况。当前主要包括漏斗分析:漏斗分析,是指将多个事件串联起来,对每个步骤中用户转化与流失进行的分析。为了让最终的转化能实现最大化,就需要去监控漏斗每个关键步骤的用户流量,分析步骤之间的流转关系,提升每个步骤的转化率。这就是漏斗分析的意义与价值。
10 |
11 | 
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_retain.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 留存分析
3 | header: data
4 | nav: book
5 | sidebar: concept_retain
6 | ---
7 |
8 |
9 | 用户留存报告用以分析目标用户再次启动小程序的情况,是体现小程序用户粘性的核心指标。在选择了考察的新用户(或活跃用户)时段后,可以在留存表中查看目标用户的“按日”、“按周”和“按月”的留存用户数或留存率。
10 | 
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_source.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 来源分析
3 | header: data
4 | nav: book
5 | sidebar: concept_source
6 | ---
7 |
8 | 展示进入到小程序的不同来源数据情况,来源的启动用户数体现该来源规模,新用户数、人均启动次数、时长和跳出率则体现该来源的质量。
9 | 
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_survey.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 应用概况
3 | header: data
4 | nav: book
5 | sidebar: concept_survey
6 | ---
7 |
8 | 应用概况是产品健康仪表盘,通过集中展现当前应用的核心数据指标(如:新用户数、启动用户数等)及主要报表的近7日趋势变化缩略图,帮助您快速了解应用的当前数据表现。
9 | 
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_useanalysis.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 使用分析
3 | header: data
4 | nav: book
5 | sidebar: concept_useanalysis
6 | ---
7 |
8 | 
9 |
10 | **页面分析**:展示各个页面的访次、停留时间、退出率等指标,体现页面受欢迎的程度。
11 | **使用习惯**:从访问深度、使用频率、使用时长、使用间隔四个维度系统刻画用户使用习惯特征,熟悉并把握用户的产品使用习惯特征,对于有针对性的进行产品优化及运营策略制定具有重要意义。
12 | **事件分析**:事件在小程序的统计分析中至关重要,用户在小程序内所有交互行为的分析均需要依赖对于事件的埋点与监控。目前支持通过事件API接口上报事件,即您需要在该报告“新增事件”后,将对应事件ID等信息通过事件API接口上报,而后才能看到事件的数据结果。在事件配置过程中,您可以给每个事件添加至多6个参数,用于进行事件更多维度的下钻分析,详情参见自定义事件分析。
13 |
--------------------------------------------------------------------------------
/program-docs/docs/data/concept_useranalysis.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 用户分析
3 | header: data
4 | nav: book
5 | sidebar: concept_useranalysis
6 | ---
7 |
8 | 
9 |
10 | **用户趋势**:用于分析产品的新用户增量、新老构成比例等指标随时间的变化趋势,特别是结合自身业务重点分析趋势高、低点出现的合理性。
11 | **活跃用户**:从活跃用户数、活跃度、流失用户等维度分析您用户的产品使用粘性。
12 | **用户画像**:使用您应用的全部用户进行挖掘分析,得到用户在百度全域数据下的用户属性分布结果。
13 | **地域分布**:展示使用您的应用的用户在国家、省份、城市维度的分布详情。进行地域分布分析对于进行针对性的地域运营方案具有重要价值。
14 | **终端分析**:终端作为用户运行应用的载体,背后蕴藏着丰富的用户信息。分析用户品牌分布、设备型号分布、联网方式构成等,对于运营、产品和研发工作都十分必要。
--------------------------------------------------------------------------------
/program-docs/docs/data/target_active.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 活跃类指标
3 | header: data
4 | nav: book
5 | sidebar: target_active
6 | ---
7 |
8 |
9 | |指标名称|详情|
10 | |--|--|
11 | |日活跃用户数| 当日启动过小程序的用户数(多次启动不重复计)。|
12 | |周活跃用户数| 最近 7 天(含查询当日)启动过小程序的用户数(多次启动不重复计)。|
13 | |月活跃用户数| 最近 30 天(含查询当日)启动过小程序的用户数(多次启动不重复计)。|
14 | |日活/周活 |日启动用户数/周启动用户数,反映当日用户活跃与近 7 日的比较水平。|
15 | |日活/月活| 日启动用户数/月启动用户数,反映当日用户活跃与近 30 日的比较水平。|
16 | |流失用户| 最近 60 天(含查询当日)没有启动过小程序的用户数(已去重)。|
17 | |流失率 |流失用户/累计启动用户|
18 |
--------------------------------------------------------------------------------
/program-docs/docs/data/target_data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 数据分析维度
3 | header: data
4 | nav: book
5 | sidebar: target_data
6 | ---
7 |
8 |
9 | |维度|内容|
10 | |--|--|
11 | |终端系统平台|安卓、苹果、其它|
12 | |系统版本|iOS 及 Android 逐个子版本|
13 | |设备品牌|如苹果、三星、华为、小米等|
14 | |设备型号|如 iPhone8、小米 5、华为荣耀等|
15 | |联网方式|如 wifi、3g/4g、2g 等|
16 | |分辨率|如 640*960 等|
17 | |运营商|中国移动、联通等|
18 | |百度APP的版本号| 10.7 等|
19 | |页面|每一条页面路径,即为一个页面。|
20 |
--------------------------------------------------------------------------------
/program-docs/docs/data/target_habit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 使用习惯类指标
3 | header: data
4 | nav: book
5 | sidebar: target_habit
6 | ---
7 |
8 |
9 |
10 | |指标名称|详情|
11 | |--|--|
12 | | 访问深度分布| 访问深度指一次启动过程的去重访问页面数;分布指不同访问深度的启动次数分布。|
13 | |使用时长分布| 不同访问时长的启动次数分布|
14 | | 使用频率分布| 启动频率指用户的日启动次数,如用户在 1 月 1 日启动了 2 次;在 1 月 2 日启动了 4 次,则该用户在日启动次数 2 次和 4 次两个分布上均会被计入 1 次。|
15 | | 使用间隔分布| 启动间隔指用户最近一次启动距离上一次启动的时长;分布指不同启动间隔的启动用户数分布,其中新用户仅有 1 次启动,启动间隔为“首次启动”;用户最近一次启动与上一次启动在同一天的间隔为“当日”。|
16 |
--------------------------------------------------------------------------------
/program-docs/docs/data/target_page.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 页面类指标
3 | header: data
4 | nav: book
5 | sidebar: target_page
6 | ---
7 |
8 | |指标名称|详情|
9 | |--|--|
10 | | 访问次数| 页面被访问的次数,多次跳转重复访问也会被计入。|
11 | | 访问用户数| 访问该页面的用户数(同一用户多次访问同一页面不重复计)。|
12 | | 次均停留时长| 平均每一次访问页面的时间,等于页面访问总时长/页面访问总次数。|
13 | | 入口页次数| 该页面作为启动小程序时第一个访问的页面的启动次数。|
14 | | 退出页次数| 该页面作为关闭小程序时最后一个访问的页面的启动次数。|
15 | | 退出率| 该页面作为关闭小程序时最后一个访问页面的启动次数占该页面访问总次数的比例。|
16 | | 访问次数占比| 当前页面访问次数占全部页面访问次数的比例。|
17 | | 停留时长占比| 用户访问当前页面的停留时长的总和占用户在全部页面的停留时长总和的比例。|
18 |
--------------------------------------------------------------------------------
/program-docs/docs/data/target_retain.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 留存类指标
3 | header: data
4 | nav: book
5 | sidebar: target_retain
6 | ---
7 |
8 | |指标名称|详情|
9 | |--|--|
10 | |留存用户数| 某日(周、月)新用户(或启动用户)在目标时间段再次启动小程序的用户数。|
11 | |留存率| 包括:日留存率、周留存率、月留存率。某日(周、月)新用户(或启动用户)在目标时间段再次启动小程序的用户数占原新用户数(或启动用户数)的比例。|
12 |
--------------------------------------------------------------------------------
/program-docs/docs/data/target_user.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 用户类指标
3 | header: data
4 | nav: book
5 | sidebar: target_user
6 | ---
7 |
8 |
9 | |指标名称|详情|
10 | |--|--|
11 | | 新用户数| 90 天内首次启动小程序的用户数。|
12 | |新用户占比 |某时间段内新用户数占启动用户总数的比例。|
13 | | 新用户分布| 某维度的新用户数占全维度的新用户总数的比例。|
14 | | 启动用户数| 启动过小程序的用户数(多次启动不重复计)。|
15 | | 启动用户分布| 某维度的启动用户数占全维度的启动用户总数的比例。|
16 | | 启动次数| 启动小程序的总次数。“一次启动”是指用户打开小程序到主动退出(或超时退出)为止。|
17 | | 启动次数分布| 某维度的启动次数占全维度的启动总次数的比例。|
18 | | 次均使用时长| 平均每一次启动小程序的时间,等于总时长/总启动次数。|
19 | | 人均使用时长| 平均每个用户使用应用程序的时间,等于总时长/总启动用户数。|
20 | | 老用户数| 当日启动用户中,以前也启动过小程序的用户。|
21 | |老用户占比 |当日老用户占总的启动用户的比例。|
22 | |人均启动 次数| 每个用户启动小程序的平均次数。|
--------------------------------------------------------------------------------
/program-docs/docs/design/component/input.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 输入组件
3 | header: design
4 | nav: component
5 | sidebar: input
6 | ---
7 | ## 输入表单
8 | 输入表单由一系列文本输入框组成,支持上下垂直滚动,用户输入并确认后,表单提交输入结果。
9 |
10 |
11 |

12 |
13 |
14 |
15 |
16 | ## 文本输入框
17 | 针对常用的输入场景,智能小程序提供常用文本输入框:
18 | - 单行输入框,开发文档说明详见input;
19 | - 多行输入框,开发文档说明详见textarea。
20 |
21 |
22 |

23 |
24 |
25 |
26 | ## 键盘
27 | 请为不同的文本输入框,调用适合的键盘类型:
28 |
29 |
30 |

31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/design/component/list.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 列表
3 | header: design
4 | nav: foundation
5 | sidebar: list
6 | ---
7 |
8 | 列表是由多个等宽列表项组成的、按一定规律的连续条目排列,支持上下垂直滚动。
9 | 列表条目整体响应点击操作;右侧带选择控件的列表,控件区点击优先响应相应功能。
10 |
11 |
12 |
13 |

14 |
15 |
16 |
17 | > 你可直接使用智能小程序相关体验资产。([下载设计资源](https://smartprogram.baidu.com/docs/design/resource/uikit/) | [查看开发文档](https://smartprogram.baidu.com/docs/develop/extended/template/smt-feed-page/))
--------------------------------------------------------------------------------
/program-docs/docs/design/foundation/pic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 图片图标
3 | header: design
4 | nav: foundation
5 | sidebar: pic
6 | ---
7 |
8 | ## 图片
9 | 图片比文字更吸引用户,能丰富页面内容。
10 |
11 | 开发文档说明详见 image 。
12 |
13 | 请使用清晰的图片,像素低的图片会降低页面的整体质感。
14 |
15 |

16 |
17 |
18 | ## 图标
19 | 图标能辅助信息的表达,开发文档说明详见 icon 。
20 |
21 | 使用图标风格应简洁、辨识性强,建议按场景绘制或内容分类入口。
22 |
23 | ### 智能小程序常用图标库
24 | 1. 彩色图标,多应用于页面中的重点内容分类入口(金刚位);
25 | 2. 单色图标,多应用于框架或基础页面的功能。
26 |
27 | 
28 |
29 |
30 | > 你可直接使用智能小程序相关体验资产。([视觉资源下载](../../resource/uikit/) | [查看开发文档](https://smartprogram.baidu.com/docs/develop/extended/ui_component/smt-icon/))
--------------------------------------------------------------------------------
/program-docs/docs/design/resource/lottie.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Lottie 动画
3 | header: design
4 | nav: foundation
5 | sidebar: lottie
6 | ---
7 |
8 | 为了更好地实现流畅的动画效果,智能小程序支持Lottie导出的json文件以及位图。
9 |
10 | 开发文档说明详见 animation-view-lottie 。
11 |
12 | 1. Lottie使用入门,详见 [官方介绍](https://airbnb.design/lottie/) ;
13 | 2. 设计师精彩示例及动效文件,详见 [设计社区](https://www.lottiefiles.com/) 。
14 |
15 | 示例:
16 |
19 | 温馨提示:如果你的浏览器无法正常播放,请尝试Chrome浏览器。
--------------------------------------------------------------------------------
/program-docs/docs/design/resource/uikit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 视觉资源下载
3 | header: design
4 | nav: resource
5 | sidebar: uikit
6 | ---
7 |
8 |
9 |
10 | 为方便小程序开发团队的视觉设计师进行小程序设计,小程序团队提供常用的视觉设计组件资源。
11 |
12 |
20 |
21 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/ai/ai.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 接入说明
3 | header: develop
4 | nav: api
5 | sidebar: ai
6 | ---
7 |
8 | > **AI 接口目前只针对百度 APP 开放使用。**
9 |
10 | 在使用 AI 接口前,请使用有管理员权限的帐号,进行如下操作:
11 |
12 |
13 | 1. 进入智能小程序平台,进入小程序首页,在左导航栏单击“百度AI能力”。
14 | 2. 在“AI能力”页面,单击“编辑接口”。
15 | 
16 | 3. 勾选您需要使用的接口,单击提交。
17 | 
18 |
19 |
20 | ## 错误码
21 |
22 |
23 |
24 | ### Android
25 |
26 | |错误码|说明|
27 | |:--|:--|
28 | |201|解析失败,请检查调起协议是否合法|
29 | |202|解析失败,请检查参数是否正确|
30 | |1001|执行失败|
31 |
32 | ### iOS
33 |
34 | |错误码|说明|
35 | |:--|:--|
36 | |202|解析失败,请检查参数是否正确 |
37 | |1001|请求失败|
38 |
39 | ## Bug&Tip
40 |
41 | * 目前AI能力只能在百度宿主中使用,且暂时无法用caniuse来判断可用性,建议开发者使用getSystemInfoSync获取宿主名称作为临时方案来判断,在每个AI示例中包含了这种判断方式。长期来讲,所有宿主都会支持AI能力,也应该用caniuse判断,以上为临时折中方案。
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/device_sys/hostlist.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 宿主平台枚举值列表
3 | header: develop
4 | nav: api
5 | sidebar: hostlist
6 | ---
7 |
8 | |宿主平台|枚举值|
9 | |---|---|
10 | |小红书|xhsdiscover|
11 | |百度网盘|bdnetdisk|
12 | |百度地图|bdmap|
13 | |全民小视频|bdminivideo|
14 | |百度APP|baiduboxapp|
15 | |好看视频|baiduhaokan|
16 | |百度极速版|bdlite|
17 | |WiFi万能钥匙极速版|wifikey|
18 | |贴吧|tieba|
19 | |Freeme OS|droi|
20 | |爱奇艺|iqiyi|
21 | |车载智能小程序|iovauto|
22 | |WiFi万能钥匙|wifikeycore|
23 | |宝宝巴士|babybus|
24 | |看多多|baiduboxmission|
25 | |百度知道|zhidao|
26 | |三星手机|samsungmscc|
27 | |分玩|gamenow|
28 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-access.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.access
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-access
6 | ---
7 |
8 | **解释**:判断文件/目录是否存在。
9 |
10 | **方法参数**:Object object
11 |
12 | **`object`参数说明**:
13 |
14 | |参数名 |类型|必填|默认值|说明|
15 | |:----|:----|:----|:----|:----|
16 | |path|String|是|-|文件/目录路径|
17 | |success|Function|否|-|接口调用成功的回调函数|
18 | |fail|Function|否|-|接口调用失败的回调函数|
19 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
20 |
21 | ### 代码示例
22 |
23 | * 在 js 文件中
24 |
25 | ```js
26 | Page({
27 | onLoad() {
28 | const fs = swan.getFileSystemManager();
29 | this.fs = fs;
30 | },
31 | access() {
32 | this.fs.access({
33 | path: `${swan.env.USER_DATA_PATH}/demo.txt`,
34 | success: res => {
35 | console.log('access success', res);
36 | },
37 | fail: err => {
38 | console.log('access fail', err)
39 | }
40 | });
41 | }
42 | });
43 | ```
44 |
45 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-accessSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.accessSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-accessSync
6 | ---
7 |
8 |
9 |
10 | **解释**:判断文件/目录是否存在的同步接口。
11 |
12 | **方法参数**:String path
13 |
14 | **`path`参数说明**:文件/目录路径。
15 |
16 | 若接口调用失败,会抛出一个标准的`Error`对象
17 |
18 | ### 代码示例
19 |
20 | * 在 js 文件中
21 |
22 | ```js
23 | Page({
24 | onLoad() {
25 | const fs = swan.getFileSystemManager();
26 | this.fs = fs;
27 | },
28 | accessSync() {
29 | try {
30 | let result = this.fs.accessSync(
31 | `${swan.env.USER_DATA_PATH}/demo.txt`
32 | );
33 | console.log('accessSync success', result);
34 | }
35 | catch (err) {
36 | console.log('accessSync fail', err);
37 | }
38 | }
39 | });
40 | ```
41 |
42 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-copyFile.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.copyFile
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-copyFile
6 | ---
7 |
8 |
9 |
10 | **解释**:用于实现文件拷贝。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |srcPath|String|是|-|要被拷贝的源文件名称|
19 | |destPath|String|是|-|拷贝操作的目标文件名|
20 | |success|Function|否|-|接口调用成功的回调函数|
21 | |fail|Function|否|-|接口调用失败的回调函数|
22 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | copyFile() {
35 | this.fs.copyFile({
36 | srcPath: `${swan.env.USER_DATA_PATH}/demo.txt`,
37 | destPath: `${swan.env.USER_DATA_PATH}/destPath.txt`,
38 | success: res => {
39 | console.log('copyFile success', res);
40 | },
41 | fail: err => {
42 | console.log('copyFile fail', err)
43 | }
44 | });
45 | }
46 | });
47 | ```
48 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-copyFileSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.copyFileSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-copyFileSync
6 | ---
7 |
8 |
9 | **解释**:用于实现文件拷贝的同步接口。
10 |
11 | **方法参数**:String srcPath, String destPath
12 |
13 | **`srcPath`参数说明**:文件/目录路径。
14 |
15 | **`destPath`参数说明**:拷贝操作的目标文件名。
16 |
17 | 若接口调用失败,会抛出一个标准的`Error`对象
18 |
19 | ### 代码示例
20 |
21 | * 在 js 文件中
22 |
23 | ```js
24 | Page({
25 | onLoad() {
26 | const fs = swan.getFileSystemManager();
27 | this.fs = fs;
28 | },
29 | copyFileSync() {
30 | try {
31 | let result = this.fs.copyFileSync(
32 | `${swan.env.USER_DATA_PATH}/demo.txt`,
33 | `${swan.env.USER_DATA_PATH}/copyFileSync.txt`
34 | );
35 | console.log('copyFileSync success', result);
36 | }
37 | catch (err) {
38 | console.log('copyFileSync fail', err);
39 | }
40 | }
41 | });
42 | ```
43 |
44 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-getFileInfo.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.getFileInfo
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-getFileInfo
6 | ---
7 |
8 |
9 |
10 | **解释**:获取本地临时文件的相关信息, 并在 success 回调函数中返回该文件大小。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |filePath|String|是|-|读取的文件路径|
19 | |success|Function|否|-|接口调用成功的回调函数|
20 | |fail|Function|否|-|接口调用失败的回调函数|
21 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
22 |
23 | **success 返回参数说明**:
24 |
25 | |参数|类型|说明|
26 | |---- | ---- | ---- |
27 | |size|Number|文件大小,以字节为单位|
28 |
29 | ### 代码示例
30 |
31 | * 在 js 文件中
32 |
33 | ```js
34 | Page({
35 | onLoad() {
36 | const fs = swan.getFileSystemManager();
37 | this.fs = fs;
38 | },
39 | getFileInfo() {
40 | this.fs.getFileInfo({
41 | filePath: `${swan.env.USER_DATA_PATH}/demo.txt`,
42 | success: res => {
43 | console.log('getFileInfo success', res);
44 | },
45 | fail: err => {
46 | console.log('getFileInfo fail', err)
47 | }
48 | });
49 | }
50 | });
51 | ```
52 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-getSavedFileList.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.getSavedFileList
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-getSavedFileList
6 | ---
7 |
8 |
9 |
10 | **解释**:获取该小程序下已保存的本地用户文件列表。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |success|Function|否|-|接口调用成功的回调函数|
19 | |fail|Function|否|-|接口调用失败的回调函数|
20 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
21 |
22 | **success 返回参数说明**:
23 |
24 | |参数|类型|说明|
25 | |:----|:----|:----|
26 | |fileList|Array|文件数组|
27 |
28 | ### 代码示例
29 |
30 | * 在 js 文件中
31 |
32 | ```js
33 | Page({
34 | onLoad() {
35 | const fs = swan.getFileSystemManager();
36 | this.fs = fs;
37 | },
38 | getSavedFileList() {
39 | this.fs.getSavedFileList({
40 | success: res => {
41 | console.log('getSavedFileList success', res);
42 | },
43 | fail: err => {
44 | console.log('getSavedFileList fail', err)
45 | }
46 | });
47 | }
48 | });
49 | ```
50 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-mkdir.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.mkdir
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-mkdir
6 | ---
7 |
8 |
9 |
10 | **解释**:创建目录。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |dirPath|String|是|-|创建的目录路径|
19 | |recursive|Boolean|否|false|是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。|
20 | |success|Function|否|-|接口调用成功的回调函数|
21 | |fail|Function|否|-|接口调用失败的回调函数|
22 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | mkdir() {
35 | this.fs.mkdir({
36 | dirPath: `${swan.env.USER_DATA_PATH}/mkdir`,
37 | success: res => {
38 | console.log('mkdir success', res);
39 | },
40 | fail: err => {
41 | console.log('mkdir fail', err)
42 | }
43 | });
44 | }
45 | });
46 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-mkdirSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.mkdirSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-mkdirSync
6 | ---
7 |
8 |
9 |
10 | **解释**:创建目录的同步接口。
11 |
12 | **方法参数**:String dirPath, Boolean recursive
13 |
14 | **`dirPath`参数说明**:创建的目录路径。
15 |
16 | **`recursive`参数说明**:是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。。
17 |
18 | 若接口调用失败,会抛出一个标准的`Error`对象
19 |
20 | ### 代码示例
21 |
22 | * 在 js 文件中
23 |
24 | ```js
25 | Page({
26 | onLoad() {
27 | const fs = swan.getFileSystemManager();
28 | this.fs = fs;
29 | },
30 | mkdirSync() {
31 | try {
32 | let result = this.fs.mkdirSync(
33 | `${swan.env.USER_DATA_PATH}/mkdirSyc`
34 | );
35 | console.log('mkdirSync success', result);
36 | }
37 | catch (err) {
38 | console.log('mkdirSync fail', err);
39 | }
40 | }
41 | });
42 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-readdir.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.readdir
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-readdir
6 | ---
7 |
8 |
9 | **解释**:读取本地指定路径下的目录内文件列表。
10 |
11 | **方法参数**:Object object
12 |
13 | **`object`参数说明**:
14 |
15 | |参数名 |类型|必填|默认值|说明|
16 | |:----|:----|:----|:----|:----|
17 | |dirPath|String|是|-|想要读取的文件所在的目录|
18 | |success|Function|否|-|接口调用成功的回调函数|
19 | |fail|Function|否|-|接口调用失败的回调函数|
20 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
21 |
22 | **success 返回参数说明**:
23 |
24 | |参数|类型|说明|
25 | |:----|:----|:----|
26 | |files|Array|指定目录下的文件列表|
27 | |files[].fileItem|String|文件列表里的文件项,存储着路径|
28 |
29 | ### 代码示例
30 |
31 | * 在 js 文件中
32 |
33 | ```js
34 | Page({
35 | onLoad() {
36 | const fs = swan.getFileSystemManager();
37 | this.fs = fs;
38 | },
39 | readdir() {
40 | this.fs.readdir({
41 | dirPath: `${swan.env.USER_DATA_PATH}/readdir`,
42 | success: res => {
43 | console.log('readdir success', res);
44 | },
45 | fail: err => {
46 | console.log('readdir fail', err)
47 | }
48 | });
49 | }
50 | });
51 | ```
52 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-readdirSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.readdirSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-readdirSync
6 | ---
7 |
8 |
9 | **解释**:读取本地指定路径下的目录内文件列表的同步接口。
10 |
11 | **方法参数**:String dirPath
12 |
13 | **`dirPath`参数说明**:想要读取的文件所在的目录。
14 |
15 | **同步返回参数说明**:
16 |
17 | |参数 |类型|说明|
18 | |:----|:----|:----|
19 | |files|Array|指定目录下的文件列表|
20 | |files[].fileItem|String|文件列表里的文件项,存储着路径|
21 |
22 | 若接口调用失败,会抛出一个标准的`Error`对象
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | readdirSync() {
35 | try {
36 | let result = this.fs.readdirSync(
37 | `${swan.env.USER_DATA_PATH}/readdirSyc'`
38 | );
39 | console.log('readdirSync success', result);
40 | }
41 | catch (err) {
42 | console.log('readdirSync fail', err);
43 | }
44 | }
45 | });
46 | ```
47 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-removeSavedFile.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.removeSavedFile
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-removeSavedFile
6 | ---
7 |
8 |
9 |
10 | **解释**:删除该小程序下已保存的本地用户文件。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |filePath|String|是|-|需要删除的文件路径|
19 | |success|Function|否|-|接口调用成功的回调函数|
20 | |fail|Function|否|-|接口调用失败的回调函数|
21 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
22 |
23 | ### 代码示例
24 |
25 | * 在 js 文件中
26 |
27 | ```js
28 | Page({
29 | onLoad() {
30 | const fs = swan.getFileSystemManager();
31 | this.fs = fs;
32 | },
33 | removeSavedFile() {
34 | this.fs.removeSavedFile({
35 | filePath: `${swan.env.USER_DATA_PATH}/demo.txt`,
36 | encoding: 'utf8',
37 | success: res => {
38 | console.log('removeSavedFile success', res);
39 | },
40 | fail: err => {
41 | console.log('removeSavedFile fail', err)
42 | }
43 | });
44 | }
45 | });
46 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-rename.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.rename
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-rename
6 | ---
7 |
8 |
9 |
10 | **解释**:重命名文件,可以把文件从 oldPath 移动到 newPath。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |oldPath|String|是|-|源文件/源目录路径|
19 | |newPath|String|是|-|目标路径|
20 | |success|Function|否|-|接口调用成功的回调函数|
21 | |fail|Function|否|-|接口调用失败的回调函数|
22 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | rename() {
35 | this.fs.rename({
36 | oldPath: `${swan.env.USER_DATA_PATH}/demo.txt`,
37 | newPath: `${swan.env.USER_DATA_PATH}/rename/demo.txt`,
38 | encoding: 'utf8',
39 | success: res => {
40 | console.log('rename success', res);
41 | },
42 | fail: err => {
43 | console.log('rename fail', err)
44 | }
45 | });
46 | }
47 | });
48 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-renameSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.renameSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-renameSync
6 | ---
7 |
8 |
9 | **解释**:重命名文件的同步接口,可以把文件从 oldPath 移动到 newPath。
10 |
11 | **方法参数**:String oldPath, String newPath
12 |
13 | **`oldPath`参数说明**:源文件/源目录路径。
14 | **`newPath`参数说明**:目标路径。
15 |
16 | 若接口调用失败,会抛出一个标准的`Error`对象
17 |
18 | ### 代码示例
19 |
20 | * 在 js 文件中
21 |
22 | ```js
23 | Page({
24 | onLoad() {
25 | const fs = swan.getFileSystemManager();
26 | this.fs = fs;
27 | },
28 | renameSync() {
29 | try {
30 | let result = this.fs.renameSync(
31 | `${swan.env.USER_DATA_PATH}/demo.txt`,
32 | `${swan.env.USER_DATA_PATH}/renameSync/demo.txt`
33 | );
34 | console.log('renameSync success', result);
35 | }
36 | catch (err) {
37 | console.log('renameSync fail', err);
38 | }
39 | }
40 | });
41 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-rmdir.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.rmdir
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-rmdir
6 | ---
7 |
8 |
9 |
10 | **解释**:删除目录。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |dirPath|String|是|-|要删除的目录路径|
19 | |recursive|Boolean|否|false|是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。|
20 | |success|Function|否|-|接口调用成功的回调函数|
21 | |fail|Function|否|-|接口调用失败的回调函数|
22 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | rmdir() {
35 | this.fs.rmdir({
36 | dirPath: `${swan.env.USER_DATA_PATH}/rmdir`,
37 | success: res => {
38 | console.log('rmdir success', res);
39 | },
40 | fail: err => {
41 | console.log('rmdir fail', err)
42 | }
43 | });
44 | }
45 | });
46 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-rmdirSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.rmdirSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-rmdirSync
6 | ---
7 |
8 |
9 | **解释**:删除目录的同步接口。
10 |
11 | **方法参数**:String dirPath, Boolean recursive
12 |
13 | **`dirPath`参数说明**:要删除的目录路径。
14 |
15 | **`recursive`参数说明**:是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。
16 |
17 | 若接口调用失败,会抛出一个标准的`Error`对象
18 |
19 | ### 代码示例
20 |
21 | * 在 js 文件中
22 |
23 | ```js
24 | Page({
25 | onLoad() {
26 | const fs = swan.getFileSystemManager();
27 | this.fs = fs;
28 | },
29 | rmdirSync() {
30 | try {
31 | let result = this.fs.rmdirSync(
32 | `${swan.env.USER_DATA_PATH}/rmdirSync`
33 | );
34 | console.log('rmdirSync success', result);
35 | }
36 | catch (err) {
37 | console.log('rmdirSync fail', err);
38 | }
39 | }
40 | });
41 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-saveFileSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.saveFileSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-saveFileSync
6 | ---
7 |
8 |
9 | **解释**:保存临时文件到本地的同步接口。此接口会移动临时文件,因此调用成功后, tempFilePath 将不可用。
10 |
11 | **方法参数**:String tempFilePath, String filePath
12 |
13 | **`tempFilePath`参数说明**:临时存储文件路径。
14 | **`filePath`参数说明**:要存储的文件路径。
15 |
16 | **同步返回参数说明**:
17 |
18 | |参数|类型|说明|
19 | |:----|:----|:----|
20 | |savedFilePath|String|存储后的文件路径|
21 |
22 | 若接口调用失败,会抛出一个标准的`Error`对象
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | saveFileSync() {
35 | try {
36 | let result = this.fs.saveFileSync(
37 | '/usr/temp.txt', // 仅为示例,实际上请传真实临时路径地址,如 swan.downloadFile 的 tempFilePath 返回参数
38 | `${swan.env.USER_DATA_PATH}/`
39 | );
40 | console.log('saveFileSync success', result);
41 | }
42 | catch (err) {
43 | console.log('saveFileSync fail', err);
44 | }
45 | }
46 | });
47 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-unlink.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.unlink
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-unlink
6 | ---
7 |
8 |
9 |
10 | **解释**:删除文件。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |filePath|String|是|-|要删除的文件路径|
19 | |success|Function|否|-|接口调用成功的回调函数|
20 | |fail|Function|否|-|接口调用失败的回调函数|
21 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
22 |
23 | ### 代码示例
24 |
25 | * 在 js 文件中
26 |
27 | ```js
28 | Page({
29 | onLoad() {
30 | const fs = swan.getFileSystemManager();
31 | this.fs = fs;
32 | },
33 | unlink() {
34 | this.fs.unlink({
35 | filePath: `${swan.env.USER_DATA_PATH}/demo.txt`,
36 | success: res => {
37 | console.log('unlink success', res);
38 | },
39 | fail: err => {
40 | console.log('unlink fail', err)
41 | }
42 | });
43 | }
44 | });
45 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-unlinkSync.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.unlinkSync
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-unlinkSync
6 | ---
7 |
8 |
9 | **解释**:删除文件的同步接口。
10 |
11 | **方法参数**:String filePath
12 |
13 | **`filePath`参数说明**:要删除的文件路径。
14 |
15 | 若接口调用失败,会抛出一个标准的`Error`对象
16 |
17 | ### 代码示例
18 |
19 | * 在 js 文件中
20 |
21 | ```js
22 | Page({
23 | onLoad() {
24 | const fs = swan.getFileSystemManager();
25 | this.fs = fs;
26 | },
27 | unlinkSync() {
28 | try {
29 | let result = this.fs.unlinkSync(
30 | `${swan.env.USER_DATA_PATH}/demo.txt`
31 | );
32 | console.log('unlinkSync success', result);
33 | }
34 | catch (err) {
35 | console.log('unlinkSync fail', err);
36 | }
37 | }
38 | });
39 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/FileSystemManager-unzip.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: FileSystemManager.unzip
3 | header: develop
4 | nav: api
5 | sidebar: FileSystemManager-unzip
6 | ---
7 |
8 |
9 |
10 | **解释**:解压文件。
11 |
12 | **方法参数**:Object object
13 |
14 | **`object`参数说明**:
15 |
16 | |参数名 |类型|必填|默认值|说明|
17 | |:----|:----|:----|:----|:----|
18 | |zipFilePath|String|是|-|源文件路径,必须是 zip 压缩文件|
19 | |targetPath|String|是|-|解压目标路径,目标目录必须位于用户目录下|
20 | |success|Function|否|-|接口调用成功的回调函数|
21 | |fail|Function|否|-|接口调用失败的回调函数|
22 | |complete|Function|否|-|接口调用结束的回调函数(调用成功、失败都会执行)|
23 |
24 | ### 代码示例
25 |
26 | * 在 js 文件中
27 |
28 | ```js
29 | Page({
30 | onLoad() {
31 | const fs = swan.getFileSystemManager();
32 | this.fs = fs;
33 | },
34 | unzip() {
35 | this.fs.unzip({
36 | zipFilePath: `${swan.env.USER_DATA_PATH}/demo/a.zip`,
37 | targetPath: `${swan.env.USER_DATA_PATH}/demo/b`,
38 | success: res => {
39 | console.log('unzip success', res);
40 | },
41 | fail: err => {
42 | console.log('unzip fail', err)
43 | }
44 | });
45 | }
46 | });
47 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/file/swan-getFileSystemManager.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swan.getFileSystemManager
3 | header: develop
4 | nav: api
5 | sidebar: swan-getFileSystemManager
6 | ---
7 |
8 | > 基础库 3.130.1 开始支持,若访问小程序源代码中的资源,开发者工具暂时只支持媒体文件(音频,视频,图片等),若访问小程序源代码中的文件夹,开发者工具不支持空文件夹,低版本需做[兼容处理](https://smartprogram.baidu.com/docs/develop/swan/compatibility/)。
9 |
10 |
11 |
12 | **解释**:获取全局唯一的文件管理器对象。
13 |
14 | **方法参数**:无
15 |
16 | **返回值**:fileSystemManager
17 |
18 | 若接口调用失败,会抛出一个标准的`Error`对象
19 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/location/swan-offLocationChange.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swan.offLocationChange
3 | header: develop
4 | nav: api
5 | sidebar: swan-offLocationChange
6 | ---
7 |
8 | > 基础库 3.150.1 版本开始支持。
9 |
10 | **解释**:取消监听实时地理位置变化事件
11 |
12 | ## 方法参数
13 |
14 | Function callback
15 |
16 | ### `callback`参数说明
17 |
18 | 实时地理位置变化事件的回调函数
19 |
20 | ## 示例
21 |
22 |
23 | ### 代码示例
24 |
25 | * 在 js 文件中
26 |
27 | ```js
28 | Page({
29 | onLocationChange() {
30 | const noop = res => {
31 | console.log('location change', res);
32 | };
33 | swan.onLocationChange(noop);
34 | swan.offLocationChange(noop);
35 | }
36 | })
37 | ```
38 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/location/swan-startLocationUpdate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swan.startLocationUpdate
3 | header: develop
4 | nav: api
5 | sidebar: swan-startLocationUpdate
6 | ---
7 |
8 | > 基础库 3.150.1 版本开始支持。
9 |
10 | **解释**:开启小程序进入前台时接收位置消息
11 |
12 | ## 方法参数
13 |
14 | Object object
15 |
16 | ### `object` 参数说明
17 |
18 | |属性名 |类型 |必填 |默认值 |说明 |
19 | |---- |----- |----- |----- |---- |
20 | |success |Function |否 | |接口调用成功的回调函数 |
21 | |fail |Function |否 | |接口调用失败的回调函数 |
22 | |complete |Function |否 | |接口调用结束时的回调函数(调用成功、调用失败都会执行)|
23 | ## 示例
24 | ### 代码示例
25 | * 在 js 文件中
26 |
27 | ```js
28 | Page({
29 | startLocationUpdate() {
30 | swan.startLocationUpdate({
31 | success: res => console.log('开启小程序接收位置消息成功'),
32 | fail: err => console.error('开启小程序接收位置消息失败:', err),
33 | complete: msg => console.log('调用开启小程序接收位置消息API完成')
34 | });
35 | }
36 | })
37 | ```
38 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/location/swan-stopLocationUpdate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swan.stopLocationUpdate
3 | header: develop
4 | nav: api
5 | sidebar: swan-stopLocationUpdate
6 | ---
7 |
8 | > 基础库 3.150.1 版本开始支持。
9 |
10 | **解释**:关闭监听实时位置变化
11 |
12 | ## 方法参数
13 |
14 | Object object
15 |
16 | ### `object`参数说明
17 |
18 | |属性名 |类型 |必填 |默认值 |说明 |
19 | |---- |----- |----- |----- |---- |
20 | |success |Function |否| |接口调用成功的回调函数 |
21 | |fail |Function |否 | |接口调用失败的回调函数 |
22 | |complete |Function |否 | |接口调用结束的回调函数(调用成功、调用失败都会执行)|
23 |
24 | ## 示例
25 | ### 代码示例
26 |
27 | * 在 js 文件中
28 |
29 | ```js
30 | Page({
31 | startLocationUpdate() {
32 | swan.stopLocationUpdate({
33 | success: res => console.log('关闭小程序接收位置消息成功'),
34 | fail: err => console.error('关闭小程序接收位置消息失败:', err),
35 | complete: msg => console.log('调用关闭小程序接收位置消息API完成')
36 | });
37 | }
38 | })
39 | ```
40 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/media/arcameracontext_ARCameraContext-reset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ARCameraContext.reset
3 | header: develop
4 | nav: api
5 | sidebar: arcameracontext_ARCameraContext-reset
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:重置相机
12 |
13 |
14 | ## 方法参数
15 |
16 | Object object
17 |
18 | ### `object`参数说明
19 |
20 | |参数 |类型 | 默认值 |必填|说明|
21 | |---- | ---- | ---- |---- |--|
22 | |success| Function | | 否 |接口调用成功的回调函数|
23 | |fail | Function | | 否 |接口调用失败的回调函数|
24 | |complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)|
25 |
26 | ## 示例
27 |
28 | ### 扫码体验
29 |
30 |
31 |

32 |
请使用百度APP扫码
33 |
34 |
35 | ### 图片示例
36 |
37 |
38 | 参见[ARCameraContext.startRecord](https://smartprogram.baidu.com/docs/develop/api/media/arcameracontext_ARCameraContext-startRecord/)示例内容。
39 |
40 | ### 代码示例
41 |
42 | 参见[ARCameraContext.startRecord](https://smartprogram.baidu.com/docs/develop/api/media/arcameracontext_ARCameraContext-startRecord/)示例内容。
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/open/authorize_set.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 获取用户授权设置
3 | header: develop
4 | nav: api
5 | sidebar: authorize_set
6 | ---
7 |
8 |
9 |
10 |
11 | > 在真正需要使用授权接口时,才向用户发起授权申请,并需要在授权申请中说明清楚要使用该功能的理由。
12 |
13 | 1. 开发者可以使用 [swan.getSetting](https://smartprogram.baidu.com/docs/develop/api/open/setting_swan-openSetting/) 获取用户的当前设置。
14 |
15 | 2. 打开设置界面
16 |
17 | * **用户打开设置界面方法**:
18 | 可以在小程序设置界面(“右上角 -> 关于 -> 右上角 -> 权限管理”)中控制对该小程序的授权状态。
19 |
20 | * **开发者打开设置界面方法**:
21 | 可以调用 [swan.openSetting](https://smartprogram.baidu.com/docs/develop/api/open/setting_swan-openSetting/) 调起客户端智能小程序设置界面,返回用户设置的操作结果。
22 |
23 | 3. 开发者可以使用 [swan.authorize](https://smartprogram.baidu.com/docs/develop/api/open/authorize_swan-authorize/) 提前向用户发起授权请求。
24 |
25 | **授权有效期**
26 | 一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。
27 |
28 |
29 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/open/userinfo_signature.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: signature 计算方法
3 | header: develop
4 | nav: api
5 | sidebar: userinfo_signature
6 | ---
7 |
8 |
9 |
10 | ```js
11 | // 生成签名
12 | // appkey 小程序标识
13 | // secret_key 小程序私钥
14 | // swanid 用户swanid
15 | func generageSignature(appKey, secrectKey, swanID string) string {
16 | plainText := fmt.Sprintf("appkey=%ssecret_key=%sswanid=%s", appKey, secrectKey, swanID)
17 | md5Sum := md5.Sum([]byte(plainText))
18 | return hex.EncodeToString(md5Sum[:])
19 | }
20 | ```
21 |
22 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/open/userinfo_swanid.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swanid机制说明
3 | header: develop
4 | nav: api
5 | sidebar: userinfo_swanid
6 | ---
7 |
8 |
9 |
10 |
11 | 由于宿主应用并不一定强制用户登录,因此用户也有可能处于未登录状态。此时开发者可能不希望通过调用`swan.login()`强制用户登录,而是希望直接使用用户的设备标识来关联用户,存储一些非敏感的数据。因此智能小程序还提供一个 SwanID 的标识,可视作用户的设备标识。
12 | * 用户在同一台设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 SwanID 。
13 | * 用户在同一台设备上使用不同开发者所开发的不同智能小程序,得到的 SwanID 是不同的。
14 | 开发者通过对比接口中返回的`swanid_signature`和采用signature 计算方法 的计算值是否一致来判断 swanid 是否有效。
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-closePath.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.closePath
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-closePath
6 | ---
7 |
8 |
9 |
10 | **解释**:关闭一个路径。
11 |
12 |
13 | ## 方法参数
14 |
15 | 无
16 | ## 示例
17 |
18 | 在开发者工具中预览效果
19 |
20 | ### 扫码体验
21 |
22 |
23 |

24 |
请使用百度APP扫码
25 |
26 |
27 | ### 图片示例
28 | 
29 |
30 | ### 代码示例
31 |
32 |
33 | :::codeTab
34 | ```js
35 | const canvasContext = swan.createCanvasContext('myCanvas');
36 | canvasContext.moveTo(100, 100);
37 | canvasContext.lineTo(10, 100);
38 | canvasContext.lineTo(10, 10);
39 | canvasContext.closePath();
40 | canvasContext.stroke();
41 | canvasContext.draw();
42 | ```
43 | :::
44 |
45 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-fill.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.fill
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-fill
6 | ---
7 |
8 |
9 |
10 | **解释**:对当前路径中的内容进行填充。默认的填充色为黑色。
11 |
12 |
13 | ## 方法参数
14 |
15 | 无
16 | ## 示例
17 |
18 |
19 | ### 扫码体验
20 |
21 |
22 |

23 |
请使用百度APP扫码
24 |
25 |
26 | ### 图片示例
27 | 
28 |
29 | ### 代码示例
30 |
31 | 在开发者工具中预览效果
32 | :::codeTab
33 | ```js
34 | const canvasContext = swan.createCanvasContext('myCanvas');
35 | canvasContext.moveTo(100, 100);
36 | canvasContext.lineTo(10, 100);
37 | canvasContext.lineTo(10, 10);
38 | canvasContext.fill();
39 | canvasContext.draw();
40 | ```
41 | :::
42 |
43 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-fillRect.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.fillRect
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-fillRect
6 | ---
7 |
8 |
9 | **解释**:填充一个矩形。
10 |
11 |
12 |
13 | |参数名|属性|必填|默认值|说明|
14 | |----|----|----|---|---|
15 | |`x`|Number|是||矩形路径左上角的 x 坐标。|
16 | | `y`|Number|是||矩形路径左上角的 y 坐标。|
17 | |`width`|Number|是||矩形路径的宽度。|
18 | | `height`|Number|是||矩形路径的高度。|
19 | ## 示例
20 |
21 | 在开发者工具中预览效果
22 |
23 | ### 扫码体验
24 |
25 |
26 |

27 |
请使用百度APP扫码
28 |
29 |
30 | ### 图片示例
31 | 
32 |
33 | ### 代码示例
34 |
35 |
36 | :::codeTab
37 | ```js
38 | const canvasContext = swan.createCanvasContext('myCanvas');
39 | canvasContext.setFillStyle('blue');
40 | canvasContext.fillRect(30, 30, 150, 75);
41 | canvasContext.draw();
42 | ```
43 | :::
44 |
45 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-lineTo.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.lineTo
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-lineTo
6 | ---
7 |
8 |
9 |
10 | **解释**:lineTo 方法增加一个新点,然后创建一条从上次指定点到目标点的线。
11 |
12 |
13 | ## 方法参数
14 |
15 | |参数名|属性|必填|默认值|说明|
16 | |----|----|----|---|---|
17 | |`x`|Number|是|| 目标位置的 x 坐标|
18 | | `y`|Number|是|| 目标位置的 y 坐标|
19 | ## 示例
20 |
21 | 在开发者工具中预览效果
22 |
23 | ### 扫码体验
24 |
25 |
26 |

27 |
请使用百度APP扫码
28 |
29 |
30 | ### 图片示例
31 | 
32 |
33 | ### 代码示例
34 |
35 |
36 | :::codeTab
37 |
38 | ```js
39 | const canvasContext = swan.createCanvasContext('myCanvas');
40 | canvasContext.moveTo(10, 10);
41 | canvasContext.rect(10, 10, 100, 50);
42 | canvasContext.lineTo(110, 60);
43 | canvasContext.stroke();
44 | canvasContext.draw();
45 | ```
46 | :::
47 |
48 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-moveTo.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.moveTo
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-moveTo
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:把路径移动到画布中的指定点,不创建线条。
12 |
13 |
14 | ## 方法参数
15 |
16 | |参数名|属性|必填|默认值|说明|
17 | |----|----|----|---|---|
18 | | `x`|Number|是|| 目标位置的 x 坐标|
19 | | `y`|Number|是||目标位置的 y 坐标|
20 | ## 示例
21 |
22 | 在开发者工具中预览效果
23 |
24 | ### 扫码体验
25 |
26 |
27 |

28 |
请使用百度APP扫码
29 |
30 |
31 | ### 图片示例
32 | 
33 |
34 | ### 代码示例
35 |
36 |
37 | :::codeTab
38 | ```js
39 | const canvasContext = swan.createCanvasContext('myCanvas');
40 | canvasContext.moveTo(10, 10);
41 | canvasContext.lineTo(100, 10);
42 | canvasContext.moveTo(10, 100);
43 | canvasContext.lineTo(100, 100);
44 | canvasContext.stroke();
45 | canvasContext.draw();
46 | ```
47 | :::
48 |
49 |
50 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-rect.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.rect
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-rect
6 | ---
7 |
8 |
9 |
10 | **解释**:创建一个矩形。
11 |
12 |
13 | ## 方法参数
14 |
15 |
16 | |参数名|属性|必填|默认值|说明|
17 | |----|----|----|---|---|
18 | | `x`|Number|是|| 矩形路径左上角的 x 坐标。|
19 | |`y`|Number|是|| 矩形路径左上角的 y 坐标。|
20 | | `width`|Number|是|| 矩形路径的宽度。|
21 | | `height`|Number|是|| 矩形路径的高度。|
22 | ## 示例
23 |
24 | 在开发者工具中预览效果
25 |
26 | ### 扫码体验
27 |
28 |
29 |

30 |
请使用百度APP扫码
31 |
32 |
33 | ### 图片示例
34 | 
35 |
36 | ### 代码示例
37 |
38 |
39 | :::codeTab
40 | ```js
41 | const canvasContext = swan.createCanvasContext('myCanvas');
42 | canvasContext.rect(30, 30, 150, 75);
43 | canvasContext.setFillStyle('blue');
44 | canvasContext.fill();
45 | canvasContext.draw();
46 | ```
47 | :::
48 |
49 |
50 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-save.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.save
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-save
6 | ---
7 |
8 |
9 |
10 | **解释**:保存当前的绘图上下文。
11 |
12 |
13 |
14 | ## 示例
15 |
16 | 在开发者工具中预览效果
17 |
18 | ### 扫码体验
19 |
20 |
21 |

22 |
请使用百度APP扫码
23 |
24 |
25 | ### 图片示例
26 | 
27 |
28 | ### 代码示例
29 |
30 |
31 | :::codeTab
32 | ```js
33 | const canvasContext = swan.createCanvasContext('myCanvas');
34 | // 保存默认填充样式
35 | canvasContext.save();
36 | canvasContext.setFillStyle('blue');
37 | canvasContext.fillRect(10, 10, 150, 100);
38 |
39 | // 恢复到以前保存的状态
40 | canvasContext.restore();
41 | canvasContext.fillRect(50, 50, 150, 100);
42 |
43 | canvasContext.draw();
44 | ```
45 | :::
46 |
47 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-setStrokeStyle.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.setStrokeStyle
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-setStrokeStyle
6 | ---
7 |
8 |
9 |
10 | **解释**:设置边框颜色。
11 |
12 |
13 | ## 方法参数
14 |
15 | [Color](/develop/api/canvas_color/) color
16 | ## 示例
17 |
18 | 在开发者工具中预览效果
19 |
20 | ### 扫码体验
21 |
22 |
23 |

24 |
请使用百度APP扫码
25 |
26 |
27 | ### 图片示例
28 | 
29 |
30 | ### 代码示例
31 |
32 |
33 | :::codeTab
34 | ```js
35 | const canvasContext = this.createCanvasContext('myCanvas');
36 | canvasContext.setStrokeStyle('blue');
37 | canvasContext.strokeRect(30, 30, 150, 75);
38 | canvasContext.draw();
39 | ```
40 | :::
41 |
42 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-stroke.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.stroke
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-stroke
6 | ---
7 |
8 |
9 | **解释**:画出当前路径的边框。默认颜色为黑色。
10 |
11 |
12 | ## 方法参数
13 |
14 | 无
15 | ## 示例
16 |
17 | 在开发者工具中预览效果
18 |
19 | ### 扫码体验
20 |
21 |
22 |

23 |
请使用百度APP扫码
24 |
25 |
26 | ### 图片示例
27 | 
28 |
29 |
30 | ### 代码示例
31 |
32 |
33 | :::codeTab
34 | ```js
35 | const canvasContext = swan.createCanvasContext('myCanvas');
36 | canvasContext.moveTo(100, 100);
37 | canvasContext.lineTo(10, 100);
38 | canvasContext.lineTo(10, 10);
39 | canvasContext.stroke();
40 | canvasContext.draw();
41 | ```
42 | :::
43 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-strokeRect.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.strokeRect
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-strokeRect
6 | ---
7 |
8 |
9 |
10 | **解释**:画一个矩形(非填充)。
11 |
12 |
13 | ## 方法参数
14 |
15 |
16 | |属性名 |类型 |必填 | 默认值 |说明|
17 | |:---- |:---- |:---- |:----|:----|
18 | | `x`|Number |是||矩形路径左上角的 x 坐标。|
19 | | `y`|Number |是||矩形路径左上角的 y 坐标。|
20 | | `width`|Number |是||矩形路径的宽度。|
21 | | `height`|Number |是||矩形路径的高度。|
22 | ## 示例
23 |
24 | 在开发者工具中预览效果
25 |
26 | ### 扫码体验
27 |
28 |
29 |

30 |
请使用百度APP扫码
31 |
32 |
33 | ### 图片示例
34 | 
35 |
36 | ### 代码示例
37 |
38 |
39 | :::codeTab
40 | ```js
41 | const canvasContext = swan.createCanvasContext('myCanvas');
42 | canvasContext.setStrokeStyle('blue');
43 | canvasContext.strokeRect(30, 30, 150, 75);
44 | canvasContext.draw();
45 | ```
46 | :::
47 |
48 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasContext-transform.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasContext.transform
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasContext-transform
6 | ---
7 |
8 |
9 | **解释**:使用矩阵多次叠加当前变换的方法。
10 |
11 | ## 方法参数
12 |
13 |
14 | |属性名 |类型 |必填 | 默认值 |说明|
15 | |:---- |:---- |:---- |:----|:----|
16 | | `scaleX`|Number|是|| 水平缩放 |
17 | | `skewX`|Number|是|| 水平倾斜 |
18 | | `skewY`|Number|是|| 垂直倾斜 |
19 | | `scaleY`|Number|是|| 垂直缩放|
20 | | `translateX`|Number|是|| 水平移动 |
21 | | `translateY`|Number|是|| 垂直移动 |
22 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/canvas_CanvasGradient.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CanvasGradient
3 | header: develop
4 | nav: api
5 | sidebar: canvas_CanvasGradient
6 | ---
7 | **解释**:渐变对象,[CanvasContext.createLinearGradient](http://localhost:4000/docs/develop/api/show/canvas_CanvasContext-createLinearGradient/)的返回值。
8 |
9 | ### 方法列表
10 |
11 | |方法 |说明 |
12 | |---- | ---- |
13 | |[addColorStop](/develop/api/show/canvas_CanvasGradient-addColorStop/)|创建一个颜色的渐变点。|
--------------------------------------------------------------------------------
/program-docs/docs/develop/api/show/createanimation_Animationn-scaleZ.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Animation.scaleZ
3 | header: develop
4 | nav: api
5 | sidebar: createanimation_Animation-scaleZ
6 | ---
7 |
8 |
9 |
10 | **解释**: 缩放 Z 轴
11 |
12 | ## 方法参数
13 |
14 | Number sz
15 |
16 | ### 参数说明
17 |
18 | 在Z轴缩放sz倍数
19 |
20 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/appendix/frequently.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 其它常见问题
3 | header: develop
4 | nav: faq
5 | sidebar: frequently
6 | ---
7 |
8 | #### Q:实现分享功能需要开通什么权限吗?
9 |
10 | A:实现分享功能,不需要开通权限,分享出去的链接在测试环境是不能回流到小程序的,必须是线上的环境才可以。
11 |
12 | #### Q:百度小程序有没有获取代理IP地址的接口?
13 |
14 | A:暂时没有。
15 |
16 | #### Q:小程序审核发布后,多久可以生效?
17 |
18 | A:最长不会超过48小时。
19 |
20 | #### Q:请教下,一个小程序可以绑定两个熊掌ID吗?
21 |
22 | A:不支持,一个小程序只能绑定一个熊掌ID。
23 |
24 |
25 |
26 | #### Q:百度小程序绑定的熊掌 ID 还可以更改吗?
27 |
28 | A:目前是不支持把熊掌ID修改成其他的百家号。
29 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/collection.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: collection
3 | header: develop
4 | nav: cloud
5 | sidebar: collection
6 | ---
7 |
8 |
9 |
10 | **解释**:获取数据库集合的引用。
11 |
12 | **参数说明**
13 | 该方法传入一个`name`参数,参数类型为字符串类型,指定需引用的集合名称。
14 |
15 |
16 | **代码示例**
17 |
18 | ```js
19 | const db = swan.cloud.database();
20 | const testCollection = db.collection('users');
21 | ```
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/collection_doc.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: collection.doc
3 | header: develop
4 | nav: cloud
5 | sidebar: collection_doc
6 | ---
7 |
8 |
9 | **解释**:获取数据库集合中记录的引用。
10 |
11 | **参数说明**
12 | 该方法传入一个`ID`参数,参数类型为字符串类型,指定需引用的记录`ID`。
13 |
14 |
15 |
16 | **代码示例**
17 |
18 | ```js
19 | const doc = db.collection('users').doc('docId');
20 | ```
21 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/collection_field.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: collection.field
3 | header: develop
4 | nav: cloud
5 | sidebar: collection_field
6 | ---
7 |
8 |
9 |
10 | **解释**:指定返回结果中记录需返回的字段。
11 |
12 | **参数说明**
13 | 该方法的传入参数为必填参数,参数类型为对象类型,用来指定需返回的字段。
14 |
15 |
16 | **代码示例**
17 |
18 | ```js
19 | swan.cloud.init({
20 | env: 'envId'
21 | });
22 | const db = swan.cloud.database();
23 | db.collection('users')
24 | .field({
25 | age: true,
26 | address: true,
27 | tags: true
28 | })
29 | .get()
30 | .then(res => {
31 | console.log(res);
32 | })
33 | .catch(err => {
34 | console.warn(err);
35 | });
36 |
37 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/collection_limit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: collection.limit
3 | header: develop
4 | nav: cloud
5 | sidebar: collection_limit
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:指定查询结果集数量上限。
12 |
13 |
14 | **参数说明**
15 | 该方法的传入参数为必填参数,参数类型为数字类型,用来定义最大结果集返回数量,最大为20。
16 |
17 | **代码示例**
18 |
19 | ```js
20 | swan.cloud.init({
21 | env: 'envId'
22 | });
23 | const db = swan.cloud.database();
24 | db.collection('users')
25 | .limit(10) // 获取10条记录
26 | .get()
27 | .then(res => {
28 | console.log(res);
29 | })
30 | .catch(err => {
31 | console.warn(err);
32 | });
33 | ```
34 |
35 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: db.command
3 | header: develop
4 | nav: cloud
5 | siderbar: command
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库相关查询及更新指令。
11 |
12 | **代码示例**
13 |
14 | ```js
15 | const _ = db.command
16 | ```
17 |
18 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_and.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.and
3 | header: develop
4 | nav: cloud
5 | siderbar: command_and
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询指令,用于连接多个筛选条件,各条件之间满足逻辑"与"的关系,该指令可接受数组类型的参数。
11 |
12 | 例如,筛选出数据表中age大于25且小于50的用户
13 |
14 | **代码示例**
15 |
16 | 级联查询写法:
17 |
18 | ```js
19 | swan.cloud.init({
20 | env: 'envId'
21 | });
22 | const db = swan.cloud.database();
23 | db.collection('users')
24 | .where({
25 | age: _.gt(25).and(_.lt(50))
26 | })
27 | ```
28 |
29 | 前置查询写法:
30 |
31 | ```js
32 | swan.cloud.init({
33 | env: 'envId'
34 | });
35 | const db = swan.cloud.database();
36 | db.collection('users')
37 | .where({
38 | age: _.and(_.gt(25), _.lt(50)) // and指令同时支持传入数组,_.and([_.gt(25), _.lt(50)])
39 | })
40 | ```
41 |
42 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_eq.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.eq
3 | header: develop
4 | nav: cloud
5 | siderbar: command_eq
6 | ---
7 |
8 |
9 | **解释**:数据库查询指令,用于查询字段等于某个值,该指令接受一个参数,可以是`number`,`string`,`object`,`boolean`,`array`。
10 |
11 | **代码示例**
12 |
13 | 例如,查询一条标题为'smartprogram'的新闻时,可以有以下两种查询方式:
14 |
15 | **传入值的方式**
16 |
17 | ```js
18 | swan.cloud.init({
19 | env: 'envId'
20 | });
21 | const db = swan.cloud.database();
22 | db.collection('news')
23 | .where({
24 | title: 'smartprogram'
25 | })
26 | ```
27 |
28 | **查询指令方式**
29 |
30 | ```js
31 | swan.cloud.init({
32 | env: 'envId'
33 | });
34 | const db = swan.cloud.database();
35 | const _ = db.command;
36 | db.collection('news')
37 | .where({
38 | title: _.eq('smartprogram')
39 | })
40 | ```
41 |
42 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_gt.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.gt
3 | header: develop
4 | nav: cloud
5 | siderbar: command_gt
6 | ---
7 |
8 |
9 | **解释**:数据库查询指令,表示查询的字段大于某个值。
10 |
11 | **代码示例**
12 |
13 | 例如,查询数据表中age大于25的所有用户
14 |
15 | ```js
16 | swan.cloud.init({
17 | env: 'envId'
18 | });
19 | const db = swan.cloud.database();
20 | const _ = db.command;
21 | db.collection('users')
22 | .where({
23 | age: _.gt(25)
24 | })
25 | .get({
26 | success: users => console.log(users);
27 | fail: err => console.warn(err);
28 | });
29 | ```
30 |
31 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_gte.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.in
3 | header: develop
4 | nav: cloud
5 | siderbar: command_in
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询筛选指令,表示查询字段的值需在指定的数组中,传入的参数必须为Array类型。
11 |
12 | 例如,查询age为25或者26的用户
13 |
14 | **代码示例**
15 |
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .where({
24 | age: _.in([25, 26])
25 | })
26 | .get({
27 | success: users => console.log(users);
28 | fail: err => console.warn(err);
29 | });
30 | ```
31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_in.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.in
3 | header: develop
4 | nav: cloud
5 | siderbar: command_in
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询筛选指令,表示查询字段的值需在指定的数组中,传入的参数必须为Array类型。
11 |
12 | 例如,查询age为25或者26的用户
13 |
14 | **代码示例**
15 |
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .where({
24 | age: _.in([25, 26])
25 | })
26 | .get({
27 | success: users => console.log(users);
28 | fail: err => console.warn(err);
29 | });
30 | ```
31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_inc.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.inc
3 | header: develop
4 | nav: cloud
5 | siderbar: command_inc
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库更新指令,用于将记录中的某个字段自增加指定的值。
11 |
12 | **代码示例**
13 |
14 | 将age的值自增加1:
15 |
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .doc('docId')
24 | .update({
25 | age: _.inc(1)
26 | })
27 | ```
28 |
29 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_lt.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.lt
3 | header: develop
4 | nav: cloud
5 | siderbar: command_lt
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:数据库查询指令,表示查询的字段小于某个值。
12 |
13 | **代码示例**
14 |
15 | 例如,查询数据表中age小于25的所有用户
16 |
17 | ```js
18 | swan.cloud.init({
19 | env: 'envId'
20 | });
21 | const db = swan.cloud.database();
22 | const _ = db.command;
23 | db.collection('users')
24 | .where({
25 | age: _.lt(25)
26 | })
27 | .get({
28 | success: users => console.log(users);
29 | fail: err => console.warn(err);
30 | });
31 | ```
32 |
33 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_lte.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.lte
3 | header: develop
4 | nav: cloud
5 | siderbar: command_lte
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询指令,表示查询的字段小于或等于某个值。
11 |
12 | **代码示例**
13 |
14 | 例如,查询数据表中age小于或等于25的所有用户
15 |
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .where({
24 | age: _.lte(25)
25 | })
26 | .get({
27 | success: users => console.log(users);
28 | fail: err => console.warn(err);
29 | });
30 | ```
31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_mul.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.mul
3 | header: develop
4 | nav: cloud
5 | siderbar: command_mul
6 | ---
7 |
8 |
9 | **解释**:数据库更新指令,用于将记录中的某个字段自乘指定的值。
10 |
11 | **代码示例**
12 |
13 | 将age的值乘以2:
14 |
15 | ```js
16 | swan.cloud.init({
17 | env: 'envId'
18 | });
19 | const db = swan.cloud.database();
20 | const _ = db.command;
21 | db.collection('users')
22 | .doc('docId')
23 | .update({
24 | age: _.mul(2)
25 | })
26 | ```
27 |
28 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_neq.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.neq
3 | header: develop
4 | nav: cloud
5 | siderbar: command_neq
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询指令,与command.eq指令相反,表示查询的字段不等于某个值。
11 |
12 | **代码示例**
13 |
14 | ```js
15 | swan.cloud.init({
16 | env: 'envId'
17 | });
18 | const db = swan.cloud.database();
19 | const _ = db.command;
20 | db.collection('users')
21 | .where({
22 | address: _.neq('beijing')
23 | })
24 | ```
25 |
26 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_nin.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.nin
3 | header: develop
4 | nav: cloud
5 | siderbar: command_nin
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库查询筛选指令,与command.in相反,表示查询字段的值需不在指定的数组中,传入的参数必须为Array类型。
11 |
12 | 例如,查询age不为25或者26的用户
13 |
14 | **代码示例**
15 |
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .where({
24 | age: _.nin([25, 26])
25 | })
26 | .get({
27 | success: users => console.log(users);
28 | fail: err => console.warn(err);
29 | });
30 | ```
31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_pop.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.pop
3 | header: develop
4 | nav: cloud
5 | siderbar: command_pop
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库更新指令,该指令需要操作一个类型为数组的字段,并删除其最后一个元素。
11 |
12 | **代码示例**
13 |
14 | ```js
15 | swan.cloud.init({
16 | env: 'envId'
17 | });
18 | const db = swan.cloud.database();
19 | const _ = db.command;
20 | db.collection('users')
21 | .doc('docId')
22 | .update({
23 | tags: _.pop()
24 | })
25 | ```
26 |
27 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_remove.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.remove
3 | header: develop
4 | nav: cloud
5 | siderbar: command_remove
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:数据库更新指令,用于删除记录中的某个字段。
12 |
13 | 删除age字段:
14 |
15 | **代码示例**
16 | ```js
17 | swan.cloud.init({
18 | env: 'envId'
19 | });
20 | const db = swan.cloud.database();
21 | const _ = db.command;
22 | db.collection('users')
23 | .doc('docId')
24 | .update({
25 | age: _.remove()
26 | })
27 | ```
28 |
29 | 删除多条记录:
30 |
31 | **代码示例**
32 |
33 | ```js
34 | // 需在 Server 端进行操作(云函数),通过 where 语句选取多条记录执行删除,
35 | // 使用 async await 语法
36 | const cloud = require('swan-server-sdk')
37 | const db = cloud.database()
38 | const _ = db.command
39 |
40 | exports.main = async (event, context) => {
41 | try {
42 | return await db.collection('todos').where({
43 | done: true
44 | }).remove()
45 | } catch(e) {
46 | console.error(e)
47 | }
48 | }
49 | ```
50 |
51 | 用户只能操作自己的数据(自己的Todo),不能操作其他人的数据(其他人的待办事项),需要引入权限控制。
52 |
53 |
54 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_shift.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.shift
3 | header: develop
4 | nav: cloud
5 | siderbar: command_shift
6 | ---
7 |
8 |
9 |
10 |
11 | **解释**:数据库更新指令,该指令需要操作一个类型为数组的字段,并删除其第一个元素。
12 |
13 | **代码示例**
14 |
15 | ```js
16 | swan.cloud.init({
17 | env: 'envId'
18 | });
19 | const db = swan.cloud.database();
20 | const _ = db.command;
21 | db.collection('users')
22 | .doc('docId')
23 | .update({
24 | tags: _.shift()
25 | })
26 | ```
27 |
28 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/command_unshift.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: command.unshift
3 | header: develop
4 | nav: cloud
5 | siderbar: command_unshift
6 | ---
7 |
8 |
9 |
10 | **解释**:数据库更新指令,该指令需要操作一个类型为数组的字段,并向其头部插入一个或多个元素。传入参数类型需为数组类型。
11 |
12 | **代码示例**
13 |
14 | ```js
15 | swan.cloud.init({
16 | env: 'envId'
17 | });
18 | const db = swan.cloud.database();
19 | const _ = db.command;
20 | db.collection('users')
21 | .doc('docId')
22 | .update({
23 | tags: _.unshift(['smartprogram'])
24 | })
25 | ```
26 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_database/database.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: database
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_database_database
6 | ---
7 |
8 |
9 |
10 | **解释**:获取数据库的引用。
11 |
12 | **参数说明**
13 | 该方法传入一个可选参数,参数类型为对象类型,指定引用的数据库的环境ID。如果该方法中未传入指定环境ID,则默认使用`swan.cloud.init`方法中传入的环境ID作为获取数据库引用的环境ID。
14 |
15 | **代码示例**
16 |
17 | 获取默认环境的数据库引用:
18 |
19 | ```js
20 | const db = swan.cloud.database();
21 | ```
22 |
23 | 获取指定环境的数据库引用:
24 |
25 | ```js
26 | const db = swan.cloud.database({
27 | env: 'test-envid'
28 | });
29 | ```
30 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_essentials.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云数据库
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_essentials
6 | ---
7 |
8 |
9 | 云开发提供了一个 NoSQL 文档数据库,可供开发者存储、查询数据。开发者可以在智能小程序端和云函数端通过 SDK 对数据库进行操作。按照云数据库的 NoSQL 数据模型,一个云数据库可以拥有多个集合(相当于关系型数据库中表的概念),每一个集合都可以包含若干条记录,每一条记录都是一则类似 JSON 格式的文档,包含一系列字段和对应的值。开发者可以通过指定各类检索条件、排序和数量限制来查询云数据库中的记录。
10 |
11 | 下面是一条记录的简单示例。
12 |
13 | **代码示例**
14 |
15 | ```json
16 | {
17 | "_id": "358a732d-bd8d-45a5-bd9c-9874e1a654c4",
18 | "title": "一个标题",
19 | "content": "内容",
20 | "author": "作者用户ID",
21 | "comments": [
22 | {
23 | "message": "评论内容",
24 | "user": "评论用户ID"
25 | },
26 | {
27 | "message": "另一个评论内容",
28 | "user": "另一个评论用户ID"
29 | }
30 | ]
31 | }
32 | ```
33 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_essentials_function.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云函数
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_essentials_function
6 | ---
7 |
8 |
9 |
10 |
11 | 借助云开发中提供的云函数能力,开发者可以在托管的环境中运行智能小程序的服务端代码,云函数引擎会根据业务对计算资源的使用规律自动调节其规模,开发者亦无需配置、管理、更新和修补自己的服务器。开发者可以在智能小程序端通过 SDK 触发运行云函数,在服务端执行应用逻辑,并将结果返回给智能小程序端。在云函数内,开发者可以访问云数据库和云存储中的数据,还可以调用其他云函数,以实现更复杂的服务端业务编排。
12 |
13 | 云函数相比于传统的开发者自建服务端有以下优势:
14 | * 集成度高。云函数内建智能小程序服务端SDK,与智能小程序开发无缝整合。
15 | * 运维成本低。开发者仅需关注业务逻辑开发,云函数提供运行环境和底层资源的可用性保障,运维成本大幅下降。
16 | * 响应速度快。借助百度智能云容器技术,提供ms级别的响应能力,用户对资源调度和函数启动过程基本无感知。
17 | * 扩展能力强。根据业务并发量所需快速扩展资源,在高并发下依然能保障服务的可用性。
18 |
19 |
20 | 比如我们如下定义一个云函数,命名为 add ,功能是将传入的两个参数 a 和 b 相加:
21 |
22 | **代码示例**
23 | ```
24 | const cloud = require('swan-server-sdk');
25 | exports.main = (event, context) => {
26 | let { a, b} = event
27 | let { OPENID, APPID } = cloud.getSwanContext()
28 | let sum = a + b
29 |
30 | return {
31 | OPENID,
32 | APPID,
33 | sum
34 | }
35 | }
36 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_essentials_storage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云存储
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_essentials_storage
6 | ---
7 |
8 |
9 |
10 | 云开发提供的对象存储能力拥有一块云端存储空间,能够允许开发者在智能小程序中上传和下载文件,例如图片、音频、视频或其他各类内容。同时,在云函数中通过服务端 SDK,也可以管理这些文件。
11 |
12 | 下面是一个简单的示例。
13 |
14 | **代码示例**
15 | ```
16 | // 用户选择一张图片,上传到云存储空间
17 | swan.chooseImage({
18 | success: chooseResult => {
19 | swan.cloud.uploadFile({
20 | // 指定上传到的云路径
21 | cloudPath: 'my-photo.png',
22 | // 指定要上传的文件的小程序临时文件路径
23 | filePath: chooseResult.tempFilePaths[0],
24 | // 成功回调
25 | success: res => {
26 | console.log('上传成功', res)
27 | },
28 | fail: err => {
29 | console.log('上传失败', err)
30 | }
31 | })
32 | },
33 | })
34 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_essentials_user.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云开发用户集成介绍
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_essentials_user
6 | ---
7 |
8 |
9 |
10 |
11 | 云开发整合了智能小程序使用者的用户体系,无论用户是否已经登录宿主应用,都会对应一个唯一ID。开发者可以利用这个用户ID在云函数中扩展自己的用户相关业务逻辑,也可以将它应用在云存储和数据库资源中。通过云开发中托管资源的安全规则,在使用智能小程序端 SDK 访问这些资源时,云开发可以识别用户身份,进而实现访问权限控制。在未来的版本中,开发中还可以自己定义不同资源的访问安全规则,实现更灵活的权限控制。
12 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_info.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云开发介绍
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_info
6 | ---
7 |
8 |
9 | 智能小程序云开发可以为开发者提供一种 Serverless 的小程序开发模式,开发者无需服务器的维护经验,既可开发上线一个服务端功能完备的智能小程序。
10 |
11 | 智能小程序云开发服务目前提供了数据存储、云函数、数据库等云端服务能力,开发者基于智能小程序开放的云开发api进行开发,就可获得智能小程序的云开发服务能力,无需关心服务器底层的运维设施,更加聚焦于业务本身的实现,可以实现智能小程序的快速迭代和快速部署。
12 |
13 | **云开发是一种新的小程序开发模式,适用于擅长前端技术栈或者不具备服务器运维部署资源的小程序开发团队。**
14 |
15 | 云开发目前提供的核心能力如下:
16 |
17 | * 云数据库:云开发提供了基于 JSON 数据格式存储的云端数据库,开发者可以在智能小程序前端对云数据库进行增删改查的操作,同时也可以在云函数中对数据库进行操作。
18 | * 云存储:开发者可以在智能小程序前端直接上传/下载文件,无需自建存储。
19 | * 云函数:云函数是指在云端可执行的代码,开发者无需服务器的管理成本,可在开发者工具中对云函数进行开发、部署、同步。
20 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/cloud_init.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swan.cloud.init
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_init
6 | ---
7 |
8 |
9 | **解释**:使用智能小程序云开发API之前,必须调用该方法初始化云开发环境,如不进行初始化设置,将无法获取开发者当前的环境配置。
10 |
11 | swan.cloud.init 方法的定义如下:
12 |
13 | **代码示例1**
14 | ```js
15 | function init(options): void
16 | ```
17 |
18 | 此方法接受一个可选的 options 参数,方法没有返回值。方法只能调用一次,多次调用时只有第一次调用生效。
19 |
20 | **参数说明:**
21 | 该方法的传入参数类型为对象类型,用来定义云开发的默认配置,该配置会作为之后调用其他所有云`API`的默认配置,参数说明如下:
22 |
23 | |字段|类型|必填|默认值|说明|
24 | |---|---|---|---|---|
25 | |env|String/Object|是| |环境配置,传入字符串形式的环境`ID`可以指定所有服务的默认环境,传入对象可以分别指定各个服务的默认环境,见下方详细定义|
26 |
27 | 当`env`传入参数为对象时,可以指定各个服务的默认环境,字段如下:
28 |
29 | |字段|类型|必填|默认值|说明|
30 | |---|---|---|---|---|
31 | |database|String|是| |数据库默认环境配置|
32 | |functions|String|是| |云函数默认环境配置|
33 | |storage|String|是| |云存储默认环境配置|
34 |
35 | **代码示例1**
36 | ```js
37 | swan.cloud.init({
38 | env: 'test-env'
39 | })
40 | ```
41 |
42 | **代码示例2**
43 | ```js
44 | swan.cloud.init({
45 | env: {
46 | database: 'test-database',
47 | functions: 'test-functions',
48 | storage: 'test-storage'
49 | }
50 | })
51 | ```
52 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/console.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 概览
3 | header: develop
4 | nav: cloud
5 | sidebar: console
6 | ---
7 |
8 |
9 |
10 | 概览可查看当前环境的环境名称,环境 id,资源使用量和套餐内容。
11 |
12 | 
13 |
14 | ### 创建环境
15 |
16 | 智能小程序云开发提供2个免费的云环境。
17 |
18 | 可通过当前环境列表点击`创建环境`进入创建环境的页面。
19 |
20 | 
21 |
22 | 在创建环境的页面,填入环境名称和选择环境后,点击确认,即可创建新环境。
23 |
24 | 
25 |
26 | 环境创建成功后会自动进入概览页面。
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/console_data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云数据库
3 | header: develop
4 | nav: cloud
5 | sidebar: console_data
6 | ---
7 |
8 |
9 | 管理数据库集合、记录、索引设置。
10 |
11 | ### 合集
12 |
13 | 合集操作包括创建合集,删除合集。
14 |
15 | 
16 |
17 | 右击合集名称可删除合集或拷贝合集名称
18 |
19 | 
20 |
21 | ### 文档
22 |
23 | 通过控制台可进行文档的新建,删除,导入,导出,查询。
24 |
25 | 右击文档名称可以删除或拷贝文档 id
26 |
27 | 
28 |
29 | 对于单个文档可进行字段的查看,新增,修改和删除。
30 |
31 | 字段编辑可以修改字段的 key, 类型和值。其中类型可选为`string`, `number`, `boolean`, `null`, `array`, `object`, `date`, `geopoint`
32 |
33 | 
34 |
35 | ### 索引
36 |
37 | 索引管理可以新建,查询,删除索引。
38 |
39 | 添加索引可选唯一非唯一索引。可以添加多个字段。
40 |
41 | > 注意唯一索引需要保证所有文档中该字段的值都不相等。否则索引会创建失败。
42 |
43 | 
44 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/console_function.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云函数
3 | header: develop
4 | nav: cloud
5 | sidebar: console_function
6 | ---
7 |
8 |
9 |
10 | 云函数面板可管理云函数、查看调用日志。
11 |
12 | ### 函数管理
13 |
14 | 可新建函数,查询,测试,配置,删除云函数。
15 |
16 | 
17 |
18 | #### 新建云函数
19 |
20 | 点击新建云函数,输入函数名和描述可新建云函数。云函数名支持英文字母大小写、数字、- 和 _,第一个字符只能以字母开头,最后一个字符不能为连接符或者下划线,名称长度 1-40。云函数描述不能超过 85 个字符。
21 |
22 | 创建云函数后,默认生成一个空白函数,空白函数的返回值为输入参数。可在开发者工具编辑器中修改、部署云函数。
23 |
24 | 云函数将从index.js中的main方法执行,请确保文件中含有同名函数main
25 |
26 | 
27 |
28 | #### 配置云函数
29 |
30 | 配置云函数时可配置环境变量。云函数运行时会注入到`process.env`
31 |
32 |
33 | 
34 |
35 | #### 云函数测试
36 |
37 | 点击云函数测试可测试云函数。测试云函数的参数为 json 格式。编辑好参数点击运行测试即可看到测试结果。
38 |
39 |
40 | 
41 |
42 |
43 | ### 日志
44 |
45 | 日志可按函数名筛选和按request ID 搜索。
46 |
47 | 
48 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/console_storage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云存储
3 | header: develop
4 | nav: cloud
5 | sidebar: console_storage
6 | ---
7 |
8 |
9 | 云存储控制面板可查看管理文件。包括上传文件,新建文件夹,删除文件。
10 |
11 | 点击文件夹可进入文件夹。
12 |
13 | 
14 |
15 | 点击文件会显示文件信息。
16 |
17 | 
18 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/guide/editor.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 编辑器中的云函数操作
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_function_guide_editor
6 | ---
7 |
8 |
9 |
10 | ## 配置云函数本地目录
11 | 在project.config.json文件中设置cloudfunctionRoot字段,即可指定云函数的本地目录,当通过创建云函数项目打开工程时,该字段自动生成。
12 |
13 | ## 云函数操作
14 | 在编辑器中可通过在云函数目录上点击鼠标右键来完成相应操作,目前包括以下功能:
15 |
16 | - 查看当前环境
17 | - 切换环境
18 | - 新建 Node.js 云函数
19 | - 下载线上环境的云函数列表并在本地生成空文件夹
20 | - 下载线上环境的云函数代码并覆盖本地
21 | - 上传并部署云函数到线上环境
22 |
23 | ## 查看和切换环境
24 | 在编辑器云函数根目录上右键,可查看当前的云环境,同时可在二级菜单切换环境,切换环境后会自动同步当前云环境列表(不会自动下载代码)。
25 |
26 | ## 新建 Node.js 云函数
27 | 在云函数根目录上点击右键,可以创建一个新的 Node.js 云函数,开发者工具在本地创建出以下目录和文件:
28 |
29 | - 云函数目录:以云函数名字命名的目录,包含云函数的所有代码
30 | - index.js:云函数入口文件,云函数被调用时会执行的入口文件中导出的 main 方法
31 | - package.json:npm 包定义文件,默认定义了最新 swan-server-sdk 依赖
32 |
33 | **注意:** 新建的云函数在右键上传前需要在本地用命令行 npm install 来安装依赖包
34 |
35 | ## 下载云函数列表
36 | 右键点击同步云函数列表,可以将当前云环境包含的所有云函数同步到本地,并以云函数名称新建相应的目录(如果该目录不存在)。
37 | **注意:** 新建的目录中不包含任何文件,如果需要查看云函数的代码需要右键下载云函数
38 |
39 | ## 下载云函数
40 | 右键点击下载云函数,可以将线上云函数下载到本地硬盘目录中。
41 |
42 | ## 上传并部署
43 | 右键点击上传并部署,可以将选中的云函数目录上传并部署到线上环境中。
44 |
45 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/guide/guide.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 环境
3 | header: develop
4 | nav: guide
5 | sidebar: guide
6 | ---
7 |
8 |
9 |
10 | 环境是云开发各类资源的承载集合。环境与环境之间是完全隔离的,也就是说,不同环境下,所有云上托管资源(数据库、存储、函数等)均不互通。使用云开发服务必须至少创建一个环境,每个环境均有一个唯一的环境 ID,可以在云开发控制台的概览页面找到。
11 |
12 | 一个智能小程序最多可以创建 2 个环境,建议的实践为创建一个开发测试环境和一个线上生产环境。利用环境间数据隔离的特性,在日常开发时使用开发测试环境,正式发布的版本使用线上生产环境,这样可以在开发调试智能小程序的同时保证生产环境数据的稳定性。
13 |
14 | 初始化云开发 SDK 时,可以指定使用哪个环境,参见 [swan.cloud.init](https://smartprogram.baidu.com/docs/develop/cloud/cloud_init/)。在云函数中初始化 SDK 时,如果没有指定环境 ID,则会默认使用该函数当前所处的环境。
15 |
16 |
17 |
18 |
19 | ## 云存储开发常见问题
20 |
21 | #### 文件名有什么限制?
22 |
23 | * 不能为空;
24 | * 不能以 `/` 开头和结尾;
25 | * 不能出现连续的 `/`;
26 | * 文件完整路径不能超过 1000 个字符。
27 |
28 |
29 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/guide/guide_databasefaq.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 数据库开发常见问题
3 | header: develop
4 | nav: guide
5 | sidebar: guide_databasefaq
6 | ---
7 |
8 |
9 |
10 | #### 如果设置记录的唯一ID?
11 |
12 | 在同一个集合中,创建的文档均有一个唯一 ID,存储在 `_id` 字段中。默认情况下,这个字段是一个 UUID,你也可以手动指定,保证唯一即可。
13 |
14 | #### `_cbd_author_id` 字段代表什么含义?
15 |
16 | 当使用智能小程序端 SDK 创建记录(文档)时,云开发会将当前用户的 ID 存储在此字段中,表明该条记录的作者。参考用户集成相关问题。
17 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/guide/guide_dev.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 云开发配额
3 | header: develop
4 | nav: guide
5 | sidebar: guide_dev
6 | ---
7 |
8 |
9 |
10 | 云开发采用套餐制计费,每一档套餐都规定了使用各种云上资源的限制。当前仅有基础版套餐供选择。
11 |
12 | ### 云数据库
13 |
14 | |限额项目|基础版|
15 | |---|---|
16 | |总存储空间|2GB|
17 | |读操作次数|30000次/天|
18 | |写操作次数|30000次/天|
19 | |集合总个数|100|
20 | |单集合索引个数|10|
21 | |同时连接数限制|30|
22 |
23 | ### 云存储
24 |
25 | |限额项目|基础版|
26 | |---|---|
27 | |总存储空间|5GB|
28 | |下载操作次数|50000次/天|
29 | |上传操作次数|50000次/天|
30 |
31 | ### 云函数
32 |
33 | |限额项目|基础版|
34 | |---|---|
35 | |函数总个数|20|
36 | |调用次数|200000次/天|
37 | |资源使用量|40000GB*s/月|
38 | |外网下行流量|1GB/月|
39 | |总并发数限制|100|
40 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/guide/guide_user.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 用户集成相关问题
3 | header: develop
4 | nav: guide
5 | sidebar: guide_user
6 | ---
7 |
8 |
9 | ### 云开发的用户是什么概念?
10 | 在启用云开发的智能小程序中,每一个智能小程序的用户都会对应到云开发当前环境中的一个用户,无论该用户是否登录了宿主应用。在智能小程序端新增数据库记录或者上传文件时,都会将操作者在云开发环境中的用户 ID 记录到相应的资源上,以表示该数据的创建者。当在智能小程序端修改这些数据时,云开发会检查相应的权限,允许或者拒绝修改操作。通过这种方式,可以直接在智能小程序端操作云端数据,而无需在云函数(服务端)进行用户身份的识别和访问权限的控制。
11 |
12 | ### 如何获取用户的 openid 或 swanid 信息?
13 | 在云函数中,可以从函数的 `context` 参数中获取到。已登录的用户可以得到 openid,未登录的用户可以得到 swanid。注意:如果是从云函数中调用另一个云函数,将不会包含用户信息。
14 |
15 | **代码示例**
16 | ```
17 | exports.main = (event, context) => {
18 | let { OPENID, APPID } = cloud.getSwanContext() // 这里获取到的 openId 和 appId 是可信的
19 | }
20 | ```
21 |
22 | ### 如果用户在使用智能小程序时,先未登录,后来登录,对应到云开发中是几个用户 ID?
23 | 两个。今后会提供用户合并的功能。
24 |
25 | ### 在什么情况下会进行访问权限控制?
26 | 当使用智能小程序端 SDK 对云数据库和云存储进行操作的时候,会进行该项检查。在云开发控制台和云函数内的操作,不会进行检查和权限控制,可以任意读写。
27 |
28 | ### 目前的访问权限控制是怎样的?
29 | 已登录用户可写、可修改作者为自己的数据,未登录用户可写、不可修改,所有用户可读。
30 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/server_sdk/getSwanContext.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: cloud.getSwanContext
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_server_sdk_getSwanContext
6 | ---
7 |
8 | **解释**
9 | cloud.getSwanContext 获取云函数调用上下文
10 |
11 | **返回值**
12 |
13 | SwanContext:
14 |
15 | |名称|类型|说明|
16 | |---|---|---|
17 | |USERID|String|智能小程序用户ID|
18 | |APPID|String|智能小程序APPID|
19 | |ENV|String|云开发环境|
20 | |SOURCE|String|调用来源|
21 |
22 | **代码示例**
23 |
24 | ``` js
25 | exports.main = (event, context) => {
26 | cloud.init(context)
27 |
28 | const ctx = cloud.getSwanContext()
29 |
30 | return ctx.APPID
31 | }
32 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/cloud/server_sdk/init.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: cloud.init
3 | header: develop
4 | nav: cloud
5 | sidebar: cloud_server_sdk_init
6 | ---
7 |
8 | **解释**:初始化云开发SDK
9 |
10 | **参数说明**
11 |
12 | |名称|类型|必须|说明|
13 | |---|---|---|---|
14 | |context|FunctionContext|是|函数执行上下文|
15 | |option|Object|否|初始化参数|
16 | |option.env|String/Object|否|云开发环境|
17 |
18 | 当`env`传入参数为对象时,可以指定各个服务的默认环境,字段如下:
19 |
20 | |字段|类型|必填|默认值|说明|
21 | |---|---|---|---|---|
22 | |database|String|是|当前所在环境|数据库默认环境配置|
23 | |functions|String|是|当前所在环境|云函数默认环境配置|
24 | |storage|String|是|当前所在环境|云存储默认环境配置|
25 |
26 |
27 | **代码示例**
28 |
29 | ``` js
30 | const cloud = require("swan-server-sdk")
31 | exports.main = (event, context) => {
32 | cloud.init(context)
33 |
34 | // ...
35 | }
36 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/component/formlist_picker-view-column.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: picker-view-column 滚动选择器子项
3 | header: develop
4 | nav: component
5 | sidebar: formlist_picker-view-column
6 | # webUrl: https://qft12m.smartapps.cn/component/picker-view/picker-view
7 | ---
8 |
9 |
10 | **解释**:可嵌页面的滚动选择器子项。仅可放置于``中,其孩子节点的高度会自动设置成与 picker-view 的选中框的高度一致。
11 |
12 |
13 | ## 示例
14 |
15 | 在开发者工具中预览效果
16 |
17 | ### 扫码体验
18 |
19 |
20 |

21 |
请使用百度APP扫码
22 |
23 |
24 |
25 | ### 代码示例
26 | 参见[picker-view](https://smartprogram.baidu.com/docs/develop/component/formlist_picker-view/)示例内容。
--------------------------------------------------------------------------------
/program-docs/docs/develop/component/view_movable-area.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: movable-area 可移动视图区域
3 | header: develop
4 | nav: component
5 | sidebar: view_movable-area
6 | # webUrl: https://qft12m.smartapps.cn/component/movable-view/movable-view
7 | ---
8 |
9 |
10 |
11 |
12 |
13 | **解释**:`movable-view` 的可移动区域。`movable-area` 必须设置width和height属性,不设置默认为10px。
14 |
15 | ## 属性说明
16 |
17 | |属性名 |类型 |默认值| 必填 | 说明|
18 | |:---|:---|:---|:---|:---|
19 | |scale-area |Boolean| false| 否 | 当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area 。|
20 |
21 | ## 示例
22 |
23 | 在开发者工具中预览效果
24 |
25 | ### 扫码体验
26 |
27 |
28 |

29 |
请使用百度APP扫码
30 |
31 |
32 | ### 图片示例
33 | 参见[movable-view](https://smartprogram.baidu.com/docs/develop/component/view_movable-view/)示例内容。
34 |
35 | ### 代码示例
36 |
37 | 参见[movable-view](https://smartprogram.baidu.com/docs/develop/component/view_movable-view/)示例内容。
38 |
39 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/component/view_swiper-item.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: swiper-item 滑块视图容器子项
3 | header: develop
4 | nav: component
5 | sidebar: view_swiper-item
6 | # webUrl: https://qft12m.smartapps.cn/component/swiper/swiper
7 | ---
8 |
9 |
10 | **解释**:滑块视图容器子项,仅可放置在``组件中,宽高自动设置为100%。
11 |
12 | ## 属性说明
13 |
14 | |属性名 |类型 |默认值 | 必填 |说明|最低版本|
15 | |:---- |: ---- |: ---- |:---- |:---- |:---- |
16 | |item-id|String| | 否 |该swiper-item的标识符|1.11 低版本请做兼容性处理|
17 |
18 | ## 示例
19 |
20 | 在开发者工具中预览效果
21 |
22 | ### 扫码体验
23 |
24 |
25 |

26 |
请使用百度APP扫码
27 |
28 |
29 | ### 图片示例
30 | 参见[swiper](https://smartprogram.baidu.com/docs/develop/component/view_swiper/)示例内容。
31 |
32 | ### 代码示例
33 |
34 | 参见[swiper](https://smartprogram.baidu.com/docs/develop/component/view_swiper/)示例内容。
35 |
36 |
37 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/automator/connect.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: automator.connect
3 | header: develop
4 | nav: devtools
5 | sidebar: connect
6 | ---
7 |
8 | **解释**:连接开发者工具。
9 |
10 | ```ts
11 | automator.connect(options: Object): Promise
12 | ```
13 |
14 | **`options`参数说明:**
15 |
16 | |属性名 |类型 |必填 | 默认值 |说明|
17 | |:---- |:---- |:---- |:----|:----|
18 | |wsEndpoint| String|是|- |开发者工具 WebSocket 地址|
19 |
20 | 有两种方式可以启动开发者工具并开启自动化功能。
21 |
22 | > 1、通过命令行工具并指定自动化参数的方式
23 |
24 | 命令行工具所在位置:
25 | macOS: `<安装路径>/Contents/MacOS/cli`
26 | Windows: `<安装路径>/cli.bat`
27 |
28 | 需要指定的参数如下:
29 | `--auto `:打开指定项目并开启自动化功能。
30 | `--auto-port `:指定自动化监听端口。
31 |
32 | ```shell
33 | # cliPath 需要替换成命令行工具的完整路径
34 | cliPath --auto /Users/username/demo --auto-port 9420
35 | ```
36 |
37 | > 2、通过 [automator.launch](./launch/) API。
38 |
39 | **示例代码:**
40 |
41 | ```ts
42 | const automator = require('swan-automator');
43 | automator.connect({
44 | wsEndpoint: 'ws://localhost:9420'
45 | }).then(smartProgram => {
46 | // do sth
47 | });
48 | ```
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/element/$$.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: element.$$
3 | header: develop
4 | nav: devtools
5 | sidebar: $$
6 | ---
7 |
8 | **解释**:在元素范围内获取元素数组。
9 |
10 | ```ts
11 | element.$$(selector: string): Promise
12 | ```
13 |
14 | **参数说明:**
15 |
16 | |属性名 |类型 |必填 | 默认值 |说明|
17 | |:---- |:---- |:---- |:----|:----|
18 | |selector| String|是|- |选择器|
19 |
20 | **示例代码:**
21 |
22 | ```js
23 | automator.launch().then(async smartProgram => {
24 | const page = await smartProgram.reLaunch('/pages/api/api');
25 | const element = await page.$('.group');
26 | const res = await element.$$('.group-bd');
27 | console.log(res.length);
28 | });
29 | ```
30 |
31 |
32 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/element/$.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: element.$
3 | header: develop
4 | nav: devtools
5 | sidebar: $
6 | ---
7 |
8 | **解释**:在元素范围内获取元素。
9 |
10 | ```ts
11 | element.$(selector: string): Promise
12 | ```
13 |
14 | **参数说明:**
15 |
16 | |属性名 |类型 |必填 | 默认值 |说明|
17 | |:---- |:---- |:---- |:----|:----|
18 | |selector| String|是|- |选择器|
19 |
20 | **示例代码:**
21 |
22 | ```js
23 | automator.launch().then(async smartProgram => {
24 | const page = await smartProgram.reLaunch('/pages/api/api');
25 | const element = await page.$('.group-bd');
26 | const logo = await element.$('.item-logo');
27 | });
28 | ```
29 |
30 |
31 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/element/attribute.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: element.attribute
3 | header: develop
4 | nav: devtools
5 | sidebar: attribute
6 | ---
7 | **解释**:获取元素属性。
8 |
9 | ```ts
10 | element.attribute(name: string): Promise
11 | ```
12 |
13 | **参数说明:**
14 |
15 | |属性名 |类型 |必填 | 默认值 |说明|
16 | |:---- |:---- |:---- |:----|:----|
17 | |name| String|是|- |属性名|
18 |
19 | **示例代码:**
20 |
21 | ```js
22 | automator.launch().then(async smartProgram => {
23 | const page = await smartProgram.reLaunch('/pages/api/api');
24 | const element = await page.$('.group-logo');
25 | const res = await element.attribute('id'); // id
26 | });
27 | ```
28 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/element/innerHTML.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: element.innerHTML
3 | header: develop
4 | nav: devtools
5 | sidebar: innerHTML
6 | ---
7 |
8 |
9 | **解释**:获取元素 HTML。
10 |
11 | ```ts
12 | element.innerHTML(): Promise
13 | ```
14 | **示例代码:**
15 |
16 | ```js
17 | automator.launch().then(async smartProgram => {
18 | const page = await smartProgram.reLaunch('/pages/api/api');
19 | const element = await page.$('.group-logo');
20 | const res = await element.innerHTML();
21 | });
22 | ```
23 |
--------------------------------------------------------------------------------
/program-docs/docs/develop/devtools/auto/element/offset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: element.offset
3 | header: develop
4 | nav: devtools
5 | sidebar: offset
6 | ---
7 |
8 |
9 | **解释**:获取元素绝对位置。
10 |
11 | ```ts
12 | element.offset(): Promise