微信小程序框架解析课件_第1页
微信小程序框架解析课件_第2页
微信小程序框架解析课件_第3页
微信小程序框架解析课件_第4页
微信小程序框架解析课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微信小程序框架解析hongweiqu(渠宏伟)微信小程序框架解析hongweiqu(渠宏伟)CONTENTS01

小程序介绍和演示02

小程序架构03

小程序视图层04小程序逻辑层05小程序开发经验CONTENTS01小程序介绍和演示02小程序架小程序介绍小程序介绍小程序的特点类WEB不是HTML5媲美原生操作体验即用即走,随手可得拥有离线能力基于微信跨平台小程序的特点类WEB不是HTML5媲美原生操作体验即用即走小程序演示企鹅电竞小程序体验小程序演示企鹅电竞小程序体验为什么那么快Native预先加载一个WebView当打开指定页面时,无需加载额外资源直接渲染返回显示历史View退出小程序,View状态不销毁Page

Frame

commonlibusercommonjs为什么那么快Native预先加载一个WebViewPage小程序入口扫码进入小程序搜索小程序发现->小程序小程序发送到桌面(android)小程序入口扫码进入小程序小程序架构小程序架构小程序架构View(视图层)PagePagePageWXMLWXSSAppService(逻辑层)ManagerAPINative(系统层)JSBridge微信能力离线存储网络请求…DataEventDataEvent小程序架构View(视图层)PagePagePageWXML小程序架构ViewAppServiceCDNWebServerDataEventDataEventInWeChatStorgeInitrequestPackageAjaxrequestJSONDataNetwork小程序架构ViewAppServiceCDNWebSerView(页面视图)View(页面视图)View-WXML支持数据绑定支持逻辑算术、运算支持模板、引用支持添加事件(bindtap)WXML(WeiXinMarkupLanguage)WXMLJSVirtualDOMDOMTreeCompilerDataVirtualDOMView-WXML支持数据绑定WXML(WeiXinMView-WXSS支持大部分CSS特性添加尺寸单位rpx,可根据屏幕宽度自适应使用@import语句可以导入外联样式表不支持多层选择器-避免被组件内结构破坏WXSS(WeiXinStyleSheets)WXSSJSCSSCompilerWidth,DPRView-WXSS支持大部分CSS特性WXSS(WeiXView–WXSSSelectors选择器样例样例描述.ro选择所有拥有class="intro"的组件#id#firstname选择拥有id="firstname"的组件elementview选择所有view组件element,elementview,checkbox选择所有文档的view组件和所有的checkbox组件::afterview::after在view组件后边插入内容::beforeview::before在view组件前边插入内容View–WXSSSelectors选择器样例样例描述View-Component大类细分WXMLHTML视图容器普通视图容器viewdiv、ul、li、article、section……滚动视图scroll-view滑块视图swiper基础内容文本textspan、em、p……图标iconspan、em、i……进度条progressdiv……链接、导航链接、导航navigatora表单按钮buttonbutton、input单选radioinput多选checkboxinput表单formform输入框inputinput改进表单可用性labellabel滚动选择器pickerselect开关选择器switchinput、div……操作反馈底部菜单action-sheetdiv、ul……弹窗modaldiv……toasttoastdiv……加载loadingimg、span、div……媒体图片imageimg音频audioaudio视频videovideo地图地图mapmap画布画布canvascanvasView-Component大类细分WXMLHTML视图View-Component小程序的组件基于WebComponent标准使用Polymer框架实现WebComponentView-Component小程序的组件基于WebCoView-NativeComponentNative组件层在WebView层之上<canvas/><video/><map/><textarea/>View-NativeComponentNative组AppService(逻辑层)AppService(逻辑层)AppService逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈1、App()小程序的入口;Page()页面的入口3、提供丰富的API,如微信用户数据,扫一扫,支付等微信特有能力。4、每个页面有独立的作用域,并提供模块化能力。5、数据绑定、事件分发、生命周期管理、路由管理运行环境IOS-JSCoreAndroid-X5JS解析器DevTool-nwjsChrome内核AppService逻辑层将数据进行处理后发送给视图层,同AppService-BindingAppService-BindingAppService-LifeCylceNativeLaunchonLaunchAppServiceViewinitPageinitRenderonLoadonShowonReadyHandlerUserEventEventNotifySendinitDataRe-RenderSendDataNewViewNewPageonHideonShowRouteRouteAppService-LifeCylceNativeAppService-APIAPI通过JSBridge和Native进行通信分类名称API网络发起请求request上传下载uploadFile/downloadFileWebSocketconnectSocket/onSocketOpen/onSocketError/sendSocketMessage/onSocketMessage/closeSocket/onSocketClose媒体图片chooseImage/previewImage/getImageInfo视频chooseVideo音频playVoice/pauseVoice/stopVoice录音startRecord/stopRecord文件saveFile/getSavedFileList/getSavedFileInfo/removeSavedFile数据数据缓存setStorage/getStorage/removeStorage/clearStorage位置获取位置getLocation查看位置openLocation设备网络状态getNetworkType系统信息getSystemInfo重力感应onAccelerometerChange罗盘onCompassChange拨打电话makePhoneCall界面CanvasdrawCanvas/drawCanvas/canvasToTempFilePath动画createAnimation导航、设置导航条navigateTo/redirectTo/navigateBack交互反馈showToast/showModal/showActionSheet开放接口登录login用户信息getUserInfo微信支付requestPayment模板消息AppService-APIAPI通过JSBridgeAppService-RouternavigateTo(OBJECT)保留当前页面,跳转到应用内的某个页面,使用navigateBack可以返回到原页面。页面路径只能是五层redirectTo(OBJECT)关闭当前页面,跳转到应用内的某个页面。navigateBack(OBJECT)关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages())获取当前的页面栈,决定需要返回几层。AppService-RouternavigateTo小程序开发经验小程序开发经验小程序可以借鉴的优点1、提前新建WebView,准备新页面渲染。2、View层和逻辑层分离,通过数据驱动,不直接操作DOM。3、使用Virtual

DOM,进行局部更新。4、全部使用https,确保传输中安全。5、前端组件化开发。6、加入rpx单位,隔离设备尺寸,方便开发。小程序可以借鉴的优点1、提前新建WebView,准备新页面渲小程序存在的问题1、小程序仍然使用WebView渲染,并非原生渲染2、需要独立开发,不能在非微信环境运行。3、开发者不可以扩展新组件。4、服务端接口返回的头无法执行,比如:Set-Cookie。5、依赖浏览器环境的js库不能使用,因为是JSCore执行的,没有window、document对象。6、WXSS中无法使用本地(图片、字体等)。7、WXSS转化成js而不是css,为了兼容rpx。8、WXSS不支持级联选择器。9、小程序无法打开页面,无法拉起APP。小程序存在的问题1、小程序仍然使用WebView渲染,并非原脱离微信的“小程序”:PWA渐进式应用PWA

-ProgressiveWebApp脱离微信的“小程序”:PWA渐进式应用PWA-ProgPWA特点渐进增强

-支持的新特性的浏览器获得更好的体验,不支持的保持原来的体验。离线访问

-通过ServiceWorkers可以在离线或者网速差的环境下工作。类原生应用

-使用appshellmodel做到原生应用般的体验。可安装

-允许用户保留对他们有用的应用在主屏幕上,不需要通过应用商店。容易分享

-通过URL可以轻松分享应用。持续更新

-受益于serviceworker的更新进程,应用能够始终保持更新。安全

-通过HTTPS来提供服务来防止网络窥探,保证内容不被篡改。可搜索

-得益于W3Cmanifests元数据和serviceworker的登记,让搜索引擎能够找到web应用。再次访问

-通过消息推送等特性让用户再次访问变得容易。PWA特点渐进增强

-支持的新特性的浏览器获得更好的体验PWA-

WebAppManifest使Web更像NativeWebAppManifest以JSON的格式定义Web应用的相关配置(应用名称、图标或图像连接、启动URL、自定义特性、启动默认配置、全屏设置等)。PWA-WebAppManifest使Web更像NaPWA-

ServiceWorkers增强Web能力通过Service

Works实现资源离线缓存和更新PWA-ServiceWorkers增强Web能力通过PWA

-

AppShell提升显示效率AppShell(应用外壳)是应用的用户界面所需的最基本的HTML、CSS和JavaScript,首次加载后立刻被缓存下来,不需要每次使用时都被下载,而是只异步加载需要的数据,以达到UI保持本地化。PWA-AppShell提升显示效率AppShelTHANKYOUTHANKYOU微信小程序框架解析hongweiqu(渠宏伟)微信小程序框架解析hongweiqu(渠宏伟)CONTENTS01

小程序介绍和演示02

小程序架构03

小程序视图层04小程序逻辑层05小程序开发经验CONTENTS01小程序介绍和演示02小程序架小程序介绍小程序介绍小程序的特点类WEB不是HTML5媲美原生操作体验即用即走,随手可得拥有离线能力基于微信跨平台小程序的特点类WEB不是HTML5媲美原生操作体验即用即走小程序演示企鹅电竞小程序体验小程序演示企鹅电竞小程序体验为什么那么快Native预先加载一个WebView当打开指定页面时,无需加载额外资源直接渲染返回显示历史View退出小程序,View状态不销毁Page

Frame

commonlibusercommonjs为什么那么快Native预先加载一个WebViewPage小程序入口扫码进入小程序搜索小程序发现->小程序小程序发送到桌面(android)小程序入口扫码进入小程序小程序架构小程序架构小程序架构View(视图层)PagePagePageWXMLWXSSAppService(逻辑层)ManagerAPINative(系统层)JSBridge微信能力离线存储网络请求…DataEventDataEvent小程序架构View(视图层)PagePagePageWXML小程序架构ViewAppServiceCDNWebServerDataEventDataEventInWeChatStorgeInitrequestPackageAjaxrequestJSONDataNetwork小程序架构ViewAppServiceCDNWebSerView(页面视图)View(页面视图)View-WXML支持数据绑定支持逻辑算术、运算支持模板、引用支持添加事件(bindtap)WXML(WeiXinMarkupLanguage)WXMLJSVirtualDOMDOMTreeCompilerDataVirtualDOMView-WXML支持数据绑定WXML(WeiXinMView-WXSS支持大部分CSS特性添加尺寸单位rpx,可根据屏幕宽度自适应使用@import语句可以导入外联样式表不支持多层选择器-避免被组件内结构破坏WXSS(WeiXinStyleSheets)WXSSJSCSSCompilerWidth,DPRView-WXSS支持大部分CSS特性WXSS(WeiXView–WXSSSelectors选择器样例样例描述.ro选择所有拥有class="intro"的组件#id#firstname选择拥有id="firstname"的组件elementview选择所有view组件element,elementview,checkbox选择所有文档的view组件和所有的checkbox组件::afterview::after在view组件后边插入内容::beforeview::before在view组件前边插入内容View–WXSSSelectors选择器样例样例描述View-Component大类细分WXMLHTML视图容器普通视图容器viewdiv、ul、li、article、section……滚动视图scroll-view滑块视图swiper基础内容文本textspan、em、p……图标iconspan、em、i……进度条progressdiv……链接、导航链接、导航navigatora表单按钮buttonbutton、input单选radioinput多选checkboxinput表单formform输入框inputinput改进表单可用性labellabel滚动选择器pickerselect开关选择器switchinput、div……操作反馈底部菜单action-sheetdiv、ul……弹窗modaldiv……toasttoastdiv……加载loadingimg、span、div……媒体图片imageimg音频audioaudio视频videovideo地图地图mapmap画布画布canvascanvasView-Component大类细分WXMLHTML视图View-Component小程序的组件基于WebComponent标准使用Polymer框架实现WebComponentView-Component小程序的组件基于WebCoView-NativeComponentNative组件层在WebView层之上<canvas/><video/><map/><textarea/>View-NativeComponentNative组AppService(逻辑层)AppService(逻辑层)AppService逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈1、App()小程序的入口;Page()页面的入口3、提供丰富的API,如微信用户数据,扫一扫,支付等微信特有能力。4、每个页面有独立的作用域,并提供模块化能力。5、数据绑定、事件分发、生命周期管理、路由管理运行环境IOS-JSCoreAndroid-X5JS解析器DevTool-nwjsChrome内核AppService逻辑层将数据进行处理后发送给视图层,同AppService-BindingAppService-BindingAppService-LifeCylceNativeLaunchonLaunchAppServiceViewinitPageinitRenderonLoadonShowonReadyHandlerUserEventEventNotifySendinitDataRe-RenderSendDataNewViewNewPageonHideonShowRouteRouteAppService-LifeCylceNativeAppService-APIAPI通过JSBridge和Native进行通信分类名称API网络发起请求request上传下载uploadFile/downloadFileWebSocketconnectSocket/onSocketOpen/onSocketError/sendSocketMessage/onSocketMessage/closeSocket/onSocketClose媒体图片chooseImage/previewImage/getImageInfo视频chooseVideo音频playVoice/pauseVoice/stopVoice录音startRecord/stopRecord文件saveFile/getSavedFileList/getSavedFileInfo/removeSavedFile数据数据缓存setStorage/getStorage/removeStorage/clearStorage位置获取位置getLocation查看位置openLocation设备网络状态getNetworkType系统信息getSystemInfo重力感应onAccelerometerChange罗盘onCompassChange拨打电话makePhoneCall界面CanvasdrawCanvas/drawCanvas/canvasToTempFilePath动画createAnimation导航、设置导航条navigateTo/redirectTo/navigateBack交互反馈showToast/showModal/showActionSheet开放接口登录login用户信息getUserInfo微信支付requestPayment模板消息AppService-APIAPI通过JSBridgeAppService-RouternavigateTo(OBJECT)保留当前页面,跳转到应用内的某个页面,使用navigateBack可以返回到原页面。页面路径只能是五层redirectTo(OBJECT)关闭当前页面,跳转到应用内的某个页面。navigateBack(OBJECT)关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages())获取当前的页面栈,决定需要返回几层。AppService-RouternavigateTo小程序开发经验小程序开发经验小程序可以借鉴的优点1、提前新建WebView,准备新页面渲染。2、View层和逻辑层分离,通过数据驱动,不直接操作DOM。3、使用Virtual

DOM,进行局部更新。4、全部使用https,确保传输中安全。5、前端组件化开发。6、加入rpx单位,隔离设备尺寸,方便开发。小程序可以借鉴的优点1、提前新建WebView,准备新页面渲小程序存在的问题1、小程序仍然使用WebView渲染,并非原生渲染2、需要独立开发,不能在非微信环境运行。3、开发者不可以扩展新组件。4、服务端接口返回的头无法执行,比如:Set-Cookie。5、依赖浏览器环境的js库不能使用,因为是JSCore执行的,没有window、docu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论