日常开发分支请在 origin/dev
分支下开发
建议使用 Visual Studio Code
,将.wpy
文件关联Vue
,并利用好代码片段,快速生成页面初始模板,并开启ESLint代码风格检查。
开发前请先了解所有目录结构
│ .editorconfig
│ .eslintignore
│ .eslintrc.js
│ .gitignore
│ .prettierrc
│ .wepycache
│ .wepyignore
│ CONTRIBUTING.md
│ min.config.json // minui 组件配置文件
│ package.json
│ project.config.json
│ README.md
│ wepy.config.js
│
└─src
│ app.wpy
│
├─api // 接口地址
│
├─components // wepy 静态组件
│ ├─tabbar
│
├─images // 图片
│
├─mixins // page 的 mixins
| validation.js
│
├─pages // 所有页面
| |
├─style
│ │ app.less // 全局样式(引入了公共样式和所有组件样式)
| |
│ ├─common // 公共样式 以及 变量
| |
│ ├─components // 静态组件样式
| |
│ ├─home // 页面样式
│
└─util // 工具类
│ created.js // 页面全局功能,需在页面引入并调用,参考现有页面 ( 注意,component无法使用全局方法,建议用event或者$parent )
| fly.config.js // 请求拦截器配置
│ template.js
│ tool.js // 工具
│ wx.umd.min.js // fly.js源码,对标Vue的axios
│
└─wxs
filter.wxs // 过滤器
在这个js内,封装全局的使用方法,比mixins更加灵活,但更麻烦。
- 内部增加了一个
onBack
生命周期,可以用在navigateBack
时来传递数据。但是同样必须要用js内部封装的navigateBack方法来回退页面。为了API使用一致性,同样增加了navigateTo
、redirectTo
方法。 - 为了方便使用RESTful使用场景和方便接口请求。增加了四个全局方法。
reqGet
、reqPost
、reqPut
、reqDel
- 还有自定义转发
onShareAppMessage
- html -> Pug
- css -> Less (建议使用BEM命名规范)
- js -> ES6
// script 模板
<script>
import wepy from 'wepy'
import created from '../../util/created.js'
// 类名首字母大写
class Login extends wepy.page {
// 每个属性之间空一行, 并严格按照以下顺序书写
config = {}
mixins = []
data = {}
...自定义属性
computed = {}
watch = {}
...生命周期钩子
methods = {}
events = {}
...内部函数方法
wxs = {}
components = {}
}
// 直接 export default created(Login) 编译后会报错
const HOC = created(Login)
export default HOC
</script>
与Page一样,多了一个 props
属性并且没有 config
, 把 props
放置顺序代替 config
即可。
参考Page
本项目使用了 ESLint
来做代码规范校验,写代码时需要严格执行该规范。.eslintrc.js
文件为规范的配置文件。
官方代码规则文档
现在 wepy 不支持原生组件,所以使用wepy编译组件的时候的一些注意事项。
-
父组件传值时,使用
.sync
同步组件数据时,父组件的数据必须放在data
下一级,不能放在data
下的对象内。 -
wepy 组件为静态组件,故使用时若要循环,要放在
repeat
标签内,若要用多个就要在components
再加一个ID -
项目使用了第三方组件库(minui),此组件库为原生组件,所以不适用以上注意点。
-
关于编译的问题,因为组件样式是在
app.less
内引入的,所以直接修改组件样式不会立即更新,需要在修改app.less
保存,才行(如打个空格保存)。
表单验证方法放在了 mixins/vuelidation.js
, 需要页面内引入并加入 mixins: [ vuelidation ]
, 然后在 Class
内增加一个 自定义属性 vuelidation
来配置校验方法。例:
class Login extends wepy.page {
vuelidation = {
username: [
{ type: 'required', msg: '请输入账号' },
{ type: 'username' }
],
password: [
{ type: 'required', msg: '请输入密码' }
]
}
}
关于 type
,可以在 mixins/vuelidation.js
内的 methods
对象里添加验证方法