前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序_06 将臃肿的单页js文件拆开

微信小程序_06 将臃肿的单页js文件拆开

作者头像
酷走天涯
发布2018-09-14 15:23:16
9940
发布2018-09-14 15:23:16
举报

小程序中每一个页面对应一个Page()方法,我们需要把变量和组件的各种事件都写在一个对象里,然后把对象作为这个参数传递给Page方法

如下定义

代码语言:javascript
复制
const object = {
 data: {
   nickName:'酷走天涯'
  },
 // 页面加载完成调用这个方法
  onLoad: function (options) {
  },
  bindTopupEvent:function(event){
  },
 // 所有的绑定组件事件都要写在这个地方,可能特别多
 ....

}

可能你要定义好多组件模块,比如城市列表 订单 支付 等 组件 我们需要重用的组件 我们当然希望把组件的绑定事件抽离出来,如下

代码语言:javascript
复制
order.wxml
order.js
order.wxss

先看看如何在页面中分别引用这几个文件,假设有一个主页index

index.wxss 引入 order.wxss

代码语言:javascript
复制
@import "../../templates/order.wxss";

index.wxml 引入 oder.wxml

代码语言:javascript
复制
  <import src='../../templates/order.wxss'/>

index.js 引入 order.js

代码语言:javascript
复制
var order = require('../../templates/order.js')

我们想要想下面这样使用,将扩展组件的绑定事件引入进来

代码语言:javascript
复制
Page(extend(order,object))

接下来我们就扩展一个extend方法 创建一个extend.js 文件 专门写这个方法,我们在其它页面js文件中也可以使用

代码语言:javascript
复制
var extend = function(a) {
    ([].slice.call(arguments, 1) || []).forEach(function(b) {
        if (b) for (var c in b) a[c] = b[c]
    })
    return  a
};
module.exports=extend;

注意一下

  1. a 代表第extend(arg1,arg2,arg3) arg1
  2. 当然最好的调用方式为 Page(extend({},order,object))
  3. [].slice.call(arguments, 1) 将arguments 分割成数组 注意arguments不是数组类型,而是对象类型

有人可能会有下面的因为在order.js 文件 访问 index.js 文件中变量?

order.js 中有如下方法

代码语言:javascript
复制
function pay(){
  // 获取用户的姓名
  const nickName =   this.data.nickName
}

order.js 文件和 index.js 没有任何关系 为什么能调用index.js 文件的object 对象的data变量?

虽然 this.data 在order.js 文件中是不存在的 但是这个语法是没有错误的javascript 允许调用不存在的对象或者方法! 程序执行的时候,调用的this.data 指的是index.js 文件中的定义的object对象的data变量,因为Page方法已经将两者结合在一起了

注意一点非常重要,如果调用的方法 不是包含在Object中(Page(Object)),必须在order.js引入进来

比如

代码语言:javascript
复制
var request = require('../../config/method')
你需要在order.js文件中调用request.pay() 方法
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.06.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档