# docs **Repository Path**: weldon_lee/docs ## Basic Information - **Project Name**: docs - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-01 - **Last Updated**: 2021-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 开发环境 ## Node.js > * 安装v10.x以上 >* 不要安装奇数版本 ## 包管理 ### npm 修改镜像源: ```bash npm config set registry https://registry.npm.taobao.org ``` 检查镜像源: ```bash npm config get registry ``` ### yarn 通过npm安装: ```bash npm install --global yarn ``` 修改镜像源: ```bash yarn config set registry https://registry.npm.taobao.org --global ``` 检查镜像源: ```bash yarn config get registry ``` 查看yarn的bin路径: ```bash yarn global bin ``` 最后,把yarn的bin路径 `%LOCALAPPDATA%\yarn\bin` 添加到PATH环境变量。 ### 为什么使用yarn? * 速度更快,可并行处理 * 没有包依赖问题 ### npm与yarn常用命令对照表 | npm | yarn | 简述 | | ---------------- | ------------------- | -------------------- | | npm i | yarn | 安装项目依赖包 | | npm i -S xxx | yarn add xxx | 安装依赖包 | | npm un -S xxx | yarn remove xxx | 删除依赖包 | | npm i -D xxx | yarn add xxx --dev | 安装开发环境依赖包 | | npm -S update | yarn upgrade | 升级依赖包 | | npm ls --depth=0 | yarn list --depth=0 | 查看项目依赖的包列表 | ## VSCode插件 ### ESLint `ESLint` 主要作用于代码的静态分析,官方定义了一整套规则,可以前往 [http://eslint.cn/docs/rules/](http://eslint.cn/docs/rules/) 进行查看,每条规则都可以根据用户的习惯和团队的要求,决定开启或禁用,配置文件在项目根目录下的 `.eslintrc.js` 文件,如下: ```js // add your custom rules here rules: { 'prefer-promise-reject-errors': 'off', 'no-var': 1, // allow debugger during development only 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' } ``` 规则有3个状态可以选择,分别是: 1. `off` 或 `0`,表示关闭此规则,不进行警告和错误提示 2. `warn` 或 `1`,表示对此规则进行警告提示 3. `error` 或 `2`,表示对此规则进行错误提示 ### Prettier `Prettier` 的主要作用是代码格式化,开启保存时格式化功能,配置如下: 1. 在 `setting.json` 文件中添加以下代码: ```json { // ... // 保存时格式化 "editor.formatOnSave": true, // 使用prettier进行格式化 "editor.defaultFormatter": "esbenp.prettier-vscode", // 保存时修复错误 "editor.codeActionsOnSave": { "source.fixAll": true } } ``` 2. 在项目根目录下新建 `.prettierrc` 文件: ```json { "singleQuote": true, // 字符串使用单引号 "semi": false, // 语句分号结尾 "useTabs": false, // 使用 tabs 缩进 "tabWidth": 2 // 2个空格替代 \t } ``` ### Vetur 主要功能如下: * 语法高亮 * 智能提示 * 代码片断 * Emmet * Linting / 错误检查 * 格式化 > 如果项目不使用 `Typescript` ,请手动禁用 `Vetur › Validation: Interpolation` > > 在 `VSCode` 点击 `文件 -> 首选项 -> 设置` 找到相应位置,然后把 `√` 去掉。 ## 浏览器插件 如果无法直接下载浏览器插件,可从 [https://crxdl.com/](https://crxdl.com/) 下载crx包进行安装 ### Vue devtools * 实时编辑数据 * `time travel` 模式调试 `Vuex` ### Debugger for Chrome * 在 `VSCode` 中调试前端代码的必装插件,如何配置请查看 [在VSCode中调试Vue项目](#在VSCode中调试Vue项目) 一节 ## 调试环境 ### 启动调试环境 ```bash yarn run dev ``` ### 在VSCode中调试Vue项目 1. 在 vue.config.js` 文件中添加 `devtool` 参数,值为 `source-map`,如下: ```js // vue.config.js module.exports = { // ... chainWebpack(config) { config.when(process.env.NODE_ENV !== 'development', (config) => { // ... config.devtool('source-map') } } ``` 2. 在 `.vscode` 文件夹中新建名为 `launch.json` 的文件,文件内容如下: ```json { "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "SQ App: chrome", "url": "http://localhost:8080", "webRoot": "${workspaceFolder}/src", "breakOnLoad": true, "sourceMapPathOverrides": { "webpack:///./src/*": "${webRoot}/*" } } ] } ``` # SQ脚手架项目 ## 目录结构 > ├─dist > ├─mock > │ ├─controller > │ └─utils > ├─public > └─src > ├─api > ├─assets > ├─components > ├─config > ├─directive > ├─layouts > │ └─components > ├─plugins > ├─router > ├─store > │ └─modules > ├─styles > ├─utils > └─views * /dist 构建生成的项目文件 * /mock mock相关文件 * /public 静态文件,无需webpack加工的静态文件存放位置 * /src 源文件 * /src/api 后端api的封装代码 * /src/assets 包括js、样式、图片等需要被webpack加工的资源文件 * /src/components 全局通用组件 * /src/config 配置文件 * /src/directive 自定义指令 * /src/layouts 布局模板页 * /src/plugins 插件引入文件 * /src/router 路由定义文件 * /src/store vuex全局状态定义文件 * /src/styles 样式文件 * /src/utils 工具类文件 * /src/views 页面文件 ## 环境变量 项目已经预设有3种环境的变量文件,分别是 `development(开发环境)`、`production(生产环境)`、`staging(预发布环境)`,如果有其他环境也可以自行添加,变量文件存放于项目的根目录,变量文件的文件名格式为:`.env.环境名称`,例如预发布环境的变量文件名是 `.env.staging`,然后在`package.json`文件中添加一行命令,如下: ```json // package.json { // ... "scripts": { // ... "build:stage": "vue-cli-service build --mode staging", } } ``` 构建命令如下: ```bash yarn run build:stage ``` 环境变量文件中,除了特殊的`NODE_ENV`变量外,自定义的变量必须以`VUE_APP_`为前缀,如下: ```yaml NODE_ENV = 'development' # base api VUE_APP_BASE_API = '/dev-api' ``` 然后在代码中直接引用: ```js console.log(process.env.BASE_API) ``` ## 路由定义 项目已预设两组路由,分别是`constantRoutes`和`asyncRoutes`,其中`constantRoutes`所定义的为全局路由,一般不需要改动。新增的页面路由配置一般存放于`asyncRoutes`。 ### 基本配置 ```js // src\router\index.js export const asyncRoutes = [ { path: `/desktop`, name: 'desktop', component: Desktop, hidden: true, }, // ... ] ``` * path 路由路径 * name 路由命名 * component 路由组件 * hidden 是否在菜单中隐藏 ### 延迟加载 > 使用`import`加载的页面,会在初次打开时有所延迟,初始页面不要使用此方式 ```js // src\router\index.js export const asyncRoutes = [ { path: `/desktop`, name: 'desktop', component: import('@/views/desktop/index'), hidden: true, }, // ... ] ``` ### 嵌套路由 ```json // src\router\index.js export const asyncRoutes = [ { path: '/', component: Layout, redirect: 'index', children: [ { path: 'index', name: 'Index', component: () => import('@/views/index/index'), meta: { title: '首页', icon: 'home', affix: true, permissions: ['admin'], }, }, ], }, // ... ] ``` * redirect 重定向 * meta 元数据 * meta/title 在导航栏中显示的标题 * meta/icon 在导航栏中显示的图标 * meta/affix 是否固钉显示 * meta/permissions 权限列表,与用户权限列表有交集的才会在页面中显示 ### 全局路由事件 ```js // src\router\index.js // 全局前置路由事件 router.beforeEach((to, from, next) => { console.log(`全局路由beforeEach事件: ${to.fullPath}`) next() }) // 全局后置路由事件 router.afterEach((to, from) => { console.log(`全局路由afterEach事件: ${from.fullPath}`) }) ``` ## 多应用 如果有多个应用想放到同一个项目进行管理,可以在项目中进行配置。首先是在`layout`页面的`appList`添加新的应用,如下: ```vue // src\layouts\components\Logo\index.vue ``` 显示效果如下: ![文件列表](https://gitee.com/bingo-st/docs/raw/master/static/images/articlel_list.png) # 部署 ## 构建生产版本 ```bash yarn run build ``` ## 构建预发布版本 ```bash yarn run build:stage ```