全面了解 Vue3 (2)—vue3 项目结构介绍

829 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

上一次介绍如何安装 Vue3 ,使用脚手架来创建一个 Vue3 项目,现在用于 vscode 打开项目,来看项目结构,如下图。

project_structure_001.png

pakcage.json

在包管理文件 package.json 文件中列出了开发和发布时候依赖的包(库)。

"dependencies": {
    "core-js": "^3.6.5",
    "vue": "^3.0.0"
  },

开发过程依赖库都列在 "devDependencies" 下

"devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "@vue/compiler-sfc": "^3.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^7.0.0"
  },

scripts 中列出了 servebuildlint 来运行项目、构建项目以及检测项目

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

package-lock.json

这个文件只有在 npm 在 5 以上版本才存在这个文件,也就是说在 npm 5 版本后才引进这个问个 package-lock.json,好处是让 npm 安装依赖时速度更快了。这是因为起初 npm 安装依赖时速度比较慢,所以 google facebook 就自己写了一个 yarn 工具来快速从 npm 仓库里拉取依赖。所以后来 npm 在 5 以后也引入 yarn 安装方式,当时 yarn 引入第三方依赖时就会引入 pakcage-lock.json。

这里既然说了就是把为什么有 pakcage-lock.json 这个文件就会下载比较快,当你用 npm init -y 初始化一个项目时候,这时并不会产生 package-lock.json 而是当你开始安装依赖时候就会产生 package-lock.json 文件,这个文件详细记录下载依赖的版本、下载地址以及hash 值等信息,所以在下一次安装时就可以通过读取这个文件快速定位到依赖的包,从而实现快速安装依赖包。

babel.config.js

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}

项目中的文件夹

项目描述
Node_modules放置依赖库的文件
public其中放置一些静态资源,这里暂时包含两个文件 favicon.icon 和 index.html
src项目开发都在这个目录下进行开发

项目源文件(src)

main.js

这是主入口文件,通常在这个文件中做一些全局的事情。这里包管理支持 ESM,我们从 vue 导入 createApp 方法,然后将根组件传入这个方法返回对象就可以挂载到指定的元素上。

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

这里将 Vue 的根组件 App 绑定到 id 为 app 的 div 的 DOM 元素上,这里与 Vue2.0 略有不同,这里使用 createApp 来创建一个应用。

App.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

看这个文件主要有三部分组成,template 标签内为视图 script 间为脚步代码而 style 为样式代码。在 script 中通常返回一个对象,这就是 Vue 的组件,Vue 也是由 component(组件)构成,业务逻辑主要定义在这个对象里。随后我们主要就是了解这个对象,其中 name 属性定义名称,components 属性注册一下在当前组件中使用到组件。