介紹一個小程序預(yù)處理器

前言

用過原生,用過 wepy,用過 mp-vue,但是都不是非常滿意,原生的痛點是文件太多,wepymp-vue 的問題見 mpvue和wepy問題總結(jié),最后不得不和同事一起做了一個超輕量的小程序單文件解析器 mp-parser,在貼合原生語法的同時解決掉文件太多的痛點。并配套研發(fā)了腳手架 mp-parser-cli ,提供了很多通用能力比如字體壓縮、代碼壓縮、通用組件、http & cookie 封裝等。

單文件形式

mp-parser 的核心就是單文件解析以及熱更新,下面為一個語法示例(demo.vue),標(biāo)簽內(nèi)的所有語法皆為原生語法。

<!-- config 標(biāo)簽下的內(nèi)容會被解析到 .json 文件中 -->
<config>
    {
        usingComponents: {}
    }
</config>

<!-- template 標(biāo)簽下的內(nèi)容會被解析到 .wxml 文件中 -->
<template>
     <navigation title="自定義導(dǎo)航欄"></navigation>
</template>

<!-- script 標(biāo)簽下的內(nèi)容會被解析到 .js 文件中 -->
<script>
Page({})
</script>

<!-- style 標(biāo)簽下的內(nèi)容會被解析到 .wxss 文件中,支持 sass 語法 -->
<style lang="scss">
</style>

通用能力

mp-parser 腳手架提供了非常多的通用能力,詳細(xì)文檔見 github地址。

http 請求

http 請求 promise 化,簡化了請求語法,且會自動攜帶 cookie

Page({
    onLoad() {
        // get
        this.$http.get('url', {params: ''}).then((res) => {}).catch((err) => {});

        // post
        this.$http.post('url', {params: ''}).then((res) => {}).catch((err) => {});
    }
})
通用組件

我們提供了非常多的通用組件,比如常用有

  • 自定義導(dǎo)航欄 navigation
  • 拖拽卡片 drag-card
  • 倒計時 count-down
  • 省略文本 ellipsis-text
  • 吸底輸入框 fixed-inputter
  • 圖片裁剪器 image-cropper
  • 范圍選擇器 range-slider
  • 全屏錄像 video-recorder
  • 左滑刪除 sideslipping
通用彈窗
Page({
    onLoad() {
        // { title, needHideLoading }
        this.$showSuccess('操作成功', false);

        // { title, content, needHideLoading}
        this.$showError('操作失敗', '操作失敗,請稍后重試', false);

        this.$showLoading('數(shù)據(jù)加載中...');
        this.$hideLoading();
    }
})
字體壓縮

字體配置完后執(zhí)行以下命令,具體配置教程見 字體壓縮配置教程

npm run fontCompression

安裝使用

# 安裝腳手架
npm install -g mp-parser-cli

# 新建項目
mp-parser-cli-init <project_name>

# 安裝依賴
cd <project_name>
npm install

# 運行
npm run dev

# 打開開發(fā)者工具,選擇dist目錄,查看效果

補一下各庫的核心實現(xiàn)方案

小程序壓縮工具 wx-minifier
  • 參考 html-minifier 的思路,做了一個適合小程序的 wxml-minifier,核心思路:解析文檔流,處理標(biāo)簽、屬性,移除注釋、多余空格、換行等。

  • 基于 cssnano,替換了少部分不適用的邏輯,用來壓縮 wxss 代碼。

  • 使用 uglify-es 壓縮 js 代碼

小程序腳手架 mp-parser-cli
  • 通過 commander 解讀命令行
  • 通過 download-git-repo 拉取 github 模板倉庫到本地

小程序模板倉庫 mp-parser-template

  • 封裝通用能力、通用彈窗、工具方法、通用組件等

小程序預(yù)處理器 mp-parser

  • 使用 vue-template-compiler 解析單文件
  • 使用 node-sass 解析 sass 內(nèi)容
  • 使用 chokidar 監(jiān)聽文件變化,動態(tài)解析變動文件、處理靜態(tài)資源
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 開源項目 wepy-wechat-demo:基于wepy開發(fā)的仿微信聊天界面小程序 深大的樹洞:基于wepy開發(fā)的...
    dufebin閱讀 4,225評論 0 19
  • 簡介 微信小程序入門門檻低、開發(fā)周期短、代碼編寫靈活、傳播速度快等優(yōu)點讓微信小程序迅速火爆,開發(fā)者紛紛涌入,任何語...
    大公爵閱讀 4,509評論 0 10
  • 一個很好的圖表制作第三方框架的使用:Charts 柱狀圖 BarChatView,創(chuàng)建如下圖的效果 初始化并進(jìn)行一...
    StoneWing閱讀 2,988評論 0 1
  • 2010年5月1日華工寫意(及其他) 51假期為了躲sb會的人海,逃回武漢,正好yimin也難得回來一趟,于是勞動...
    nailshif閱讀 246評論 0 1
  • 昨天,多倫多猛龍隊成了NBA總冠軍,華裔球員林書豪獲得了一枚NBA總冠軍的戒指。 總冠軍戒指是許多...
    茶者子澄閱讀 239評論 0 1

友情鏈接更多精彩內(nèi)容