|
項目地址 在此 項目由來在使用了 wepy 和 mpvue 之后,發(fā)現(xiàn)這些開源項目在引入一些便捷的同時也引入了另一些問題,這些問題有的可以通過難看的 hack 去解決,有的就只能盼著源代碼修復,給我們造成了另外的負擔。 wepy:
mpvue:
這些問題收集于四五月份,有小概率可能會被解決。 已經(jīng)因為這些運行時框架最終還是依賴于原生能力的,原生有的問題這寫框架一定會有,所以我們想能不能直接用單文件開發(fā)的形式去寫原生小程序?這也算是“漸進式”的開發(fā)了,于是就產(chǎn)生了這個工具,不做運行時的事,只做預(yù)處理,將問題最簡單化。 使用方法# 第一步,安裝 mp-parser npm install -g mp-parser # 第二步,參考 example 文件夾自己新建目錄結(jié)構(gòu) # 第三步,在項目目錄下運行 mp-parser 執(zhí)行 mp-parser --help 查看幫助。 配置文件默認配置如下,如有需求可以通過修改項目下的 mpp.config.js 來進行覆蓋。
module.exports = {
// 項目根路徑
root: process.cwd(),
// 源代碼目錄
src: 'src',
// 解析輸出目錄
dist: 'dist',
// 源代碼目錄中的入口 app 文件名
app: 'app.vue',
// 需要解析的文件夾
needParseDirs: ['pages', 'components'],
// 需要直接復制的文件夾
needCopyDirs: ['images'],
// 各標簽塊對應(yīng)生成的擴展名
exts: {
template: 'wxml',
style: 'wxss',
script: 'js',
config: 'json',
},
};
功能特性
示例:
<config>
{
window: {
navigationBarTitleText: 'mp-parser'
}
}
</config>
<template>
<view class="red"> {{ message }} </view>
</template>
<script>
Page({
data: {
message: 'Hello mp-parser!'
}
})
</script>
<style lang="scss">
$red: red;
.red {
color: $red;
}
</style>
特殊考慮除了希望能利用單文件的開發(fā)方式來開發(fā)小程序,其他工具多多少少有些其他功能,例如自帶 js 轉(zhuǎn)碼壓縮、引入 npm 包之類的。 加入 js 轉(zhuǎn)碼壓縮主要是為了使用高級特性,例如 async,但我在 issue 中看到使用 async 函數(shù)會導致 ios 崩潰的問題,并且目前還不了解現(xiàn)在是否解決;而 es6 轉(zhuǎn) es5 和代碼壓縮使用開發(fā)工具自帶的即可。 引入 npm 包可以說是比較需要的功能,但實際我們在開發(fā)中只使用到了一小部分包,并且一些庫使用了小程序不具備的環(huán)境變量,所以在引入前應(yīng)該手動確認或修改;直接拷貝 npm 包可能會造成 dist 包過大,影響最終打包體積,使用 webpack 解決依賴又會引入額外的運行時代碼;我在初始化項目中已經(jīng)引入了 mta 和 promise 墊片,滿足一般開發(fā)需求。如果有特殊需求,會在后續(xù)考慮更優(yōu)雅的加入此功能。 其實本工具并不復雜,主要就是解決了很小的一點不便,讓我們更舒服的用原生而已,歡迎各位試用或 fork 改造,項目地址 在此。 |