1.开发基本规范
文件命名规则
图片文件写法
例如:images/icon/icon-error.png、images/icon/icon-error-large.png等。
公共样式
例如:styles/common.less、styles/icon.less、styles/taro-ui.less等。
页面文件
例如:pages/home/index.js、pages/detail/index.js、pages/searchResult/index.js等。
页面组件
例如:pages/detail/modules/Slider.js、pages/detail/modules/Map.js等。
公共组件
例如:components/Panel/index.js、components/SearchResult/index.js、components/LoadingMore/index.js等。
2.脚本书写规范
组件的自定义事件必须试用on前缀
<LoadMore
onComplete={this.handleMoreComplete}
/>
事件处理函数统一使用handle前缀
// 跳转至详情页
handleNavToDetail = (id) => {
Taro.navigateTo({ url: `/pages/detail/index?id=${id}` })
}
动态className命名统一采用classnames第三库进行
<View
className={classnames({
'order-list__item': true,
'order-list__item--first': index === 0
})}
/>
页面的state声明尽可能添加注释
this.state = {
// 列表数据
listData: [],
// 头部筛选定位样式
listFixedStyle: '',
// 工单状态
workOrderStatus: '',
// 工单记录的数量
orderCount: '',
}
import的书写顺序按npm库、功能脚本、组件、样式依次进行
为了便于import导入语句的阅读,不同种类的导入代码之间空一行,示例如下:
// NPM库
import Taro from '@tarojs/taro'
import {View} from '@tarojs/components'
import classnames from 'classnames'
// 功能脚本
import Actions from '../../../actions/actions'
import Util from "../../../utils/util"
import Dict from '../../../utils/dict'
// 组件
import ListScrollLoad from "../../../components/ListScrollLoad/index"
import ListStatus from "../../../components/ListScrollLoad/ListStatus"
import Field from '../../../components/FormFied/Field'
// 样式
import './index.less'
3.开发注意事项微信小程序调试需要关闭的项目设置
微信小程序调试需要关闭的项目设置
需要设置关闭 ES6 转 ES5 功能,开启可能报错。
需要设置关闭上传代码时样式自动补全,开启可能报错。
需要设置关闭代码压缩上传,开启可能报错。
微信自定义组件的注意事项
微信组件不支持传递函数,只有自定义事件。
组件之间传递对象为值的拷贝,而非引用。
在Form组件的onSubmit事件中,无法收集自定义组件中使用的表单控件的值,需要通过自定义组件的 behaviors: ['wx://form-field'] 设置让自定义组件拥有类似表单控件的行为,这样才能被父级的Form识别。
向组件传递jsx内容的props命名必须以render开头 ```javascript 在微信小程序中,向组件传递wxml内容是通过 slot 的方式进行的,而 Taro 在实现这一功能时必须给 slot 取名,所以要求必须以 render 开头,这样便于识别 slot 命名。
class Dialog extends Component {
render () {
return (
- 无法使用无状态组件或者js定义函数拆分页面模块
```javascript
我们在进行以 React 开发的项目中,可能会使用 无状态组件 或者 jsx定义函数 来将页面的结构进行拆分,而不是以组件的形式进行拆分。
但是到了 Taro 这里,由于编译的局限性:
Taro 不支持 无状态组件(参见说明)。
Taro 不支持在 render() 之外的地方定义 jsx 内容(参见说明)。
所以到了 Taro 这里,我们就只剩下组件的方式来拆分页面模块了。