微信小程序组件化开发框架wepy 学习(二)

简介: 1.文件结构 文件结构类似VUE文件 扩展名为 .wpy

文件

1.文件结构 文件结构类似VUE文件 扩展名为 .wpy

<template>
  <!--渲染模板 对应wxml -->
</template>

<script>
  // 脚本 对应 .js
</script>

<style>
  /*样式 对应 wxss*/
</style>

2.文件类型 文件类型声明与<script>有关

  • 声明为app 入口 即 原生 app.js 只能声明一个 声明类继承 ==wepy.app==

<script>
import wepy from 'wepy'
import 'wepy-async-function'

export default class extends wepy.app {
   //config app.json  你新增一个页面 都要配置pages
 config = {
   pages: [
     'pages/test'
   ],
   window: {
     backgroundTextStyle: 'light',
     navigationBarBackgroundColor: '#fff',
     navigationBarTitleText: 'WeChat',
     navigationBarTextStyle: 'black'
   }
 }
//   全局数据对象
 globalData = {
   userInfo: null
 }
//   构造器  使用了 requestfix 优化   不用可以忽略
 constructor () {
   super()
   this.use('requestfix')
 }
//   生命周期函数  自定义函数
    onLaunch() {}
}
</script>
  • 声明为page 页面 页面为 无组件页面或者 组件页面 声明类继承 ==wepy.page==

<script>
 
  import wepy from 'wepy'
 

  export default class Test extends wepy.page {
    customData = {}  // 自定义数据

    customFunction () {}  //自定义方法

    onLoad () {}  // 在Page和Component共用的生命周期函数

    onShow () {}  // 只在Page中存在的页面生命周期函数

    config = {};  // 只在Page实例中存在的配置数据,对应于原生的page.json文件

    data = {};  // 页面所需数据均需在这里声明,可用于模板数据绑定

    components = {};  // 声明页面中所引用的组件,或声明组件中所引用的子组件

    mixins = [];  // 声明页面所引用的Mixin实例

    computed = {};  // 声明计算属性(详见后文介绍)

    watch = {};  // 声明数据watcher(详见后文介绍)

    methods = {};  // 声明页面wxml中标签的事件处理函数。注意,此处只用于声明页面wxml中标签的bind、catch事件,自定义方法需以自定义方法的方式声明

    events = {};  // 声明组件之间的事件处理函数
}
</script>

  • 声明为组件 页面 页面为 无组件页面或者 组件页面 声明类继承 ==wepy.page==

<script>
 
  import wepy from 'wepy'
 

  export default class com extends wepy.component {
    customData = {}  // 自定义数据

    customFunction () {}  //自定义方法

    onLoad () {}  // 在Page和Component共用的生命周期函数

    config = {};  //只在Page实例中存在的配置数据,对应于原生的page.json文件

    data = {};  // 页面所需数据均需在这里声明,可用于模板数据绑定

    components = {};  // 声明页面中所引用的组件,或声明组件中所引用的子组件

    mixins = [];  // 声明页面所引用的Mixin实例

    computed = {};  // 声明计算属性(详见后文介绍)

    watch = {};  // 声明数据watcher(详见后文介绍)

    methods = {};  // 声明页面wxml中标签的事件处理函数。注意,此处只用于声明页面wxml中标签的bind、catch事件,自定义方法需以自定义方法的方式声明

    events = {};  // 声明组件之间的事件处理函数
}
</script>

总结:  编译后上述三种类型对应生成各自的原生类型 json、 wxss、 js、 wxml 生成文件的文件名与wpy文件类名无关。类名仅对引用有关 例如类型为 Page的文件 index.wpy编译后会生成index.json、 index.wxss、 index.js、 index.wxml 类名可自行定义 约定 ==不要以$ _== 开头 类型声明与声明类的继承类型有关 app类 每个应用只能有一个 其他细节可阅读官方文档

组件

一个组件可以引用零到多个组件被引用的组件需要在宿主组件注册 组件的引用是静态类型的 也就是一个组件如果对另一个组件多次引用 如果需要隔离必须对每次的引用进行唯一标识

组件 mo.wpy


<template>
  <view>
    <text @tap="clickMe">{{text}}</text>
    <text class="sub-text">{{domain.title}}</text>
  </view>
</template>

<script>
  import wepy from 'wepy'
  //   引入组件
  import PropData from '@/components/propData'
  export default class mo extends wepy.component {
         // 组件引用组件  如果PropData多次被引用而且希望相互隔离 key 要保持唯一  
    components = { pro: PropData};
    props = {
      d: String
    };
    data = {
      text: 'this is demo'
    };
    methods = {
      clickMe() {
        this.text = ' click it '
      }
    };

    onLoad() {
      console.log('mo is loading now ')
      console.log(this.d)
    }
  }
</script>

<style>
  text {
    color: brown;
  }

  .sub-text {
    color: darkmagenta;
    font-size: larger;
  }
</style>

页面 test.wpy

<style>
  view {
    margin: 0 auto;
  }

  .view-class {
    color: darkmagenta;
    font-family: "Fira Code Retina";
    text-align: -webkit-center;
    text-transform: capitalize;
    font-weight: bolder;
  }
</style>

<script>
  import meths from '@/js/charts.js'
  import wepy from 'wepy'
//   组件引入
  import Mo from '@/components/mo'
  import PropData from '@/components/propData'

  export default class Test extends wepy.page {
    config = {};
    // 组件注册  如果Mo多次被引用而且希望相互隔离 key 要保持唯一  
    components = {mo: Mo, pro: PropData};
    data = {
      list: [{id: 1, title: '第一'}, {id: 2, title: '第二'}, {id: 3, title: '第三'}],
      valueText: '',
      viewClass: 'view-class',
      customData: {customText: '父组件参数'}
    };

    onLoad() {
      let {title} = this.list[1]
      console.table(this.list)
      console.log(meths.sub(title))
      meths.concatStr('hello', 'world', 'wepy')
    };

    methods = {
      inputChange(e) {
        this.valueText = e.detail.value
      }
    };
    watch = {
      valueText(newValue, oldValue) {
        console.log(`num value: ${oldValue} -> ${newValue}`)
      }
    }
  };

</script>

<template>
  <view><input type="text" value="{{valueText}}" @input="inputChange"></view>
  <view>{{valueText}}</view>
  <repeat for="{{list}}" item="item">
    <mo d="ssssssss" :domain="item"/>
  </repeat>
  <pro :n="viewClass" :valueText.sync="valueText"></pro>
</template>


总结 其实非常类似于VUE 生命周期函数 类似于vue 的钩子函数 如果熟悉VUE的方式 这个应该很容易上手 当然与VUE还有一些不同 可对官方文档进行学习 第三章将对 数据绑定交互进行研究和简单的分析


原文发布时间为:2018年06月20日
原文作者:NotFound403

本文来源:开源中国 如需转载请联系原作者


目录
相关文章
|
14天前
|
小程序 前端开发 API
小程序全栈开发中的多端适配与响应式布局
【4月更文挑战第12天】本文探讨了小程序全栈开发中的多端适配与响应式布局。多端适配涉及平台和设备适应,确保统一用户体验;响应式布局利用媒体查询和弹性布局维持不同设备的布局一致性。实践中,开发者可借助跨平台框架实现多平台开发,运用响应式布局技术适应不同设备。同时,注意兼容性、性能优化和用户体验,以提升小程序质量和用户体验。通过这些方法,开发者能更好地掌握小程序全栈开发。
|
14天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
14天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
14天前
|
小程序 前端开发 安全
小程序全栈开发中的跨域问题及其解决方案
【4月更文挑战第12天】本文探讨了小程序全栈开发中的跨域问题及其解决方案。跨域问题源于浏览器安全策略,主要体现在前后端分离、第三方服务集成和数据共享上。为解决此问题,开发者可采用CORS、JSONP、代理服务器、数据交换格式和域名策略等方法。实践中需注意安全性、兼容性和性能。通过掌握这些解决方案,开发者能更好地处理小程序的跨域问题,提升用户体验。
|
14天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
7天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
23 2
|
7天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的移动学习平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的移动学习平台的详细设计和实现
31 1
|
14天前
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
|
14天前
|
SQL 安全 小程序
探索微信小程序全栈开发的安全性问题
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的安全性问题,包括数据安全、接口安全、隐私保护和代码安全。为解决这些问题,建议采取数据加密、使用HTTPS协议、身份认证与授权、输入验证、安全审计及漏洞扫描以及安全培训等措施。通过这些方法,开发者可提升小程序安全性,保护用户隐私和数据。
|
14天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。