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

資訊專欄INFORMATION COLUMN

微信小程序開發一周總結

DDreach / 635人閱讀

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

編輯器

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

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

也可以安裝小程序相關插件

開始寫代碼

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

view 組件對應 html 里的 div

text 對應 span

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

公用組件

項目目錄里新建 components ,按類似 pages 目錄結構,將每個組件的模板,樣式和 js 文件放在同一個文件夾

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

樣式使用 @import 導入

js 使用 require 引入到頁面,然后使用下面的 mergePage 來加載到頁面對象中。

mergePage

組件的加載

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

使用mergePage方法的優點是可以將所有組件方法及頁面事件注冊到頁面對象

組件的編寫方式

var errorTimer;

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

組件里使用可以 this.setData 來更新頁面數據,或者注冊 onLoadonShow等頁面事件,mergePage 的最后一個參數的事件會最先調用。

mergePage 的源碼

/**
 * 合并 Page 對象所有的方法及事件
 * 子對象不能使用 data 屬性,請在 onLoad 中使用 setData 方法設置
 */
function mergePage(dest, ...src) {
  let args = arguments;
  let eventsStack = {
    onLoad: [],
    onReady: [],
    onShow: [],
    onHide: [],
    onUnload: [],
    onPullDownRefresh: [],
    onReachBottom: [],
  };
  // 保存所有的事件,最后一個參數的事件會最先調用。
  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(不支持數組參數展開)
  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 這個,除了上面的 mergePage,其它地方也會經常用到。
我們可以到 app.js 里檢測是否支持,然后添加 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 應用 箭頭函數,函數參數默認值及解析構
wx.request({
  complete: ({data= {}}) => {
    // 1. 因為 wx.request 返回的接口數據是在 data 屬性里,這里我們只要 data 屬性就行了,所以直接參數解析構
    // 2. 如果 failed,無 data 時,data 將為默認值 {}
    if(data.code !== 0) {
      // do something if request failed
      return;
    }
    // 請求正常處理代碼
    // 3. 因為用的箭頭函數,回調里可以正常使用 this, 訪問 Page 對象的方法
    // 比如 this.setData(...)
  }
})

一些函數參數也可以直接使用默認參數。

拓展運算符 和 對象屬性簡寫

在給 template 傳 data 參數時,可以使用對象屬性簡寫,如

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

模板字符串

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

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

請參考:https://uedsky.com/2016-06/es6/

其它注意

wx.showToast 圖標只支持"success"、"loading",錯誤提示得自定義

如果 template 里面的變量沒值,請看 data 傳進來沒有。

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

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

所有頁面的 JS 會在啟動時立即執行,而不是打開頁面才執行,所以一些寫在全局的代碼應該盡量放到 onLoad 之后,下面是從調試 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({
  // 頁面代碼省略
}, AddressPicker, ErrorMsg));
//# sourceMappingURL=data:application/json;...
});require("pages/index/index.js")
參考

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

原文地址:https://uedsky.com/2016-11/weixin-app/
獲取最佳閱讀體驗并參與討論,請訪問原文

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/80883.html

相關文章

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

    摘要:微信小程序應用號開發資源匯總文檔工具教程代碼插件組件文檔從搭建一個微信小程序開始小程序開發文檔小程序設計指南工具小程序開發者工具官方支持微信小程序實時預覽的支持的微信小程序組件化開發框架轉在線工具小程序云端增強社區微信小程序 微信(小程序or應用號)開發資源匯總-文檔-工具-教程-代碼-插件-組件 文檔 從搭建一個微信小程序開始 小程序開發文檔 小程序設計指南 工具 小程序開發者...

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

    摘要:本文托管在上,不定期更新最后更新時間官方文檔小程序開發文檔小程序設計指南小程序開發者工具新聞報道微信正式開放內測小程序,不開發的日子真的來了氪關于微信小程序應用號,我能透露的幾個細節可能吧你的產品適不適合做微信小程序你需要這篇產品邏 本文托管在github上,不定期更新:justjavac/awesome-wechat-weapp 最后更新時間:2016-09-24 06:22:10 ...

    lscho 評論0 收藏0
  • 微信小程資源匯總整理

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

    guqiu 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<