EWA:一款小程序增强开发工具,提升开发效率
EWA (微信小程序增强开发工具)
Enhanced Wechat App Development Toolkit (微信小程序增强开发工具)
项目地址:https://github.com/lyfeyaj/ewa,欢迎试用 ~
为什么开发这个工具?
厌倦了不停的对比 wepy 或者 mpvue 的特性,间歇性的踩雷,以及 code once, run everywhere
的幻想。只想给小程序开发插上效率的翅膀 ~
功能特性
- async/await 支持
- Javascript ES2017 语法
- 原生小程序所有功能
- 微信接口 Promise 化
- 支持安装 NPM 包
- 支持 SCSS 以及 小于 16k 的 background-image
- 支持 source map, 方便调试
- 添加新页面或新组件无需重启编译
- 允许自定义编译流程
更多特性正在赶来 … 敬请期待 👇
- LESS 支持
- 可跨项目复用的小程序组件或页面(通过NPM包管理)
- Redux 支持
- Mixin 支持
安装
需要 node 版本 >= 8
npm i -g ewa-cli 或者 yarn global add ewa-cli
如何使用
创建新项目
ewa new your_project_name
集成到现有小程序项目,仅支持小程序原生开发项目转换
注意:使用此方法,请务必对项目代码做好备份!!!
cd your_project_dir && ewa init
启动
运行 npm start
即可启动实时编译
运行 npm run build
即可编译线上版本(相比实时编译而言,去除了 source map 并增加了代码压缩混淆等,体积更小)
上述命令运行成功后,可以看到本地多了个 dist
目录,这个目录里就是生成的小程序相关代码。
使用微信开发者工具选择 dist
目录打开,即可预览项目
目录结构
├── .ewa 特殊占位目录,用于检查是否为 ewa 项目
├── dist 小程序运行代码目录(该目录由ewa的start 或者 build指令自动编译生成,请不要直接修改该目录下的文件)
├── node_modules 外部依赖库
├── src 代码编写的目录(该目录为使用ewa后的开发目录)
│ ├── components 小程序组件目录
│ ├── pages 小程序页面目录
│ │ ├── index
│ │ │ ├── index.js
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ └── logs
│ │ ├── logs.js
│ │ ├── logs.json
│ │ ├── logs.wxml
│ │ └── logs.wxss
│ ├── templates 小程序模版目录
│ ├── utils
│ │ └── util.js
│ ├── app.js 小程序入口文件
│ ├── app.json 小程序全局配置文件
│ ├── app.wxss 小程序全局样式文件
│ └── project.config.json 微信开发者工具小程序项目配置文件
├── ewa.config.js ewa 配置文件
├── .gitignore
├── .eslintrc.js eslint 配置
└── package.json
微信接口 Promise 化
const { wx } = require('ewa');
Page({
async onLoad() {
let { data } = await wx.request({ url: 'http://your_api_endpoint' });
}
})
配置
ewa 通过 ewa.config.js
来支持个性化配置。如下所示:
// ewa.config.js
module.exports = {
// 公用代码库 (node_modules 打包生成的文件)名称,默认为 vendors.js
commonModuleName: 'vendors.js',
// 通用模块匹配模式,默认为 /[\\/]node_modules[\\/]/
commonModulePattern: /[\\/]node_modules[\\/]/,
// 是否简化路径,作用于 page 和 component,如 index/index.wxml=> index.wxml,默认为 false
simplifyPath: false,
// 文件夹快捷引用
aliasDirs: [
'apis',
'assets',
'constants',
'utils'
],
// 需要拷贝的文件类型
copyFileTypes: [
'png',
'jpeg',
'jpg',
'gif',
'svg',
'ico'
],
// webpack loader 规则
rules: [],
// webpack 插件
plugins: [],
// 嫌不够灵活?直接修改 webpack 配置
webpack: function(config) {
return config;
}
};
常见问题 & Tips
- wxss 中可以直接编写 scss 样式代码
- 可以使用
@
来代替源代码根目录来引入代码或样式,如const utils = require('@/utils/util')