Vue项目的详细目录结构解析

目录

前言 —— 一级目录解析

一. dist


前言 —— 一级目录解析

我们在使用Vue CLI 4.0工具创建出一个新的项目后,它最基本的一级目录结构往往是这样子的:

vue-demo
├── dist  //项目构建后的输出目录
├── node_modules
├── public
├── src
├── tests  //选装:测试模块
├── .gitignore
├── package-lock.json
├── package.json
├── README.md
├── ...
  • dist —— 项目构建打包后的默认输出目录。查看详情 ->icon-default.png?t=N7T8https://blog.csdn.net/weixin_45131680/article/details/139824879#jump1
  • node_modules —— 项目依赖文件,其中包括很多基础依赖和自己安装的依赖。查看详情 ->
  • public —— 存放公共资源和项目的主入口文件index.html查看详情 ->
  • src —— 项目核心文件夹:包括项目源码,各种静态资源等等。是我们开发的重点工作目录。查看详情 ->
  • test —— 选装了测试模块(Unit Testing / E2E Testing)才会有的文件夹。查看详情 ->
  • .gitignore —— Git上传时需要忽略的文件目录;查看详情 ->
  • package-lock.json —— 版本管理使用的文件;
  • package.json —— 项目的基本配置信息文件,包括各种插件,依赖以及某些依赖的详细配置等(如果你选择保存在这个文件内的话);
  • README.md —— 项目的描述文件。查看详情 ->
  • ... —— 某些依赖配置信息的独立文件。查看详情 ->
一. dist

dist文件夹在新建项目中一开始并不会存在。只有当你执行过一次构建命令(build)后,才会创建。通常它的内部目录结构为:

vue-demo
├── dist  //项目构建后的输出目录
│   └── css
│   └── img
│   └── js
│   └── index.html  // 项目主入口文件
│   └── ...  // 其他公共资源

这就是我们之前很熟悉的原生开发阶段的目录结构。也是浏览器能直接识别的文件类型。而我们现在使用的Vue.js等框架开发的项目,并不能为浏览器所识别,所以就需要编译打包这一步操作,来转换成实际生产环境(浏览器)所需的文件。

npm run build

该目录文件夹的名称是可自由设置的。比如在Vue UI中直接修改:

二. node_modules

node_modules文件夹中存放的是各种项目依赖文件,其中包括很多基础依赖和自己安装的依赖。

vue-demo
├── node_modules
│   └── ...

在做代码共享或者上传远程仓库时,建议忽略此文件夹。所以我们在拿到一个Vue项目时,一般都是没有这个文件夹的。需要我们自己使用命令去生成:

npm install

这样他就会去下载项目所需的所有依赖文件。除了基础的依赖文件之外,他还会去识别我们package.json文件中保存的依赖信息并逐一安装。

三. public

顾名思义,public文件夹中存放的是项目公共资源。比如网站LOGO等,还会有项目的主入口文件index.html。通常我们不需要对public文件夹内的资源做任何修改。

vue-demo
├── public
│   └── index.html  // 项目主入口文件
│   └── ...  // 其他公共资源

后续在构建打包时,public文件内容会直接放到dist文件夹内。比如:

四. src(基础版)

src文件夹是我们项目的核心文件夹:包括项目源码以及各种静态资源等等。是我们开发的重点工作目录。

如果此时你的项目在创建的时候,并没有选装其他的配置,仅仅是一个最简单的空白项目,那么你的src文件夹应该是这样的:

vue-demo
├── src
│   └── assets  //静态资源
│   └── components  //公共组件
│   └── App.vue  //根组件
│   └── main.js  //入口文件

它们之间具体的调用顺序可以简单概括为下图:

这也是Vue框架最基础的工作原理。后续可以在此基础上继续增添其他的Vue生态产品或插件,比如Vue Router,Vuex或者Element UI组件库等等。

4.1 main.js

main.js文件是一个很重要的文件,是浏览器解析最先加载的入口文件。这个文件的主要功能是通过import的方式导入各种资源,然后新建了一个vue实例。

可以看到这里只导入了两个资源:

  • Vue框架 —— 从node_modules文件夹中导入;
  • 根组件App —— 从App.vue文件导入;

然后新建了一个vue实例:

new Vue({
  render: h => h(App),  //渲染函数
}).$mount('#app')  //手动挂载

该Vue实例中通过h函数渲染根组件App,并把他手动挂载到id为#app的节点上。该节点位于public目录下的主入口文件index.html中。

其中< div id=“app”></div>将会被根组件App替换掉,即所谓的挂载。

4.2 App.vue

所以进一步加载的是根组件App文件 —— App.vue。之前我们在讲Vue框架入门的时候,说到Vue框架中有一个很重要的核心理念:

  • 组件化开发 —— 每一个Vue页面都可以看作是由组件填充而成的,组件之间支持层级嵌套。

App组件就属于根组件,其他组件的使用均需要由App组件直接或间接引入。这里就继续引入了如下两项资源:

  • 图片logo.png —— 位于src / assets目录;
  • 公共组件HelloWorld —— 位于src / components目录;

4.3 src / assets

src / assets 文件夹内保存的是各种静态资源,比如css、img、js、font等。新建项目的assets文件夹内就只有一张首页上的LOGO图片资源:

4.4 src / components

这里定义的组件都属于公共组件,任意的Vue页面中都可以(多次)调用。后缀为.vue的文件即为组件文件,每一个vue组件通常都由以下三部分组成:

  • <template>标签 —— HTML模板代码片段;
  • <script>标签 —— javascript代码;
  • <style>标签 —— 样式代码(原生CSS / 预处理语言Sass,Less,Stylus);

可以看到原生开发中的三剑客html,js,css都整合在了一个组件文件内(麻雀虽小五脏俱全呀)。这样的开发方案无疑与原生开发区别很大,所以才需要最后的构建打包。

五. src(顶配版)

刚才讲的基础版src,如果用来理解Vue框架原理是极好的,不过在实际开发中肯定是不够用的。我们或多或少都会用到Vue生态里的其他产品。

所以就有了顶配版的src,哈哈。详细的目录结构如下:

vue-demo
├── src
│   └── assets  //静态资源
│   └── components  //公共组件
│   └── plugins  //插件资源
│   └── router  //路由配置
│   └── store  //vuex文件
│   └── views  //视图组件
│   └── App.vue  //根组件
│   └── main.js  //入口文件

对比基础版你会发现,这里又多出了四个文件夹:

  • plugins —— 插件资源;
  • router —— 路由配置;
  • store —— vuex文件;
  • views —— 视图组件;

对应的文件之间的调用图也该丰富一下了。请看下图:

同样的,main.js文件内容也有区别,import导入的资源项变多了:

而且Vue实例中也增加了相应的内容:

new Vue({
  router,  // 注册路由
  store,  // 引入store
  render: h => h(App)
}).$mount('#app')
5.1 src / plugins

这个文件夹是你项目开发过程中,手动安装过插件而产生的。比如我这里安装了axios:

5.2 src / store

store文件夹是你选配了Vuex之后才会有的文件,主要用于项目内某些状态的保存。比如state、mutations、actions、getters、modules等。

5.3 src / router

单页面应用中,路由是指:根据不同的链接展示不同的页面视图,可以来回切换。如下图所示:

在看src / router文件之前,先来看看根组件App—— App.vue文件的变化:不再直接调用公共组件了,而是引用了< router-view/>路由。

<template>
  <div id="app">
    <div id="nav">
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </div>
    <router-view/>
  </div>
</template>

路由的具体原理是:

根据上边<router-link>标签内to字段的取值,决定了<router-view/>这里具体挂载哪个视图组件。

这种路由链接的对应关系就保存在src/router/index.js文件中。

5.4 src / views

src / views文件夹内存放的是视图组件。选配了Vue Router的新建项目,都会默认有以下两个视图组件:

  • Home.vue —— 首页版块;
  • About.vue —— 关于版块;

而在Home.vue中可以看到很熟悉的,和之前基础版中的根组件App.vue相同的模板内容。这样就接上之前基础版的思路啦~

参考:

https://blog.csdn.net/weixin_45131680/article/details/139824879

Vue2项目目录结构通常如下: ``` ├── build // 项目构建相关的代码 │ ├── build.js // 生产环境构建代码 │ ├── check-versions.js // 检查node、npm等版本 │ ├── dev-client.js // 开发服务器热重载配置 │ ├── dev-server.js // 开发服务器配置 │ ├── utils.js // 构建相关工具方法 │ ├── webpack.base.conf.js // webpack基础配置 │ ├── webpack.dev.conf.js // webpack开发环境配置 │ └── webpack.prod.conf.js // webpack生产环境配置 ├── config // 项目开发环境配置 │ ├── dev.env.js // 开发环境变量 │ ├── index.js // 项目配置文件 │ ├── prod.env.js // 生产环境变量 │ └── test.env.js // 测试环境变量 ├── src // 源码目录 │ ├── assets // 资源目录,如图片、字体等 │ ├── components // 公共组件目录 │ ├── router // 前端路由 │ ├── store // 应用级数据(state)管理目录 │ ├── utils // 工具函数目录 │ ├── views // 页面目录 │ ├── App.vue // 主组件 │ └── main.js // 入口文件 ├── static // 静态资源目录,如图片、字体等 ├── test // 测试相关目录 ├── .babelrc // babel配置文件 ├── .editorconfig // 定义代码格式 ├── .eslintignore // eslint忽略目录或文件 ├── .eslintrc.js // eslint配置文件 ├── .gitignore // git忽略目录或文件 ├── .postcssrc.js // postcss配置文件 ├── index.html // 项目入口文件 └── package.json // 项目基本信息 ``` 其中,`build`目录存放构建相关的代码,`config`目录存放项目开发环境的配置,`src`目录存放源码,`static`目录存放静态资源,`test`目录存放测试相关的代码。 `src`目录下,`assets`目录存放各种资源文件,如图片、字体等;`components`目录存放公共组件;`router`目录存放前端路由相关代码;`store`目录存放应用级数据(state)管理相关代码;`utils`目录存放工具函数相关代码;`views`目录存放页面相关代码;`App.vue`是主组件;`main.js`是入口文件。 以上是一个常见的Vue2项目目录结构,具体项目可能会略有差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值