Vue 项目初识
上篇文章创建了一个初始的 Vue2 项目,本文对这个几乎空白的项目框架进行简要介绍。
[!TIP|style:flat] 阅读本文时并不要求理解各部分是如何编写的,只大致了解它们的用途,在下一篇文章将用一个实例来展示如何使用。
目录/文件 | 说明 |
---|---|
node_modules | npm 加载的项目依赖模块 |
public | 静态资源,build 构建后为根目录,含网站导航栏图标、首页入口文件 |
src | 开发做的事情基本都在这个目录下,含: • assets: 放置一些图片、字体等资源 • components: 放置组件文件,一般为全局组件 • router: 网站路由跳转设置 • store: 前端数据存储 • views: 放置各页面文件 • App.vue: 项目入口文件 • main.js: 项目的核心文件,在这里可以导入各种全局依赖 |
.xxx文件 | 配置文件,包括语法配置、git配置(.gitignore)等 |
package.json | 项目配置文件 |
README.md | 项目的说明文档 |
下面对主要模块进行讲解。
node_modules
node_modules 目录下放置项目所需要的依赖环境,当使用 npm install packageName --save
命令给项目添加依赖时,信息会记录于 package.json
文件的 dependencies 中,而依赖的包将存储于 node_modules。
在该目录下,可以发现有我们在创建项目时选择的 vue-router 包,这是用于管理路由跳转的依赖。
在编辑器中可以看到该目录名字显示灰色的,因为它在 .gitignore
是被忽略的。在合作开发项目中,往往使用 git 来协调配合,而该目录内容庞大,且并非由程序员编写,因此往往不加入 git 中,在新机器上使用 npm install
,则会根据 package.json
的配置信息生成 node_modules。
public
初始项目中,public 目录下有 favicon.ico
和 index.html
两个文件,前者是网站图标logo,后者是网站首页入口文件,代码如下:
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
上述代码包含了一个网页最基本的信息,在 head
标签中,我们可以编写网站的标题title、编码charset、图标icon、描述description、关键词keywords等信息;在 body
标签中,vue 项目通常只需要包含 <div id="app"></div>
,表示 App.vue
文件。
src
assets
assets 目录放置项目所需要的资源,如图片、字体等,并由 vue 文件使用。
components
components 目录放置项目的全局组件。
在项目开发中,存在部分小模块需要多次复用,比如导航栏、某些样式的按钮等,通常被提取出来作为全局组件。与之对应的是局部组件,通常是某个页面内容较多,使用多个 vue 文件编写,其中某个 vue 文件和其它文件为父子关系,父引入子,实现低耦合的特性。
初始项目中,该目录下有 HelloWorld.vue
文件,可以看到在 views/Home.vue
中,引入了该文件。
在这里也简略说明一下 vue 文件的组成。vue 文件主要由三部分组成:
- template:html,网页结构内容
- script:该vue文件所需的数据对象格式、js方法等
- style:css页面样式
router
router/index.js
编写路由规则,即赋予 vue 文件相应的相对路由,核心代码为:
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: () => import('../views/About.vue')
}
]
其中,path
为分配的相对路由,component
指定 vue 视图页面。
初始项目运行在 localhost:8080
时,访问 localhost:8080/about
将显示 About.vue
的内容。
store
store 目录下主要放置前端存储数据的格式,利用 vuex 和 localStorage 在用户的网页端保存基本的用户信息。例如用户登录之后,将用户名存于前端,这样在渲染网页时可以直接使用,且向后端发送请求时可以携带用户名,以验证用户的登录信息是否有效。
views
在 views 目录下,主要是页面或局部组件的 vue 文件。看初始项目,里面有 About.vue
和 Home.vue
,分别对应路由 /about
和 /
。简单看一下这两个文件:
About.vue
:内容很简单,仅包含 html 部分,仅仅是一句话。
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
Home.vue
:包含 html 和 script 两部分,可以看到在 script 标签中引入了HelloWorld
组件,然后在 html 部分中进行调用,这样该页面的效果为,logo
图片加HelloWorld
组件。
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
HelloWorld
}
}
</script>
App.vue
App.vue
为项目入口文件,该文件描述整个网站将渲染的内容。
<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>
如上述代码,它由 nav
的代码块和 router-view
组成。前者是两个超链接,有点类似于网站的导航栏,将在各路由下都展示;后者表示根据路由渲染对应的 vue 组件,如果当前是 /about
则渲染 About.vue
文件描述的内容。
main.js
main.js
是项目的核心文件,在这里可以导入各种全局依赖。比如全局导入 elementUI 等UI组件或 ECharts 可视化图标库等,npm install
后将在该文件中全局引入。
以上介绍了 vue2 项目创建初始的各模块用途,掺杂了部分代码编写的指示,并不要求完全理解。在下一篇文章中,将会在初始项目的基础上编写一个登录页面,以帮助初学者更快入门。