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

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

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

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

張康康 ? 2019-08-26 18:52 ? 次閱讀

一.WePY 是什么?

8c58a2cdc0d14556be4ea3efb016b5d3.png

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

二.WePY 的功能與特點

首先我們先說說原生小程序開發(fā)中的痛點

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

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

3) 不能使用 less、jade 等

4) 無法使用 NPM 包及 ES 高級語法

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

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

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

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

官方DEMO代碼:

92d3aec181894931bcad1afd317194fb.png

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

68c28da8d0b04d69aa43af73b66a62b6.png

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

wepy組件示例

f06074565da2480c98184e9e32bc4c3a.png

a7f8d65e42a646bfa2c6591194e0d10c.png

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

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

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

6.wepy支持使用less默認開啟使用了一些新的特性如promise,async/await等等

三.WePY 開發(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)簽嵌套兩級以及以上組件傳值給自組件傳值問題

5d0dec913c8345239d9817922eaa41ba.png

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

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

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

628b7aa6cdca40c498a42d953a89db0d.png

在主頁面中引入此模板

3764ef33293c4eb9970ba3d982b78e86.png

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

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

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

f8b79e03898b49ecab58f5fa3490cb4f.png

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

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

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

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

6. 個別手機樣式錯亂

安裝 autoprefixer 即可

7. mixin

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

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

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

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


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

    評論

    相關(guān)推薦

    迅為iTOP-RK3568開發(fā)板驅(qū)動開發(fā)指南-第十八 PWM

    介紹 ?第九 設(shè)備模型 第85章設(shè)備模型基本框架-kobject和kset 第86章 創(chuàng)建kobject實驗 第87章 創(chuàng)建kset實驗 第88章 為什么要引入設(shè)備模型 第89章 進一步探究設(shè)備模型
    發(fā)表于 10-29 10:13

    Dubbo源碼淺析(一)—RPC框架與Dubbo

    比較常用,像我們應(yīng)用內(nèi)部程序**(注意此處是程序而不是方法,程序包含方法)**互相調(diào)用即為本地過程調(diào)用,而遠程過程調(diào)用是指在本地調(diào)取遠程過程進行使用。 而RPC框架就是為了幫助我們在本
    的頭像 發(fā)表于 08-16 15:18 ?578次閱讀
    Dubbo源碼淺析(一)—RPC<b class='flag-5'>框架</b>與Dubbo

    日志框架簡介-Slf4j+Logback入門實踐

    前言 隨著互聯(lián)網(wǎng)和大數(shù)據(jù)的迅猛發(fā)展,分布式日志系統(tǒng)和日志分析系統(tǒng)已廣泛應(yīng)用,幾乎所有應(yīng)用程序都使用各種日志框架記錄程序運行信息。因此,作為工程師,了解主流的日志記錄框架非常重要。雖然應(yīng)
    的頭像 發(fā)表于 07-30 10:00 ?1043次閱讀
    日志<b class='flag-5'>框架</b>簡介-Slf4j+Logback入門實踐

    bootstrap框架用什么軟件開發(fā)

    Bootstrap是一個流行的前端框架,用于快速開發(fā)響應(yīng)式和移動優(yōu)先的Web應(yīng)用程序。它提供了一套預(yù)定義的CSS和JavaScript組件,使得開發(fā)者可以快速構(gòu)建出漂亮的用戶界面
    的頭像 發(fā)表于 07-11 09:50 ?396次閱讀

    文檔更新 |迅為 RK3568開發(fā)板驅(qū)動指南-第十五/十六

    attribute實驗 第81章 實現(xiàn)多級目錄實驗 第82章 移植設(shè)備樹插件驅(qū)動實驗 第83章 設(shè)備樹插件驅(qū)動分析實驗 第84章設(shè)備樹插件參考資料介紹 ?第九 設(shè)備模型 第85章設(shè)備模型基本框架-kobject
    發(fā)表于 07-08 11:04

    鴻蒙Ability Kit(程序框架服務(wù))【應(yīng)用啟動框架AppStartup】

    `AppStartup`提供了一種更加簡單高效的初始化組件的方式,支持異步初始化組件加速應(yīng)用的啟動時間。使用啟動框架應(yīng)用開發(fā)者只需要分別為待初始化的組件實現(xiàn)`AppStartup`提供
    的頭像 發(fā)表于 06-10 18:38 ?658次閱讀

    OpenHarmony4.0源碼解析媒體框架

    媒體框架簡介 媒體框架 multimedia_player_framework 主要提供音視頻的錄制與播放功能。 框架簡介 從框架圖中可以看出,媒體
    的頭像 發(fā)表于 02-26 22:05 ?723次閱讀
    OpenHarmony4.0源碼解析<b class='flag-5'>之</b>媒體<b class='flag-5'>框架</b>

    微軟發(fā)布Agent框架UFO,引領(lǐng)UI交互新紀(jì)元

    微軟近日宣布推出全新的Agent框架——UFO(UI-Focused Agent),旨在構(gòu)建更智能、更直觀的用戶界面交互體驗。該框架基于OpenAI的GPT-4V圖像識別模型開發(fā),專為Windows操作系統(tǒng)上的應(yīng)用程序設(shè)計,能夠
    的頭像 發(fā)表于 02-19 11:15 ?1102次閱讀

    OpenHarmony NAPI 框架介紹

    環(huán)境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱 “OpenHarmony”)應(yīng)用層基于 javascript 語言開發(fā),而系統(tǒng)框架層則基于 C++ 語言。它們之間需要一
    的頭像 發(fā)表于 02-01 17:34 ?627次閱讀
    OpenHarmony <b class='flag-5'>之</b> NAPI <b class='flag-5'>框架</b>介紹

    R-Rhealstone框架使用教程

    本篇文章描述基于Rhealstone的系統(tǒng)實時性的測量基準(zhǔn)的框架--R-Rhealstone框架。
    的頭像 發(fā)表于 01-18 10:54 ?1468次閱讀
    R-Rhealstone<b class='flag-5'>框架</b>使用教程

    什么是LlamaIndex?LlamaIndex數(shù)據(jù)框架的特點和功能

    LlamaIndex是一個數(shù)據(jù)框架,用于讓基于LLM的應(yīng)用程序攝取、結(jié)構(gòu)化和訪問私有或領(lǐng)域特定的數(shù)據(jù)。它提供Python和Typescript版本。
    的頭像 發(fā)表于 01-05 11:08 ?9073次閱讀
    什么是LlamaIndex?LlamaIndex數(shù)據(jù)<b class='flag-5'>框架</b>的特點和功能

    搭建ssm框架的詳細流程

    隨著互聯(lián)網(wǎng)的快速發(fā)展,Web應(yīng)用程序的開發(fā)越來越受到重視。而在Java開發(fā)領(lǐng)域,SSM框架(Spring + SpringMVC + MyBatis)已經(jīng)成為非常流行的一種開發(fā)架構(gòu)。SSM框架能夠
    的頭像 發(fā)表于 12-03 14:52 ?3217次閱讀

    javaweb的三大框架有哪些

    : Spring是目前最受歡迎和廣泛使用的Java應(yīng)用程序開發(fā)框架之一。它提供了一種輕量級的方式來構(gòu)建企業(yè)級應(yīng)用程序。Spring框架主要包括以下模塊: Spring核心模塊:提供了I
    的頭像 發(fā)表于 12-03 11:47 ?1981次閱讀

    OpenHarmonyNAPI框架介紹

    Studio 應(yīng)用開發(fā)的 cpp 代碼,在對應(yīng)的 CMakeLists.txt 中鏈接。該庫文件在 SDK 目錄下可以找到。 對于設(shè)備側(cè)開發(fā),系統(tǒng)框架中的 C++程序,則通過 BUILD.gn 文件定義依賴
    發(fā)表于 11-23 15:36

    springboot框架介紹

    Spring Boot 是一個開源的、用于開發(fā)微服務(wù)的框架,它基于 Java 平臺。它提供了一種快速、敏捷的方式來構(gòu)建獨立的、可部署的、生產(chǎn)級別的 Spring 應(yīng)用程序。Spring Boot框架
    的頭像 發(fā)表于 11-22 15:53 ?1255次閱讀