91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

小程序?qū)嵱每蚣苤甒ePY篇

張康康 ? 2019-08-26 18:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一.WePY 是什么?

8c58a2cdc0d14556be4ea3efb016b5d3.png

前端開(kāi)發(fā)者肯定對(duì) Vue.js 和 Webpack 這兩個(gè)開(kāi)源項(xiàng)目非常熟悉。Web App 或 H5 開(kāi)發(fā)過(guò)程中,我們常常將 Vue.js 用作核心庫(kù),用 Webpack 做模塊化打包,讓其能夠運(yùn)行于瀏覽器端。那么 WePY 是什么東西呢?我們可以把 WePY 理解成 Web 端的 Vue.js 和 Webpack 的結(jié)合體,它能夠通過(guò)編譯手段運(yùn)行在小程序端,并且可以使用 Vue.js 的一些語(yǔ)法和特性。

二.WePY 的功能與特點(diǎn)

首先我們先說(shuō)說(shuō)原生小程序開(kāi)發(fā)中的痛點(diǎn)

1) 頻繁調(diào)用 setData及 setData過(guò)程中頁(yè)面跳閃

2) 組件化支持能力太弱(幾乎沒(méi)有)

3) 不能使用 less、jade 等

4) 無(wú)法使用 NPM 包及 ES 高級(jí)語(yǔ)法

5) request 并發(fā)次數(shù)限制

6) 一個(gè)頁(yè)面對(duì)應(yīng)4個(gè)文件,看的眼花繚亂

WePY相比于小程序,主要優(yōu)點(diǎn)如下:

1、開(kāi)發(fā)模式容易轉(zhuǎn)換 wepy在原有的小程序的開(kāi)發(fā)模式下進(jìn)行再次封裝,更貼近于現(xiàn)有MVVM框架開(kāi)發(fā)模式??蚣茉陂_(kāi)發(fā)過(guò)程中參考了 一些現(xiàn)在框架的一些特性,并且融入其中,以下是使用wepy前后的代碼對(duì)比圖。

官方DEMO代碼:

92d3aec181894931bcad1afd317194fb.png

基于wepy的實(shí)現(xiàn):

68c28da8d0b04d69aa43af73b66a62b6.png

  1. 真正的組件化開(kāi)發(fā)小程序雖然有標(biāo)簽可以實(shí)現(xiàn)組件復(fù)用,但僅限于模板片段層面的復(fù)用,業(yè)務(wù)代碼與交互事件 仍需在頁(yè)面處理。無(wú)法實(shí)現(xiàn)組件化的松耦合與復(fù)用的效果。

wepy組件示例

f06074565da2480c98184e9e32bc4c3a.png

a7f8d65e42a646bfa2c6591194e0d10c.png

3.支持加載外部NPM包 小程序較大的缺陷是不支持NPM包,導(dǎo)致無(wú)法直接使用大量?jī)?yōu)秀的開(kāi)源內(nèi)容,wepy在編譯過(guò)程當(dāng)中,會(huì)遞歸 遍歷代碼中的require然后將對(duì)應(yīng)依賴文件從node_modules當(dāng)中拷貝出來(lái),并且修改require為相對(duì)路徑, 從而實(shí)現(xiàn)對(duì)外部NPM包的支持。

4.單文件模式,使得目錄結(jié)構(gòu)更加清晰 小程序官方目錄結(jié)構(gòu)要求app必須有三個(gè)文件app.json,app.js,app.wxss,頁(yè)面有4個(gè)文件 index.json,index.js,index.wxml,index.wxss。而且文 件必須同名。 所以使用wepy開(kāi)發(fā)前后開(kāi)發(fā)目錄對(duì)比如下:

5.默認(rèn)使用babel編譯,支持ES6/7的一些新特性。

6.wepy支持使用less默認(rèn)開(kāi)啟使用了一些新的特性如promise,async/await等等

三.WePY 開(kāi)發(fā)總結(jié)

1. 自定義 interceptor

創(chuàng)建 network 文件夾 新建 interceptor.js

905a88a18cde4861880f48009136a578.png

新建 index.js

ea0d39b4900a40918ccb31616037292f.png

最后在 app.wpy中引入 req

32a58eb7489649c6b3b64228fc35e715.png

2. request 加入失敗重試

創(chuàng)建 retry.js

12c2dd461794457598bea47580addb29.png

修改 network 下index.js

f561ca58f06f4231ba87acb6715b6005.png

3. repeat標(biāo)簽嵌套兩級(jí)以及以上組件傳值給自組件傳值問(wèn)題

5d0dec913c8345239d9817922eaa41ba.png

這個(gè)問(wèn)題其實(shí)是wepy的一個(gè)bug,在github上已經(jīng)有好多人提過(guò)Issues,官方并沒(méi)有給出解釋,經(jīng)過(guò)自己的摸索,有兩種解決方式:

  1. 對(duì)于純組件用小程序原生的模板template代替

子組件中第二層循環(huán)采用此寫法,直接使用template

628b7aa6cdca40c498a42d953a89db0d.png

在主頁(yè)面中引入此模板

3764ef33293c4eb9970ba3d982b78e86.png

wepy最終會(huì)把所引用的組件代碼,都打包到一個(gè)主頁(yè)面中的,所以在主頁(yè)面引入模板即可

  1. 第一種方法可以解決這個(gè)問(wèn)題,并且還節(jié)省了代碼量,但這屬于wepy和原生小程序混寫,后面又發(fā)現(xiàn)另一種解決辦法

對(duì)于第二層循環(huán)要傳的值,用repeat標(biāo)簽包裹一層

f8b79e03898b49ecab58f5fa3490cb4f.png

4. 小程序開(kāi)發(fā)工具變慢

在開(kāi)發(fā)過(guò)程城中,隨著項(xiàng)目文件的越來(lái)越大,會(huì)發(fā)現(xiàn)小程序的開(kāi)發(fā)工具越來(lái)越慢,甚至一個(gè)跳轉(zhuǎn)都要等幾秒鐘才能跳轉(zhuǎn)過(guò)去,這個(gè)時(shí)候需要把小程序打包出來(lái)的文件dist文件夾刪掉,然后重新打包,會(huì)快很多,wepy也提供了命令,直接運(yùn)行 npm run clean 也能達(dá)到同樣的效果。

5. 小程序在手機(jī)上預(yù)覽,出現(xiàn)卡頓現(xiàn)象

出現(xiàn)這種情況有多方面的原因,如果你之前用過(guò)原生小程序開(kāi)發(fā)過(guò)項(xiàng)目,那么直接點(diǎn)擊開(kāi)發(fā)工具上的預(yù)覽按鈕,然后用手機(jī)掃碼預(yù)覽是一個(gè)常見(jiàn)的操作,但是在使用wepy過(guò)程中,你使用npm run dev 命令后,是出于開(kāi)發(fā)環(huán)境,dist文件夾中的代碼并沒(méi)有進(jìn)行壓縮,優(yōu)化,所以手機(jī)預(yù)覽的時(shí)候會(huì)顯得很慢,運(yùn)行 npm run build打成生產(chǎn)包預(yù)覽,可以解決。

6. 個(gè)別手機(jī)樣式錯(cuò)亂

安裝 autoprefixer 即可

7. mixin

wepy的mixin,與vue中的mixin執(zhí)行順序相反

  • wepy中,會(huì)先執(zhí)行組件自身的,再執(zhí)行mixin中的

  • vue中對(duì)于鉤子函數(shù),會(huì)先執(zhí)行mixin中的,再執(zhí)行組件自身的;vue中methods如果和mixin同名,那么只會(huì)執(zhí)行自身的方法

以上是wepy的簡(jiǎn)要介紹,有興趣的朋友可以閱讀源碼。 綜合來(lái)講,wepy的核心在于編譯環(huán)節(jié),能夠?qū)?yōu)雅簡(jiǎn)潔的類似VUE風(fēng)格的代碼,編譯成微信小程序所需要的繁雜代碼。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    碼神之路Netty-從零實(shí)現(xiàn)RPC框架課分享

    ——RPC(遠(yuǎn)程過(guò)程調(diào)用)框架。它像人體的神經(jīng)系統(tǒng)一樣,連接著各個(gè)服務(wù)器官,確保指令的準(zhǔn)確傳達(dá)。Netty,作為 Java 領(lǐng)域當(dāng)之無(wú)愧的網(wǎng)絡(luò)通信王者,其高性能、高并發(fā)的設(shè)計(jì)理念,使其成為構(gòu)建現(xiàn)代 RPC 框架的不二選。本文將
    的頭像 發(fā)表于 02-13 11:38 ?61次閱讀

    LuatOS框架的使用(上)

    在資源受限的物聯(lián)網(wǎng)終端設(shè)備中,如何實(shí)現(xiàn)快速開(kāi)發(fā)與穩(wěn)定運(yùn)行是關(guān)鍵挑戰(zhàn)。LuatOS框架通過(guò)將Lua語(yǔ)言與底層硬件抽象層深度融合,提供了一套簡(jiǎn)潔高效的開(kāi)發(fā)范式。本文將圍繞LuatOS框架的使用展開(kāi),從
    的頭像 發(fā)表于 01-27 19:38 ?170次閱讀
    LuatOS<b class='flag-5'>框架</b>的使用(上)

    簡(jiǎn)單易用的嵌入式軟件程序框架

    1、程序框架的重要性 很多人尤其是初學(xué)者在寫代碼的時(shí)候往往都是想一點(diǎn)寫一點(diǎn),最開(kāi)始沒(méi)有一個(gè)整體的規(guī)劃,導(dǎo)致后面代碼越寫越亂,bug不斷。 最終代碼跑起來(lái)看似沒(méi)有問(wèn)題(有可能也真的沒(méi)有問(wèn)題),但是要加
    發(fā)表于 12-25 07:45

    閃燈程序的構(gòu)建與調(diào)試

    在上一文章中我們成功了搭建了環(huán)境,那么接下來(lái)就用閃燈程序來(lái)認(rèn)識(shí)一下編譯和調(diào)試工具吧!
    的頭像 發(fā)表于 11-05 14:52 ?4319次閱讀
    閃燈<b class='flag-5'>程序</b>的構(gòu)建與調(diào)試

    PYQT 應(yīng)用程序框架及開(kāi)發(fā)工具

    大家好,本團(tuán)隊(duì)此次分享的內(nèi)容為開(kāi)發(fā)過(guò)程中使用到的PYQT 應(yīng)用程序框架及開(kāi)發(fā)工具。 pYqt 是一個(gè)多平臺(tái)的 python 圖形用戶界面應(yīng)用程序框架,由于其面向?qū)ο蟆? 易擴(kuò)展(可
    發(fā)表于 10-29 07:15

    NVIDIA TensorRT LLM 1.0推理框架正式上線

    TensorRT LLM 作為 NVIDIA 為大規(guī)模 LLM 推理打造的推理框架,核心目標(biāo)是突破 NVIDIA 平臺(tái)上的推理性能瓶頸。為實(shí)現(xiàn)這一目標(biāo),其構(gòu)建了多維度的核心實(shí)現(xiàn)路徑:一方面,針對(duì)需
    的頭像 發(fā)表于 10-21 11:04 ?1200次閱讀

    請(qǐng)問(wèn)STM32如何移植Audio框架?

    最近在學(xué)習(xí)音頻解碼,想用一下Audio框架。 1、這個(gè)該如何移植到自己創(chuàng)建的BSP并對(duì)接到device框架中?看了官方移植文檔沒(méi)有對(duì)沒(méi)有對(duì)該部分的描述。 2、我只想實(shí)現(xiàn)一個(gè)簡(jiǎn)單的播放功能,只用一個(gè)DAC芯片(比如CS4344)是否就能達(dá)到我的需求?
    發(fā)表于 09-25 07:17

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側(cè)提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過(guò)該接口輸出,本文的核心內(nèi)容是介紹如何在Android平臺(tái)上有效利用
    發(fā)表于 06-15 23:20

    零死角玩轉(zhuǎn)STM32——初級(jí)

    本文共4冊(cè),由于資料內(nèi)存過(guò)大,分開(kāi)上傳,有需要的朋友可以去主頁(yè)搜索下載哦~ 《零死角玩轉(zhuǎn) STM32》系列教程由初級(jí)、中級(jí)、高級(jí)、系統(tǒng)、四個(gè)部分組成,更適合初學(xué)者,步步為營(yíng)
    發(fā)表于 05-21 13:48

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Regmap子系統(tǒng)Regmap框架結(jié)構(gòu)

    供了一些工具函數(shù),用于解析和處理寄存器值,如位字段操作等。Regmap API:Regmap框架提供了一組API函數(shù),用于在驅(qū)動(dòng)程序中使用Regmap進(jìn)行寄存器訪問(wèn)。這些API函數(shù)包括
    發(fā)表于 04-17 13:59

    【技術(shù)案例】Qt 環(huán)境部署 - Ubuntu

    什么是Qt?Qt是一個(gè)跨平臺(tái)C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架,可構(gòu)建高性能的桌面、移動(dòng)及Web應(yīng)用程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο蟮?/div>
    的頭像 發(fā)表于 04-16 17:17 ?1952次閱讀
    【技術(shù)案例】Qt 環(huán)境部署 - Ubuntu <b class='flag-5'>篇</b>

    AI框架不牢,模型地動(dòng)山搖

    把智能世界,建造在國(guó)產(chǎn)框架的地基上
    的頭像 發(fā)表于 04-07 13:55 ?2004次閱讀
    AI<b class='flag-5'>框架</b>不牢,模型地動(dòng)山搖

    STM32如何移植Audio框架?

    最近在學(xué)習(xí)音頻解碼,想用一下Audio框架。 1、這個(gè)該如何移植到自己創(chuàng)建的BSP并對(duì)接到device框架中?看了官方移植文檔沒(méi)有對(duì)沒(méi)有對(duì)該部分的描述。 2、我只想實(shí)現(xiàn)一個(gè)簡(jiǎn)單的播放功能,只用一個(gè)DAC芯片(比如CS4344)是否就能達(dá)到我的需求?
    發(fā)表于 04-01 08:08

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)字符驅(qū)動(dòng)框架描述

    字符驅(qū)動(dòng)框架的核心組件包括以下部分: 文件操作函數(shù) (file_operations):字符驅(qū)動(dòng)框架通過(guò) file_operations結(jié)構(gòu)體定義了一組函數(shù)指針,用于處理設(shè)備文件的各種操作,如打開(kāi)
    發(fā)表于 03-17 14:05

    飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)字符驅(qū)動(dòng)框架描述

    字符驅(qū)動(dòng)框架的核心組件包括以下部分: 文件操作函數(shù) (file_operations):字符驅(qū)動(dòng)框架通過(guò) file_operations結(jié)構(gòu)體定義了一組函數(shù)指針,用于處理設(shè)備文件的各種操作,如打開(kāi)
    發(fā)表于 03-14 09:45