### HTML
+ 尽量使用语义化标签,如`header`、`article`、`footer`等。十个常用的标签:
+ `<article>`:定义文章
+ `aside`:定义侧边栏
+ `header`:定义页眉
+ `hgroup`:定义标题的组合
+ `section`:定义段落
+ `time`:定义时间
+ `footer`:定义页脚
+ `main`: 定义主体内容
+ `nav`:定义导航
+ HTML5 doctype:`<!DOCTYPE html>`,确保在浏览器中保持一致;
+ 统一的`meta`标签
```html
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta charset="UTF-8">
```
* 可用性:
* 正确使用`alt`属性
* 确保连接和按钮正确使用
* 给表单做好`label`标记
### CSS
* 不能漏写分号
* 尽量不改变元素的默认行为
* 紧密耦合的DOM选择器,三个层级以上建议加上`class`
* 避免不必要的写法
* `p.name`
* `ul>li:first-child`
* 选择器要尽量精确,减少ID,尽量避免`!important`
* 使用继承,不要把可继承的样式重复声明
* 能用英文,不用数字
* 颜色,一般使用16进制,需要做透明效果的时候使用`rbga`
* 尽量用CSS或字体代替图片
* 命名规范
* class 名称中只能出现小写字符和破折号(dashe)(不是下划线,也不是驼峰命名法)。破折号应当用于相关 class 的命名(类似于命名空间)(例如,`.btn` 和 `.btn-danger`)
* class 名称应当尽可能短,并且意义明确。
* 使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。
* 避免过度任意的简写。`.btn` 代表 *button*,但是 `.s` 不能表达任何意思。
* 注释使用`/* xxx */`
* 样式声明的顺序
1. 定位
2. 盒模型
3. 文字内容
4. 颜色、背景
5. 其他:cursor
* `scss/less`,变量尽量在一个单独文件中定义,通过`webpack`声明为全局调用
* 避免嵌套层级过多,维持在`3-4`层,对于超过的嵌套层级,重新评估。嵌套`20`层以上的代码可读性差。
> 更多的HTML与CSS规范,参考[编码规范by@mdo](https://codeguide.bootcss.com/?spm=a2c4e.10696291.0.0.272b19a4Mx8KrV#css-media-queries)
### Javascript
* 推荐使用`vscode`编辑器
* `vscode`配置参照[文件](./vscode-settings.md)
* 配置`eslint`
```json
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"@innovation/eslint-config-vue-ts"
],
"rules": {
"prefer-promise-reject-errors": "off",
"no-new": "off",
"space-before-function-paren": "off",
"vue/require-valid-default-prop": "off",
"vue/no-use-v-if-with-v-for": "off",
"vue/require-v-for-key": "off",
"vue/no-side-effects-in-computed-properties": "off",
"vue/no-unused-vars": "off",
"no-var": "error"
},
"parserOptions": {
"parser": "@typescript-eslint/parser"
}
}
```
### Vue
* 方法放置顺序推荐
1. `components`
2. `props`
3. `data`
4. `created`
5. `mounted`
6. `activited`
7. `update`
8. `beforeRouteUpdate`
9. `methods`
10. `filter`
11. `computed`
12. `watch`
* `method`自定义方法名
* 动宾短语,例如`jumpPage`,`openDialog`,禁止`jump`,`open`指带不明
* `ajax`方法,使用`get`,`post`开头,以`data`结尾,例如`getTableData`
* 事件以`on`开头
* 遵守驼峰命名规则
* 基于模块开发
> 整体原则:每个`vue`组件首先必须专注于解决一个单一的问题,独立的、可复用的、微小的和可测试的。如果组件做了太多的事情或者变得臃肿,那么请将其拆成更小的组件并保持单一的原则
* 组件命名:2-3三个单词,不要过长,可读性高,不能过于抽象
* vue组件的创建
* 按需创建
* 组件不能太大,难以重用和维护
* 组件也不能太小,太小会嵌套层次变深,且组件间通信更难
* 避免那些“以后可能会有用”的组件污染你的项目。它们可能会永远的只是(静静地)待在那里,这一点也不聪明
- 前端
- C1-Javascript
- H5图片分块和断点续传
- JavascriptPatterns[Stoyanstefanov]
- macotask和microtask
- 前端代码生成器
- 跨域
- 页面回到顶部滚动按钮实现
- C2-CSS
- 浏览器的一些单位
- 盒模型
- 移动端判断横竖屏
- C3-框架
- ReactNative
- 开发环境搭建(安卓篇)
- Vue
- vue+pdfjs使用
- vue+typescript使用实践
- vue+webpack3.x集成typescript
- Vue源码3
- vue源码分析1
- vue源码分析2
- vue笔记
- C4-工具
- git
- Gitlab-CICD
- mock规则
- vscode-settings
- webpack自定义命令,切换代理地址
- 正则表达式
- 深入浅出webpack
- C5-Node
- express
- express源码阅读
- nightmare使用指南
- 爬虫1.0
- C6-微信
- 微信
- C7-Canvas
- 基础API
- 前端随笔笔记
- 后端
- C1-Java
- shiro
- C2-Linux
- ffmpeg
- ITerm
- Linux
- MongoDB安装
- MySql安装
- Ngnix反向代理
- 常见错误
- 备忘
- mac
- 备忘-Work
- 备忘Link
- 服务器资源
- 教程
- Hexo个人博客搭建笔录
- 文档
- CSS编码规范
- 前端编码规范
- 随笔
- 整理
- 正则
- 链接收藏
- 面试
- CodeWars题库
- CodeWars题库(二)
- Java社招面试题
- Java面试
- Web面试
- 前端笔试题
- 笔试题