参考uniapp 文档 大神的笔记
对于项目名和目录名 连字符和下划线比较有争议,本文以连字符为主
连字符 my-project-name
下划线 my_project_name
全部采用小写方式, 以短横线分隔。例:my-project-name
docs
、assets
、components
、directives
、mixins
、utils
、views
。my-project-name
my-project-name/
|- BuildScript // 流水线部署文件目录
|- docs // 项目的细化文档目录(可选)
|- nginx // 部署在容器上前端项目 nginx 代理文件目录
|- node_modules // 下载的依赖包
|- public // 静态页面目录
|- index.html // 项目入口
|- src // 源码目录
|- api // http 请求目录
|- assets // 静态资源目录,这里的资源会被wabpack构建
|- icon // icon 存放目录
|- img // 图片存放目录
|- js // 公共 js 文件目录
|- scss // 公共样式 scss 存放目录
|- frame.scss // 入口文件
|- global.scss // 公共样式
|- reset.scss // 重置样式
|- components // 组件
|- plugins // 插件
|- router // 路由
|- routes // 详细的路由拆分目录(可选)
|- index.js
|- store // 全局状态管理
|- utils // 工具存放目录
|- request.js // 公共请求工具
|- views // 页面存放目录
|- App.vue // 根组件
|- main.js // 入口文件
|- tests // 测试用例
|- .browserslistrc// 浏览器兼容配置文件
|- .editorconfig // 编辑器配置文件
|- .eslintignore // eslint 忽略规则
|- .eslintrc.js // eslint 规则
|- .gitignore // git 忽略规则
|- babel.config.js // babel 规则
|- Dockerfile // Docker 部署文件
|- jest.config.js
|- package-lock.json
|- package.json // 依赖
|- README.md // 项目 README
|- vue.config.js // webpack 配置
全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔。
banner_sina.gif
menu_aboutus.gif
menutitle_news.gif
logo_police.gif
logo_national.gif
pic_people.jpg
pic_TV.jpg
全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔。
|- error_report.html
|- success_report.html
全部采用小写方式, 优先选择单个单词命名,多个单词命名以短横线分隔。
|- index.js
|- plugin.js
|- util.js
|- date-util.js
|- account-model.js
|- collapse-transition.js
var myFirstName
var goodID
var reportURL
var MAX_INDEX = 1
function Person(name)
全部采用小写方式, 优先选择单个单词命名,多个单词命名以短横线分隔。
|- normalize.less
|- base.less
|- date-picker.scss
|- input-number.scss
my-first-name
#myFirstName
text_10 { font-size: 20rpx; line-height: 1.5; }
单文件组件的文件名应该要么始终是单词大写开头,要么始终是横线连接
MyComponent.vue
my-component.vue
对于绝大多数项目来说,在单文件组件和字符串模板中组件名应该总是 PascalCase 的——但是在 DOM 模板中总是 kebab-case 的。最好的做法就是统一写成这个形式:
<my-component></my-component>
在声明 prop 的时候,其命名应该始终使用 camelCase,而在模板和 JSX 中应该始终使用 kebab-case。在 JavaScript 中更自然的camelCase。
props: {
greetingText: String
}
而在 HTML 中则是 kebab-case。
<WelcomeMessage greeting-text="hi"/>
这个与之前介绍的组件和prop都不相同,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。 举个例子,如果触发一个 camelCase 名字的事件:
this.$emit('myEvent')
则监听这个名字的 kebab-case 版本是不会有任何效果的:
<my-component v-on:my-event="doSomething">my-component>
官网: 不同于组件和 prop,事件名不会被用作一个 JavaScript 变量名或 property 名,所以就没有理由使用 camelCase 或PascalCase 了。并且 v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),所以v-on:myEvent 将会变成 v-on:myevent——导致 myEvent 不可能被监听到。
因此,我们推荐你始终使用kebab-case 的事件名。
- components
- props
- data
- created
- mounted
- activited
- update
- beforeRouteUpdate
- methods
- filter
- computed
- watch
1、使用 data 里的变量时请先在 data 里面初始化
2、props 指定类型,也就是 type
3、props 改变父组件数据 基础类型用 $emit ,复杂类型直接改
4、ajax 请求数据用上 isLoading、isError 变量
5、不命名多余数据,现在是详情页、你的数据是 ajax 请求的,那就直接声明一个对象叫 d,而不是每个字段都声明
6、表单数据请包裹一层 form
生命周期方法注意点
1、动宾短语(优:jumpPage、openCarInfoDialog)(差:go、nextPage、show、open、login)
2、ajax 方法以 get、post 开头,以 data 结尾(优:getListData、postFormData)(差:takeData、confirmData、getList、postForm)
3、事件方法以 on 开头(onTypeChange、onUsernameInput)
4、init、refresh 单词除外
5、尽量使用常用单词开头(set、get、open、close、jump)
6、驼峰命名(优:getListData)(差: get_list_data、getlistData)
toGoodsDetail()
toMy()
getGoodsList()
uplsShaw()
submitOrderData
1、使用ES6风格编码源码
定义变量使用let ,定义常量使用const
使用export ,import 模块化
2、组件 props 原子化
提供默认值
使用 type 属性校验类型
使用 props 之前先检查该 prop 是否存在
3、避免 this.$parent
4、谨慎使用 this.$refs
5、无需将 this 赋值给 component 变量
6、调试信息console.log() debugger 使用完及时删除