<!-- prettier-ignore-start -->
<!-- SOMETHING AUTO-GENERATED BY TOOLS - START -->
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
- [项目运行指南](#项目运行指南)
- [开发本地环境变量](#开发本地环境变量)
- [开发相关插件/工具](#开发相关插件工具)
- [开发规范](#开发规范)
- [vue](#vue)
- [【保持单向数据流】](#保持单向数据流)
- [【慎用全局注册】](#慎用全局注册)
- [【组件名称】](#组件名称)
- [【组件中的 CSS】](#组件中的-css)
- [【统一标签顺序】](#统一标签顺序)
- [【其它注意事项】](#其它注意事项)
- [【 !!!其它则严格遵守 vue 官方风格指南】](#a-target_blank-hrefhttpscnvuejsorgv2style-guide其它则严格遵守-vue-官方风格指南a)
- [vue-router](#vue-router)
- [vuex](#vuex)
- [模块复用](#模块复用)
- [其它杂项](#其它杂项)
- [代码注释](#代码注释)
- [工程目录结构](#工程目录结构)
- [前端部署](#前端部署)
- [给 UI 的建议](#给-ui-的建议)
<!-- /code_chunk_output -->
<!-- SOMETHING AUTO-GENERATED BY TOOLS - END -->
<!-- prettier-ignore-end -->
# 项目运行指南
- 安装/更新依赖包:`npm install`
- 运行:
- 启动为 dev 环境:`npm run serve` 或 `npm start`
- 打包为 stage 环境:`npm run build:stage`
- 打包为 prod 环境:`npm run build:prod` 或 `npm run build`
- 检查并修复源码:`npm run lint`
- 运行单元测试:`npm run test:unit`
# 开发本地环境变量
- 新建 .env.development.local 来重写部分环境变量,如:
- 模拟数据:`VUE_APP_MOCK = true`
- 接口前缀:`VUE_APP_BASEURL_XXX =`
- 接口地址:`DEV_PROXY_TARGET_XXX = http://localhost:8081`
- ...
# 开发相关插件/工具
- VSCode 相关插件
- 必要插件
- `ESLint`
- `Vetur`
- `Prettier - Code formatter`
- `path Autocomplete`
- 推荐插件
- `Debugger for Chrome`
- `GitLens -- Git supercharged`
- Chrome 相关插件
- 必要插件
- `vue-devtools`
- 推荐插件
- `json-formatter`
- 其它工具
- 推荐:`Postman`
# 开发规范
## vue
### 【保持单向数据流】
- 单个组件的数据流
```
props、data/$store、computed (由前面派生)
↓
template/render
↓
用户交互事件、初始化的异步回调
↓
data/$store
```
- 组件间的数据流
- 父向子传递用 props
- 子向父传递用 vue 内置的自定义事件
- 父子双向传递用 <a target="_blank" href="https://cn.vuejs.org/v2/guide/components-custom-events.html">v-model</a> 或 <a target="_blank" href="https://cn.vuejs.org/v2/guide/components-custom-events.html">.sync</a>
- 跨越传递用 vuex(慎用 EventBus)
- 紧密耦合的祖孙间传递也可以考虑用父组件作为中间运输层
- 紧密耦合的兄弟间传递也可以考虑用父组件作为中转运输层
### 【慎用全局注册】
- 组件、混入 ... 应使用局部注册
局部注册可保持清晰的依赖关系,并且 IDE 智能感知更为友好
### 【组件名称】
- 名称大小写
```html
<script>
import MyComponent from '@/components/MyComponent.vue' // 文件名使用 PascalCase 命名法
export default {
name: 'ComponentName', // 必须有 name
components: { MyComponent },
}
</script>
<template>
<div>
<!-- 在 template 中一律使用 kebab-case 方式调用 -->
<my-component />
<el-input />
</div>
</template>
```
- 使用前缀
- 非业务通用组件使用 Base 前缀
- <a href="#hash_Ex">扩展/包装第三方开源组件或内部公共库组件</a>使用 Ex 前缀
- 单例组件使用 The 前缀
### 【组件中的 CSS】
- 使用 <a target="_blank" href="https://vue-loader.vuejs.org/zh/guide/css-modules.html">CSS Modules</a>,基于如下考虑:
- 不让外部进行样式重写,避免耦合 (与组件通信的唯一方式是 props)
- 放心使用简短且语义强的 class 名,无需担心命名空间,使可读性更好
- 使用方式
- 语法
```less
/* 默认为局部 */
.xxx {
}
/* 从局部转到全局 */
:global(.yyy) {
}
// or
:global {
}
/* 从全局转到局部 */
:local(.zzz) {
}
// or
:local {
}
```
- 单个组件专属
```html
<style lang="less" module></style>
```
- 多个组件共用 (\*.module.less)
```js
import style from './style.module.less'
```
### 【统一标签顺序】
- script --> template --> style,并使用空行分隔
### 【其它注意事项】
- 慎用 this\.\$refs、this\.\$parent、this\.\$root、provide/inject
- this\.\$refs 一般用在第三方开源组件或内部公共库组件或非常稳定的组件,以调用显式声明的方法
- 暴露给外部的方法要加 pub 前缀,如:this\.\$refs.pubFocus()
- 尽量不要在 watch 中变更数据,易造成死循环。数据变更应该交给用户交互事件或初始化的异步回调
- 组件中的 data 及 vuex 中的 state 应该可序列化,即不要存 undefined、function 等
### 【 <a target="_blank" href="https://cn.vuejs.org/v2/style-guide/">!!!其它则严格遵守 vue 官方风格指南</a>】
---
## vue-router
- url 定义准则:path 对应视图变化 (使用 kebab-case 命名法),query 对应数据变化,hash 对应滚动条位置
`如:/project-list?type=1&search=keyword#position`
- 路由的 name 值 (命名路由) 使用驼峰命名法
- 视图跳转尽量使用声明式
```html
<router-link :to="path | { path, ... }">使用声明式</router-link>
<!-- 不推荐的做法 -->
<a @click="$router.push(...)">使用命令式</a>
```
- 当组件依赖 \$route 时 (特别是 \$route.params),要使用<a target="_blank" href="https://router.vuejs.org/zh/guide/essentials/passing-props.html">路由组件传参</a>,与 \$route 解耦
---
## vuex
- 需要由 vuex 管理的数据
- 组件间共享的响应式数据
- 组件间需要跨越传递的数据
- getter、mutation、action、module 使用驼峰命名法
- module 应避免嵌套,尽量扁平化
- module 应该启用命名空间 `namespaced: true`
---
## 模块复用
- 避免重复造轮子,多使用成熟的现成工具/类库/组件,如:lodash、qs、url-parse 等
- 模块设计原则:
- 高内聚低耦合、可扩展
- 永远不要去改变模块输入的数据,如:函数参数、组件 prop
- …
- 方法接口的设计
```js
// 参数类型与个数要保持稳定
// 建议参数不要超过3个,且预留一个 options 对象,以提高扩展性
// 方法尽量纯净 (纯函数思想)
export function myMethod1(a, options) {} // 当必选参数只有一个时
export function myMethod2(a, b, options) {} // 当必选参数只有两个时
export function myMethod3(options) {} // 当必选参数有两个以上时
export function myMethod4(options) {} // 当所有参数都是可选时
// 有时为了提高灵活性,参数类型可以是两重,一重是期望值,另一重是返回期望值的函数 (可带参)
export function myMethod5(a) {
a = typeof a === 'function' ? a() : a
}
```
- <span id="hash_Ex">扩展/包装第三方开源组件或内部公共库组件</span>
- 使用 extends 混入 (相关命名需要加 ex 前缀,防止覆盖)
- 使用<a target="_blank" href="https://cn.vuejs.org/v2/guide/render-function.html">函数式组件</a>包装
---
## 其它杂项
- IDE 统一使用 VSCode,并统一使用相关插件及配置
- js 变量声明尽量使用
没有合适的资源?快使用搜索试试~ 我知道了~
最新热门、好看前端vue模板大全
共2000个文件
js:703个
java:532个
py:488个
5星 · 超过95%的资源 需积分: 48 216 下载量 150 浏览量
2020-10-05
16:51:52
上传
评论 13
收藏 146.52MB RAR 举报
温馨提示
最新热门、好看前端vue模板大全。你准备开始一个重要的Vue项目吗?为了确保从坚实的基础开始,您可以使用模板(也就是样板,骨架,起动器或脚手架)而不是从npm init或开始vue init。
资源推荐
资源详情
资源评论
收起资源包目录
最新热门、好看前端vue模板大全 (2000个子文件)
chunk-vendors.9948ce82.css 258KB
app.3da4c4025c3d262c99005e6d56f618da.css 237KB
app.e5f81c9b9ae07217a14134dc6772d43f.css 209KB
index.css 186KB
bootstrap.css 130KB
bootstrap-theme.min.css 122KB
bootstrap.min.css 118KB
bootstrap.min.css 100KB
skin.css 56KB
skin.css 56KB
skin.min.css 45KB
skin.min.css 45KB
ueditor.css 45KB
skin.min.css 42KB
skin.min.css 42KB
ueditor.min.css 34KB
date-picker.css 26KB
transfer.css 25KB
skin.mobile.css 25KB
skin.mobile.css 25KB
col.css 24KB
font-awesome-4.0.3.css 22KB
font-awesome.css 22KB
video-js.css 22KB
skin.mobile.min.css 21KB
skin.mobile.min.css 21KB
content.inline.css 20KB
content.inline.css 20KB
content.css 20KB
content.css 20KB
bootstrap-theme.css 20KB
message-box.css 20KB
select2.css 19KB
iconfont.css 19KB
image.css 19KB
pagination.css 18KB
content.inline.min.css 18KB
content.inline.min.css 18KB
content.min.css 18KB
content.min.css 18KB
time-picker.css 18KB
font-awesome.min.css 17KB
bootstrap-theme.min.css 17KB
table.css 17KB
slider.css 16KB
selectize.bootstrap2.css 16KB
video.css 15KB
attachment.css 15KB
select.css 14KB
dropdown.css 14KB
tabs.css 13KB
time-select.css 13KB
upload.css 12KB
selectize.default.css 12KB
video-js.min.css 11KB
selectize.legacy.css 11KB
selectize.bootstrap3.css 11KB
datepicker.css 10KB
button.css 10KB
table-column.css 10KB
cascader.css 10KB
autocomplete.css 9KB
input-number.css 9KB
xadmin.main.css 9KB
selectize.css 9KB
base.css 8KB
shCoreDefault.css 7KB
checkbox.css 7KB
demo.css 6KB
color-picker.css 6KB
normalize.css 6KB
base.css 6KB
visualblocks.css 5KB
visualblocks.css 5KB
input.css 5KB
step.css 5KB
iconfont.css 5KB
menu.css 5KB
xadmin.responsive.css 5KB
bootstrap-modal.css 4KB
iconfont.css 4KB
phone-reset.css 4KB
bootstrap-clockpicker.css 4KB
scrawl.css 4KB
icon.css 4KB
pc-reset.css 4KB
xadmin.form.css 4KB
content.min.css 4KB
content.min.css 4KB
function.css 4KB
bootstrap-tweaks.css 4KB
bootstrap-image-gallery.css 3KB
app.8ec6a717.css 3KB
content.inline.min.css 3KB
content.inline.min.css 3KB
radio.css 3KB
bootstrap-clockpicker.min.css 3KB
codemirror.css 3KB
bootstrap-timepicker.css 3KB
select-dropdown.css 3KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 陈熙昊2023-07-25欢这个文件里的前端vue模板,它们不仅好看,而且功能丰富,给我的项目带来了很多灵感。
- thebestuzi2023-07-25前端vue模板都采用了最新的技术,保持了与时俱进,非常适合用于实际开发。
- 莉雯Liwen2023-07-25端vue模板设计简洁,代码整洁易懂,对于新手来说非常友好。
- 图像车间2023-07-25件收集到的前端vue模板很全面,涵盖了各种不同类型的项目,让人眼花缭乱。
- 赵伊辰2023-07-25件中有很多最新的热门前端vue模板,非常适合我最近的项目需求。
大吕十六不见长安
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功