微信小程序框架解析

作者: 糖小工 | 来源:发表于2016-12-25 22:06 被阅读405次

    What?

    • 基于微信
    • 类web
    • 原生体验
    • 解决方案

    How?

    交互原理

    逻辑层(App Service)

    • 逻辑层由JavaScript编写
    • 逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈
    • 所有代码将会打包成一份JavaScript,启动时运行,直到小程序销毁

    视图层(View)

    • 由WXML与WXSS编写,由组件进行展示
    • 将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

    App Service -Manager

    • App() -小程序入口
    • Page() -页面入口
    • 数据绑定、事件分发、生命周期、路由管理
    wxml js

    生命周期

    Paste_Image.png

    View - WXML

    • weixin markup Language
    • 支持逻辑、算数计算
    • 支持模板、引用

    WXML ---compiler--->JS:generateFunc ---Data--->VirtualTree ----Virtual DOM--->Dom Tree


    WXML 具有什么能力?

    • 数据绑定
    <!-- wxml -->
    <view> {{ message }}</view>
    
    • 列表渲染
    <!--wxml-->
    <view wx:for="{{array}}"> {{item}} </view>
    
    • 条件渲染
    <!--wxml-->
    <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
    <view wx:elif="{{view == 'APP'}}"> APP </view>
    <view wx:else="{{view == 'MINA'}}"> MINA </view>
    
    • 模板
    <!--wxml-->
    <template name="staffName"> <view> FirstName: {{firstName}}, LastName: {{lastName}} </view></template>
    <template is="staffName" data="{{...staffA}}"></template>
    <template is="staffName" data="{{...staffB}}"></template>
    <template is="staffName" data="{{...staffC}}"></template>
    
    • 事件
    <view bindtap="add"> {{count}} </view>
    

    page.js

    
    Page({
     data: { 
      message: 'Hello MINA!',
      array: [1, 2, 3, 4, 5],
      view: 'MINA',
      staffA: {firstName: 'Hulk', lastName: 'Hu'}, 
      staffB: {firstName: 'Shang', lastName: 'You'},
      staffC: {firstName: 'Gideon', lastName: 'Lin'}
      count: 1
     },
     add: function(e) {
       this.setData({ count: this.data.count + 1 }) 
     }
    })
    

    View - WXSS

    • WXSS -weixin style sheet
    • 自适应单位 RPX-Responsive Pixel
    • 无级联-避免被组件内结构破坏

    WXSS -------compiler-----> JS -----width,DPR------> CSS

    View -Render

    • 数据(Modal)与视图(View)完全分离
    • 逻辑层运行在独立环境中,无法直接操作DOM
    • 使用WXML模板语言减少维护成本
    • 单项数据绑定
    • 重渲染使用Virtual-DOM减少开销
    与Natice通信图示 打包

    相关文章

      网友评论

      • 知晓程序:你好!我们是爱范儿旗下专注于小程序生态的公众号知晓程序(微信号 zxcx0101)。我们很赞赏你的文章,希望能获得转载授权。授权后,你的文章将会在知晓程序社区(minapp.com)、爱范儿、AppSo 等渠道发布,我们会注明来源和作者姓名。

        非常感谢~~~

      本文标题:微信小程序框架解析

      本文链接:https://www.haomeiwen.com/subject/gfpkvttx.html