国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

微信小程序開發(fā)一周總結(jié)

DDreach / 628人閱讀

摘要:編輯器我直接用其它編輯器同理,預(yù)覽還是用的微信開發(fā)工具,語(yǔ)法高亮將設(shè)置成設(shè)置成也可以安裝小程序相關(guān)插件開始寫代碼首先需要完整看完微信小程序文檔框架,組件和,方便后面用到時(shí)查找。

編輯器

我直接用 vscode(其它編輯器同理,預(yù)覽還是用的微信開發(fā)工具),語(yǔ)法高亮將 wxml 設(shè)置成 html, wxss 設(shè)置成 css

"files.associations": {
  "*.wxss": "css",
  "*.wxml": "html"
}

也可以安裝小程序相關(guān)插件

開始寫代碼

首先需要完整看完微信小程序文檔(框架,組件和 API),方便后面用到時(shí)查找。

view 組件對(duì)應(yīng) html 里的 div

text 對(duì)應(yīng) span

wxss 里選擇器只支持 element, #id, .className, ::after, ::before

公用組件

項(xiàng)目目錄里新建 components ,按類似 pages 目錄結(jié)構(gòu),將每個(gè)組件的模板,樣式和 js 文件放在同一個(gè)文件夾

模板可以直接 或者需要傳值的使用 +

樣式使用 @import 導(dǎo)入

js 使用 require 引入到頁(yè)面,然后使用下面的 mergePage 來(lái)加載到頁(yè)面對(duì)象中。

mergePage

組件的加載

const ErrorMsg = require("../../../components/error-msg/error-msg");
Page(util.mergePage({
  // 頁(yè)面 Page 方法...
  onLoad() {
    // 可以直接在頁(yè)面方法中調(diào)用 showErrorMsg 方法
  }
}, ErrorMsg/* 更多組件也可以*/));

使用mergePage方法的優(yōu)點(diǎn)是可以將所有組件方法及頁(yè)面事件注冊(cè)到頁(yè)面對(duì)象

組件的編寫方式

var errorTimer;

module.exports = {
  showErrorMsg(msg, cb) {
    clearTimeout(errorTimer);
    this.setData({
      errorMsg: msg
    });
    errorTimer = setTimeout( () => {
      this.setData({
        errorMsg: false
      });
      cb && cb();
    }, 2000);
  }
  // 可以在這里注冊(cè) `onLoad`,`onShow`等頁(yè)面事件
}

組件里使用可以 this.setData 來(lái)更新頁(yè)面數(shù)據(jù),或者注冊(cè) onLoadonShow等頁(yè)面事件,mergePage 的最后一個(gè)參數(shù)的事件會(huì)最先調(diào)用。

mergePage 的源碼

/**
 * 合并 Page 對(duì)象所有的方法及事件
 * 子對(duì)象不能使用 data 屬性,請(qǐng)?jiān)?onLoad 中使用 setData 方法設(shè)置
 */
function mergePage(dest, ...src) {
  let args = arguments;
  let eventsStack = {
    onLoad: [],
    onReady: [],
    onShow: [],
    onHide: [],
    onUnload: [],
    onPullDownRefresh: [],
    onReachBottom: [],
  };
  // 保存所有的事件,最后一個(gè)參數(shù)的事件會(huì)最先調(diào)用。
  for(let name in eventsStack) {
    for(let i = args.length - 1; i >= 0; i--) {
      args[i][name] && eventsStack[name].push(args[i][name])
    }
  }
  // Object.assign(...args);
  // Object.assign 需要添加 polyfill 兼容 Android(不支持?jǐn)?shù)組參數(shù)展開)
  Object.assign.apply(null, args);
  for(let name in eventsStack) {
    dest[name] = function() {
      for(let i = 0; i < eventsStack[name].length; i++) {
        eventsStack[name][i].apply(this, arguments);
      }
    }
  }
  return dest;
}
Object.assign Android 上兼容問題

小程序里在 Android 上沒有 Object.assign 這個(gè),除了上面的 mergePage,其它地方也會(huì)經(jīng)常用到。
我們可以到 app.js 里檢測(cè)是否支持,然后添加 polyfill

// polyfill for Android before app starts
if(!Object.assign) {
  Object.assign = require("./utils/object-assign")
}

utils/object-assign.js 源碼

// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
module.exports = function (target) {
  // We must check against these specific cases.
  if (target === undefined || target === null) {
    throw new TypeError("Cannot convert undefined or null to object");
  }

  var output = Object(target);
  for (var index = 1; index < arguments.length; index++) {
    var source = arguments[index];
    if (source !== undefined && source !== null) {
      for (var nextKey in source) {
        if (source.hasOwnProperty(nextKey)) {
          output[nextKey] = source[nextKey];
        }
      }
    }
  }
  return output;
};
es 6 應(yīng)用 箭頭函數(shù),函數(shù)參數(shù)默認(rèn)值及解析構(gòu)
wx.request({
  complete: ({data= {}}) => {
    // 1. 因?yàn)?wx.request 返回的接口數(shù)據(jù)是在 data 屬性里,這里我們只要 data 屬性就行了,所以直接參數(shù)解析構(gòu)
    // 2. 如果 failed,無(wú) data 時(shí),data 將為默認(rèn)值 {}
    if(data.code !== 0) {
      // do something if request failed
      return;
    }
    // 請(qǐng)求正常處理代碼
    // 3. 因?yàn)橛玫募^函數(shù),回調(diào)里可以正常使用 this, 訪問 Page 對(duì)象的方法
    // 比如 this.setData(...)
  }
})

一些函數(shù)參數(shù)也可以直接使用默認(rèn)參數(shù)。

拓展運(yùn)算符 和 對(duì)象屬性簡(jiǎn)寫

在給 template 傳 data 參數(shù)時(shí),可以使用對(duì)象屬性簡(jiǎn)寫,如

這樣 template 中可以使用變量為 obj 對(duì)象的所有 key,以及 idname

模板字符串

小程序里可以直接方便的使用 es 6 模板字符串

let url = `${app.globalData.API_PREFIX}/cart/add`;
更多 es 6 特性

請(qǐng)參考:https://uedsky.com/2016-06/es6/

其它注意

wx.showToast 圖標(biāo)只支持"success"、"loading",錯(cuò)誤提示得自定義

如果 template 里面的變量沒值,請(qǐng)看 data 傳進(jìn)來(lái)沒有。

開發(fā)工具(v0.10.102800)可以用下面方法添加接口請(qǐng)求域名,遺憾的是微信里不行。

// 放到 app.js 前面
 __wxConfig.projectConfig.Network.RequestDomain.push("https://weapp.juanpi.com");

所有頁(yè)面的 JS 會(huì)在啟動(dòng)時(shí)立即執(zhí)行,而不是打開頁(yè)面才執(zhí)行,所以一些寫在全局的代碼應(yīng)該盡量放到 onLoad 之后,下面是從調(diào)試 source 里看到加載的代碼:

define("pages/index/index.js", function(require, module, exports, window,document,frames,self,location,navigator,localStorage,history,Caches,screen,alert,confirm,prompt,XMLHttpRequest,WebSocket ){ "use strict";

var app = getApp();

var util = require("../../../utils/util");
var ErrorMsg = require("../../../components/error-msg/error-msg");
var AddressPicker = require("../../../components/address-picker/address-picker");

Page(util.mergePage({
  // 頁(yè)面代碼省略
}, AddressPicker, ErrorMsg));
//# sourceMappingURL=data:application/json;...
});require("pages/index/index.js")
參考

https://mp.weixin.qq.com/debu...

原文地址:https://uedsky.com/2016-11/weixin-app/
獲取最佳閱讀體驗(yàn)并參與討論,請(qǐng)?jiān)L問原文

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80883.html

相關(guān)文章

  • 前端資源系列(3)-微信小程開發(fā)資源匯總

    摘要:微信小程序應(yīng)用號(hào)開發(fā)資源匯總文檔工具教程代碼插件組件文檔從搭建一個(gè)微信小程序開始小程序開發(fā)文檔小程序設(shè)計(jì)指南工具小程序開發(fā)者工具官方支持微信小程序?qū)崟r(shí)預(yù)覽的支持的微信小程序組件化開發(fā)框架轉(zhuǎn)在線工具小程序云端增強(qiáng)社區(qū)微信小程序 微信(小程序or應(yīng)用號(hào))開發(fā)資源匯總-文檔-工具-教程-代碼-插件-組件 文檔 從搭建一個(gè)微信小程序開始 小程序開發(fā)文檔 小程序設(shè)計(jì)指南 工具 小程序開發(fā)者...

    paney129 評(píng)論0 收藏0
  • 微信小程開發(fā)資源匯總 awesome-wechat-weapp(不定期更新)

    摘要:本文托管在上,不定期更新最后更新時(shí)間官方文檔小程序開發(fā)文檔小程序設(shè)計(jì)指南小程序開發(fā)者工具新聞報(bào)道微信正式開放內(nèi)測(cè)小程序,不開發(fā)的日子真的來(lái)了氪關(guān)于微信小程序應(yīng)用號(hào),我能透露的幾個(gè)細(xì)節(jié)可能吧你的產(chǎn)品適不適合做微信小程序你需要這篇產(chǎn)品邏 本文托管在github上,不定期更新:justjavac/awesome-wechat-weapp 最后更新時(shí)間:2016-09-24 06:22:10 ...

    lscho 評(píng)論0 收藏0
  • 微信小程資源匯總整理

    摘要:有問題可通過微博聯(lián)系我開源項(xiàng)目微信小程序微信小應(yīng)用資源破解文檔微信小應(yīng)用示例代碼文檔簡(jiǎn)易教程開發(fā)者工具文檔文檔視圖組件文檔常見問題教程微信小程序開發(fā)文檔微信公眾平臺(tái)文檔微信小程序怎么開發(fā)玩物志用一個(gè)上午上線了電商應(yīng)用愛范兒 有問題可通過微博聯(lián)系我: http://weibo.com/jinfali 開源項(xiàng)目 wechatApp-demo - 微信小程序 DEMO weapp-ide-...

    guqiu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<