-
2022-03-06 16:19:35
一:讲解环境
Win10、IDEA2019、Vue3
二:讲解环节
笔者用vue ui创建了一个vue的初始项目。
项目结构如下:
— node_modules作用:整个项目里用到的依赖的文件。
— public作用:公用的目录。
— src作用:项目的源码目录。
— assert作用:专门放资源的文件目录。
— components作用:组件目录。
— router作用:路由的目录。
— views作用:页面目录。
— App.vue作用:Vue项目的主组件,页面入口文件,所有页面都在App.vue下进行切换的,负责构建定义及页面组件归集。
— main.js作用:整个程序的入口。(Vue.config.productionTip = false这个是关闭浏览器的开发环境的提示。)
— .gitignore作用:git的忽略文件。
— babel.config.js作用:web的配置文件。将es6的语法转化为es5。因某些浏览器(比如ie浏览器)无法使用es6而出现。
— package.json作用:整个项目的配置文件。dependencies的是正式环境的,devDependencies的是开发环境的。
— package-lock.json作用:锁定安装依赖时的版本并上传到git上,确保其他人下载时依赖版本一致。
— README.md作用:项目说明文件。更多相关内容 -
vue项目结构解析
2021-09-05 23:10:010. 前言 在我目前的工中很少自己动手搭建...创建 vue 项目可以有多种方式,这里介绍脚手架创建方式 全局安装vue-cli: npm install -g @vue/cli # OR yarn global add @vue/cli 创建一个项目: // 进到你希望项目放到的0. 前言
在我目前的工中很少自己动手搭建一个项目,所以对于开发开始前的项目搭建以及项目各项配置相对理解的不够透彻。这次需要开发一个运行在终端上(类似ATM机的操作)的售楼签约系统。由于 UI 的不适配决定从头开始创建一个新项目。于是在此对项目的创建和配置做一个总结
-
创建 vue 项目可以有多种方式,这里介绍脚手架创建方式
全局安装
vue-cli
:npm install -g @vue/cli # OR yarn global add @vue/cli
创建一个项目:
// 进到你希望项目放到的那个文件夹目录下,然后运行如下命令 vue create XXX-XXX (项目名称)
运行完创建命令后会出现选择预设的选项,我这里选的是
manually select features
,然后选择了Babel
、Router
、Vuex
、CSS Pre-processors
、Lint
这些插件,并选择在创建单独的文件用于配置这些插件。创建vue项目更多详细的内容可以访问 vue 脚手架创建项目
-
项目创建完成后,默认的目录展示如下:
主要分析有以下这些文件,点击文件可快速定位文件的位置
- .browserslistrc
- .eslintrc.js
- gitignore
- README.md
- babel.config.js
- package.json
- vue.config.js
- env配置环境变量文件
- .prettierrc
1. 结构分析
具体的
src
和public
文件夹等,这里不做过多的介绍,主要介绍根目录下的相关配置文件的内容① .browserslistrc
该文件的作用是根据提供的目标浏览器的环境,来智能添加 css 前缀,js 的 polyfill 垫片,来兼容旧版本浏览器。避免不必要的兼容代码,以提高代码的编译质量。
默认创建的项目中,
.browserslistrc
文件内容如下:> 1% last 2 versions not dead
分别代表1.全球超过 1%人使用的浏览器;2.所有浏览器兼容到最后两个版本,再以前的就不兼容;3.不兼容已经在市面下架“死去”的浏览器。以下是更多相关的配置和介绍:
例子 说明 > 1% 全球超过 1%人使用的浏览器 > 5% in US 指定国家使用率覆盖 last 2 versions 所有浏览器兼容到最后两个版本根据 CanIUse.com 追踪的版本 Firefox ESR 火狐最新版本 Firefox > 20 指定浏览器的版本范围 not ie <=8 方向排除部分版本 Firefox 12.1 指定浏览器的兼容到指定版本 unreleased versions 所有浏览器的 beta 测试版本 unreleased Chrome versions 指定浏览器的测试版本 since 2013 2013 年之后发布的所有版本 ② .eslintrc.js
这个文件主要用于配置项目的 eslint 校验,对于一个团队来说,每个人有每个人写代码的风格和习惯,有人喜欢结尾加分号,有人不加,有人习惯使用双引号,有人习惯单引号,当然这些不足以影响项目的运行,但是 eslint 还可以配置更加重要的规范,来统一代码风格和预防一些代码隐患。所以这个文件相对团队开发来说是比较重要的。
.eslintrc.js
文件默认导出一个对象,以下是创建 vue 项目后 eslintrc 文件的默认内容,结尾处会提供一个更详细的 eslint 配置文件。module.exports = { // 默认情况下,ESLint 会在所有父级目录里寻找配置文件,一直到根目录。ESLint 一旦发现配置文件中有 "root": true,它就会停止在父级目录中寻找。 root: true, // env表示一个环境,预定义了一组全局变量 env: { node: true // 定义了Node.js 全局变量和 Node.js 作用域。 }, // extends 一个配置文件可以被基础配置中的已启用的规则继承,如下设置继承了数组中的三项规则。其中值为 "eslint:recommended" 的 extends 属性会启用一系列eslint核心规则。 extends: ['plugin:vue/essential', 'eslint:recommended', '@vue/prettier'], // ESLint 允许你指定你想要支持的 JavaScript 语言选项。默认情况下,ESLint 支持 ECMAScript 5 语法。你可以覆盖该设置,以启用对 ECMAScript 其它版本和 JSX 的支持。 parserOptions: { parser: 'babel-eslint' }, // rules 表示eslint校验规则 rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' } }
rules 配置规则格式
规则格式是
<规则名称>: <告警级别>
,告警级别分为三种:- “0"表示忽略问题,等同于"off”;
- “1"表示给出警告,等同于"warn”;
- “2"表示直接报错,等同于"error”。
更多的 ESLint 配置可以前往 ESLint 中文网 查看
③ gitignore
该文件正如其名字的意思,告知 git 那些文件或文件夹不需要添加到版本管理中。内容如下:
.DS_Store node_modules /dist # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw?
④ README.md
这个文件就是项目的介绍文件,使用 markdown 语法。
不清楚markdown语法的可以访问markdown基本语法
⑤ babel.config.js
Babel 是一个 JavaScript 编译器,可以对 JavaScript 文件进行转码,类似的有 ES6 转为 ES5 兼容不同的浏览器。
babel.config.js
是 babel 的配置文件,presets
字段设定转码规则,此处@vue/cli-plugin-babel/preset
就是规则。module.exports = { presets: ['@vue/cli-plugin-babel/preset'] }
了解更多的Babel相关配置可以访问Babel 配置文件
⑥ package.json
package.json
文件提供了很多项目相关的信息,主要有这个项目所需要的各种模块;以及项目的配置信息(比如名称、版本、许可证等元数据);还可以配置一些简化script
执行脚本。项目中json文件是不能添加注释的,需要删除相关注释噢{ "name": "vue-project", // 项目的名称 "version": "0.1.0", // 项目的版本号 大版本号.小版本号.修订版本号[.日期版本号] "private": true, // 是否对外开发,private为true表示不对外开放 "scripts": { // script配置脚本对象,表示npm run XXX "serve": "vue-cli-service serve", // 配置serve脚本,表示npm run serve 等同于 vue-cli-service serve 命令 "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { // 依赖的相关信息,这里主要是生产和开发依赖,一般用npm install XXX --save 安装的依赖就会添加到这里 "core-js": "^3.6.5", "vue": "^2.6.11", "vue-router": "^3.2.0", "vuex": "^3.4.0" }, "devDependencies": { // 开发依赖的相关信息,这里的主要是开发过程的依赖,生产环境中不会存在,一般用 npm install XXX --save-dev 安装的依赖会添加到这里 "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-router": "~4.5.0", "@vue/cli-plugin-vuex": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/eslint-config-prettier": "^6.0.0", "babel-eslint": "^10.1.0", "eslint": "^6.7.2", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-vue": "^6.2.2", "lint-staged": "^9.5.0", "node-sass": "^4.12.0", "prettier": "^2.2.1", "sass-loader": "^8.0.2", "vue-template-compiler": "^2.6.11" } }
2. 额外的文件
除了上述
vue-cli
创建项目后默认生成的文件外,我们在开发过程中还需要很多配置文件,且都是在根目录中自己创建的。下面介绍几个相关文件① vue.config.js
这个文件表示 vue 的配置文件,像一些简单的前端服务运行的端口号,是否自动打开,代理地址等。下面是一些简单的配置
const path = require('path') // 导入Node的path模块 // 解析函数,在配置引入别名时用到 function resolve(dir) { return path.join(__dirname, dir) } // vue.config.js的主体配置 module.exports = { publicPath: '/', // 部署应用包时的基本 URL。用法和 webpack 本身的 output.publicPath 一致。 outputDir: 'dist', // 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。 assetsDir: 'assets', // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。 css: { // 对css的一些配置 extract: true, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。 sourceMap: false // 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能。 }, lintOnSave: process.env.NODE_ENV === 'development', // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。这个值会在 @vue/cli-plugin-eslint 被安装之后生效。 devServer: { // 服务相关的设置 host: '127.0.0.1', // 指定一个主机名 port: 8000, // 指定一个端口号 open: true, // 运行成功后是否自动打开页面 proxy: { // 代理相关。如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器 '/api': { // 对请求接口中出现的api进行代理 target: process.env.VUE_APP_PROXY_URL, // 代理的目标地址,这个取值在后面的文件会讲到 changeOrigin: true, // 是否改变域名, ws: false, // 是否开启webSocket pathRewrite: { // 路径重写,如果默认不重写路径,那么`/api/users`会被代理到`target路径/api/users` '^/api': '' // 对api进行路径重写,重写后,那么`/api/users`会被代理到`target路径/users` } } } }, // webpack相关的配置,可以设置plugins和别名解析等 configureWebpack: { // 解析设置 resolve: { // 别名配置,用来创建 import 或 require 的别名,来确保模块引入变得更简单。 alias: { // 用'@'表示src的路径, @/views/Home.vue 等同于 src/views/Home.vue. '@': resolve('src'), // 同理,用@components 表示 src/components目录 '@components': resolve('src/components'), '@assets': resolve('src/assets') } }, // 配置webpack的plugins plugins: [] }, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 productionSourceMap: false }
更多vue的配置可以访问 vue 配置参考
② .env.development、.env.production 配置文件
这里可以自己创建以上配置文件,用于配置不同环境下的环境变量,其中
.env.development
表示开发环境的环境变量.env.production
表示生产环境的环境变量.env.mock
表示 mock 运行状态下的环境变量
这些环境变量可以在全局使用,使用方法就是
process.env.XXXX
。其中 xxxx 表示变量名由于上面在
vue.config.js
配置文件中proxy
代理配置的属性target
的值使用了process.env.VUE_APP_PROXY_URL
变量。所以我在env.development
文件里定义如下变量:VUE_APP_PROXY_ROOT = 'http://192.168.2.25:6060/'
于是在开发过程中,向
/api/user
地址发送请求就等同于向http://192.168.2.25:6060/user
地址发送请求③ .prettierrc文件
Prettier
是一个代码格式化工具,可以在开发过程中,使代码格式化成你想要的风格和规范。
开发前端的过程中,我们要求开发人员都在
VSCode
中装入Prettier
插件,方便格式化。与 ESLint 一样,为了统一代码风格和规范,所以 Prettier 也是在团队开发中重要的一员。.prettierrc
文件就是配置使用 Prettier 格式化代码的方式(注意该文件中的注释需要删除后才会生效)
{ "eslintIntegration": true, // eslint集成 "stylelintIntegration": true, // 样式嵌入 "singleQuote": true, // 是否使用单引号 "semi": false, // 结尾是否保留分号,设置为false表示结尾不会有分号 "trailingComma": "none", // 对象、数组等,最后一个是否保留逗号,设置为none表示不保留逗号, es5表示保留es5的结尾逗号 "arrowParens": "avoid", // 箭头函数中只有一个参数是否保留括号,aviod表示不保留括号,always表示保留括号 "bracketSpacing": true, // 对象中的空格 默认true "useTabs": false, // 使用tab缩进,默认false "tabWidth": 2 // tab缩进大小,2个空格}
更多prettier的配置内容请访问Prettier 配置
3. 更多的项目内容可以查看以下 github 地址
https://github.com/He-Huang/vue-project-structure
参考地址:
-
-
关于整个vue项目结构详解(vue.config.js)
2022-04-27 15:57:57首先是各个文件之间代表了什么,可以参考vue结构详解,这里不做过多赘述 src 做为整个项目的内容主体,担任了直面客户的主要角色 static 做为整个静态资源库,里面放的东西比如:css、img、ttf字体等 tests vue的...文件关系详解
- 各个文件之间,
本身是没有关系的
,因为相互引入,所以产生了关系- 首先是各个文件之间代表了什么,可以参考vue结构详解,这里不做过多赘述
- src 做为整个项目的内容主体,担任了直面客户的主要角色
- static 做为整个静态资源库,里面放的东西比如:
css、img、ttf字体等
- tests vue的单元测试项,可删除,感兴趣的可以自行搜索
vue 单元测试
进行学习 - public/index.html 文件的主体内容项,浏览器显示的页面都属于
html
页面,所以index.html
相当于为我们现在做的项目套一个壳
- dist 是最后的产品,整个项目通过
npm run build
形成的最后打包文件 - 其他文件都是属于配置文件,辅助开发
- package.json 文件其实就是对
项目
或者模块包
的描述,里面包含许多元信息,在node
环境下必备文件。比如:项目名称、项目版本、项目执行入口文件、项目贡献者等等。npm init
在我们初始化生成项目的时候,主要生成的就是这个文件,也是你下载依赖npm install
的根文件
- package.json 文件其实就是对
package name: 你的项目名字叫啥
version: 版本号
description: 对项目的描述
entry point: 项目的入口文件(一般你要用那个js文件作为node服务,就填写那个文件)
test command: 项目启动的时候要用什么命令来执行脚本文件(默认为node app.js)
git repository: 如果你要将项目上传到git中的话,那么就需要填写git的仓库地址(这里就不写地址了)
keywirds: 项目关键字(我也不知道有啥用,所以我就不写了)
author: 作者的名字(也就是你叫啥名字)
license: 发行项目需要的证书(这里也就自己玩玩,就不写了)package.json记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位)
package-lock.json记录了node_modules目录下所有模块的具体来源和版本号以及其他的信息如果没有
package-lock.json
,当你使用npm i 某个依赖
的时候如果加上版本,那他会下载这个依赖的最新版本。
所以,package-lock.json
就是当前项目依赖的版本控制器
package.json和package-lock.json
保证了大家在协同开发的时候所用的依赖模块版本是一致的
当你的项目新增了一个依赖模块请一定要把package.json和package-lock.json
一起上传,这样别人下载项目的时候去更新模块信息,就能得到和你一模一样的模块版本- node_moudles 作为整个项目的依赖包,当我们引入某个
UI库或者组件
时,通过下载后,可在你说在的文件中引用组件
webpack配置(vue.config.js或build)
vue.config.js 配置(vue自主构建)
vue-cli3 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动创建
vue.config.js
配置选项:publicPath
Type: string
Default: ‘/’
部署应用包时的基本 URL, 用法和 webpack 本身的 output.publicPath 一致。 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径。
(
注
:vue-router的base
配置和vue.config.js配置文件的publicPath
配置保持一致)
(如果只配置了vue-router
的base
配置,最后会发现,找不到,因为打包的时候,在dist
文件内部没有app
文件夹,所以找不到,如果,加了一个dist/app
就可以正常访问了)
(如果只设置vue.config.js
的publicPath
配置,最后会发现,在包下面还有一个app文件)
如果nginx,一般nginx都会配置一个静态资源目录,打包后的文件都会放到这个静态资源目录里面,nginx去做映射,所以publicPath这个属性基本不用改。’/'就行
outputDir
assetsDir
indexPath
filenameHashing
pages
lintOnSave
runtimeCompiler
transpileDependencies
productionSourceMap
crossorigin
integrity
- 各个文件之间,
-
Vue项目结构详解
2021-06-02 15:41:22 -
Vue项目结构解析
2021-07-26 06:15:01|----assets文件夹: 存储项目中自己的一些静态文件(图片/字体等) |----components文件夹: 存储项目中的自定义组件(小组件,公共组件) |----views文件夹:存储项目中的自定义组件(大组件,页面级组件,路由级别组件) |... -
(Vue)项目结构解析
2021-07-13 10:43:17(Vue)项目结构解析 前言 Vue-cli项目搭建——见Vue小白课(一)——CLI搭建项目(Vue2.x)或Vue+Node前后端项目搭建部分内容 参考文献: vue-cli入门(二)——项目结构 | 思否-Reachel Vue-cli创建vue项目以及... -
vue项目目录结构详解
2022-05-18 17:08:43|-- component:组件文件夹,用来存放 vue 的公共组件(注册于全局,在整个项目中通过关键词便可直接输出) |-- router:用来存放 index.js,这个 js 用来配置路由 |-- tool:用来存放工具类 js,将 js ... -
Vue项目详细结构
2022-03-16 15:00:57---ico图标,静态页面 public文件夹里面经常放置一些静态资源,而且在项目打包的时候webpack不会编译这个文件夹,原封不动的打包到dist文件夹里面 src ---程序员源代码的地方 ---api文件夹:涉及请 -
vue-cli项目结构详解
2017-12-22 11:41:44Vue-cli是vue官方出品的快速构建单页...下面开始对vue-cli生成的项目结构进行一下简单的解读,这个解读只是本人在项目中应用vue-cli的一些个人见解和总结,只针对一些刚入门vue的人,本人是菜鸟,如有不对请大神不吝赐 -
vue项目总结之文件夹结构配置详解
2020-08-28 13:31:47主要给大家总结介绍了关于vue项目之文件夹结构配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 -
Vue项目创建与项目结构解析
2021-11-02 11:19:06一、新建项目 前置条件: 打开命令行查看是否有需要的环境。 ... vue-cli:(若无则安装:npm install --global vue-cli) ...vue init webpack 项目名 说明: Vue build ==> 打包方式,回车即可; Install vue-rou -
Vue项目结构及项目解读
2021-08-23 17:45:02简要介绍里如何使用@vue/cli创建vue项目,详细介绍了项目结构,并对项目进行了详细的解读。 -
renren-fast-vue项目结构解析
2020-05-13 15:23:41renren-fast-vue项目结构解析————github官网 -
Vue CLI项目结构解析
2021-10-21 15:07:19生成的项目结构如上所示,接下来我们来把每一个文件是什么解析一下。 node_modules存放整个web项目依赖的JS插件等 public,存放首页和浏览器的小图标,参考首页中引入的方式 <link rel="icon" href="<%= BASE... -
4-4 VueCLI项目结构解析
2022-02-25 16:43:51web文件夹即是整个Vue CLI项目 node_modules:存放项目依赖的js模块,类似于maven的jar包,这个文件夹不需要提交git管理。 public: assets:静态资源 components:组件 router:路由 store:全局数据... -
vue项目结构目录简介
2021-08-23 23:21:55首先来看一下整个结构目录 接下来从上到下的看一下每个文件以及文件是干嘛的 build 文件夹 及 子目录 这里面是一些webpack的配置,主要用于项目打包时的一些设置。这里不去更详细的深入,相关的文件及配置会在后面... -
利用vue-cli创建的vue项目结构解析
2017-08-08 11:20:44利用vue-cli脚手架,创建出来的vue项目结构如图所示: 1.其中index.html是入口文件; 2.static中放一些静态资源,比如图片啥的; 3.src-router-index.js是用来配置路由的, 4. src-main.js,,用来设置... -
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2020-08-27 21:41:28主要介绍了详解使用vue-cli脚手架初始化Vue项目下的项目结构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
vue 文件目录结构详解
2020-11-26 22:50:50项目简介 基于 vue.js 的前端开发环境,用于前后端分离后的单页应用开发,可以在开发时使用 ES Next、...目录结构 ├── README.md 项目介绍 ├── index.html 入口页面 ├── build 构建脚本目录 │ -
Vue目录结构解析
2022-05-26 23:05:231、node_modules文件夹: 这个文件夹里面全部都是node的一些基础的依赖包,当我们拓展的安装一些别的插件时 也会装在这个文件夹里。 ... 3、src 文件夹:用来开发的...一个vue项目就是由一个个的组件拼装起来的。 6、r -
vue2.0项目详解
2022-02-25 09:42:53创建vue项目 电脑系统为windows11,这里我使用WebStorm来创建项目,需要电脑安装node环境,node的版本为14.17.5,如下图所示 这里我的项目还是vue.2.x版本 创建步骤 点击New Project创建项目 选择Vue,js项目 点击... -
vue2.0项目结构说明
2020-12-21 11:30:07vue项目结构说明 build文件夹 这个文件夹主要是进行webpack的一些配置 webpack.base.conf.js webpack基础配置,开发环境,生产环境都依赖 webpack.dev.conf.js webpack开发环境配置 webpack.prod.conf.js webpack... -
Vue 项目文件结构全网最详细解析
2020-06-17 10:07:16vue项目结构 node_modules 是项目的依赖文件 引入项目依赖文件中的模块时路径可以省略node_modules public index.html // 项目的挂载点 文件 也是模板文件 src // 项目的操作文件夹 assets // 存放静态资源的文件夹... -
vue项目的结构分析与总结
2019-11-23 20:24:18一、总结一下vue项目的总体结构以及vue项目常用的一些插件和一些项目技巧。 ** ** 从现在做的几个vue项目上来看,总的来说,一次比一次有进步,项目的结构一次比一...