基于Gulp构建的微信小程序开发工作流
- 基于
gulp+less构建的微信小程序工程项目 - 项目图片
//CDN路径自动替换 - ESLint代码检查
- 使用命令行快速创建
page和component - 集成mobx为状态管理
- 使用fly.js做请求方案
- 该方案与
mpvue、taro不可类比,该方案只是提供一个工程化的开发模式,与无缝使用原生小程序开发,无上手成本,且生成的dist文件可读,可查看编译后代码debug,使用零风险
$ npm install --global gulp-cli
$ npm install
$ npm run dev
gulp auto -p mypage 创建名为mypage的page文件
gulp auto -c mycomponent 创建名为mycomponent的component文件
gulp auto -s index -p mypage 复制pages/index中的文件创建名称为mypage的页面
$ npm run build
- js/less/xml文件中的
//CDN会被自动替换为app.config.js配置的服务器路径 - 请在正式发包前将 images 文件夹整体放到认证过的服务器
| vue | wxml | 是否支持 | 备注 |
|---|---|---|---|
| :name="name" | name="{{name}}" | Y | |
| @click="onHandler" | bindtap="onHandler" | Y | |
| v-for="list" | wx:for="{{list}}" | N(待支持) | 不支持item,index定义 v-for="(item, i) in list" |
| v-if="isShow" | wx:if="{{isShow}}" | N(待支持) | |
| v-show="isShow" | wx:if="{{isShow}}" | N(待支持) | 实际还是 wx:if |
| :key="key" | wx:key="key" | N(待支持) |
wx-miniprogram-boilerplate
├── dist // 编译后目录
├── node_modules // 项目依赖
├── src
│ ├── components // 微信小程序自定义组件
│ ├── img // 页面中的图片和icon 会被编译到dist
│ ├── images // 页面中的图片和icon 不会被编译 需要同步到服务器
│ ├── pages // 小程序page文件
│ │ ├── index // 首页
│ ├── styles // ui框架,公共样式
│ ├── utils // 公共js文件
│ ├── app.js
│ ├── app.json
│ ├── app.less
│ ├── project.config.json // 项目配置文件
│ └── api.config.js // 项目api接口配置
├── .gitignore
├── .eslintrc.js
├── package-lock.json
├── package.json
└── README.md
Tasks:
dev 开发编译,同时监听文件变化
build 整体编译
clean 清空产出目录
wxml 编译wxml文件(仅仅copy)
js 编译js文件,同时进行ESLint语法检查
json 编译json文件(仅仅copy)
wxss 编译less文件为wxss
img 编译压缩图片文件
watch 监听开发文件变化
auto 自动根据模板创建page,template或者component(小程序自定义组件)
gulp auto
选项:
-s, --src copy的模板 [字符串] [默认值: "_template"]
-p, --page 生成的page名称 [字符串]
-c, --component 生成的component名称 [字符串]
--msg 显示帮助信息 [布尔]
示例:
gulp auto -p mypage 创建名为mypage的page文件
gulp auto -c mycomponent 创建名为mycomponent的component文件
gulp auto -s index -p mypage 复制pages/index中的文件创建名称为mypage的页面
-
Q:
_template目录的文件有什么用?A: 使用
gulp auto命令自动生成文件,-s参数可以指定copy的对象,默认情况下是以对应目录下文件夹为_template中的文件为copy对象的。开发者可以根据业务需求,自定义_template下的文件。 -
Q:
_template目录的文件是否会被编译到dist目录?A: 不会。
因为采用es6方法 class 会转成 proto,computed会处理成 enumerable = false,为了能在wxml可已使用类似vue的comouted 对mobx的 createComputedDecorator实现 enumerable 处理为true
具体改动 mobx.js第261行 true