Vue入门
Vue能让你模块化地开发网页。同时还能和其他插件协作,很方便进行打包发布
在阅读下文之前,确保对html/css/js有一些基本的了解。
准备工作
首先尽量安装最新版的Nodejs,然后在命令行里面测试下是否安装成功。
一般安装完Nodejs之后会自动把npm也安装好,但是有一些系统可能还需要手动安装npm,所以得在命令行里面检查下。
之后再全局安装vue和vue-cli,之后当前的开发环境就不需要再执行下面的命令了。
创建一个最简单的网站
网站创建好以后以后运行npm install
安装项目所需要的依赖,之后可以运行npm run dev
,在浏览器中http://localhost:8080
可以看到运行的结果
目录结构
├── build # 存放打包发布时候的需要运行的脚本
| ├── build.js
| └── ...
├── config 项目配置信息
| ├── index.js
| └── ...
├── src
| ├── asserts # 图片等静态资源
| ├── componets # 默认没有,需要自检创建
| ├── router
| | └── index.js
| ├── views
| | └── HellowWorld.vue
| ├── App.vue
| └── main.js
├── static
├── test
├── index.html # 整个网页的入口文件,可以添加一些全局都需要引用的内容
└── package.json # 管理项目依赖
虽然看到有很多文件,但是Vue能将我们要开发的网页全部整合到了一个html文件中,根据路由规则显示不同的页面内容。从下面对一些文件的进行说明中,可以体会这句话的含义。
config/index.js
这个文件主要记录在开发模式和打包模式中的配置信息。
module.exports = {
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
// 这个需要特别注意,在打包发布之后css,js文件的路径是相对的还是绝对的,不然可能找不到对应的文件
assetsPublicPath: './',
}
}
src/componets
这个文件夹下存放一些常用的组件,需要自己创建。下面以底栏为例,说明vue组件文件的结构
├── src
| ├── componets
└── Footer.vue
Footer.vue文件的具体内容如下:
<!-- template标签下存放html内容,没有任何特别之处 -->
<template>
<div class="footer">
<div class="container">
<p>Copyright © 2018 MYXOF. All Right Reserved.</p>
</div>
</div>
</template>
<script>
// script标签下编写
// 1. JS脚本
// 2. export default里面填写要的导出内容,包括自己的名字,自己页面有用到的数据内容等
export default {
name: "Footer"
}
</script>
<style scoped>
.footer{
/* put your css here */
}
</style>
src/views
这里存放Vue项目里面的“视图”,一个视图是指一个能展现给用户的,不能再分割的页面内容。比如:一个最简单的视图包括了导航航+正文+底栏,那么这个页面就是Vue里面的一个视图。
视图里面主要包含了若干组件和自定义的内容,在上面的例子中,导航栏和底栏可以作为组件引入,正文则是自己自定义的内容。
默认在src/views会有一个HellowWorld视图(默认在componets下,这里为了描述方便把它移动到了views下,注意对应引用的路径需要修改),下面就看一下怎么在一个视图中引入其他地方的组件。
<template>
<div class="hello">
<h1></h1>
<h2>Essential Links</h2>
<!--省略-->
</div>
<!--增加自定义Footer标签-->
<my-footer/>
</template>
<script>
// 引入Footer文件,注意和文件名对应
import Footer from "../components/Footer"
export default {
name: 'HelloWorld',
components: {
// 将自定义标签和Footer组件相对应
'my-footer': Footer
},
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<style scoped>
/* 省略 */
</style>
上面有三段注释的地方,在这三个地方添加对应的内容即可,底栏就算是加入到了当前视图当中去。其他组件的引用方法以此类推。
src/App.vue
虽然前面说到index.html是网页的入口文件,但其本质是一层外壳,对于开发者来说,App.vue才是真正的入口。最后当我们开发完进行打包之时,vue会把所有我们开发的内容放到App.vue中,然后再把App。vue的内容放到index.html中。
<template>
<div id="app">
<img src="./assets/logo.png">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
/* 省略 */
</style>
其中最重要的部分就是<router-view/>
,在HelloWorld.vue中的内容会被替换到这里。如果有多个视图,页面可以按照不同的情况显示一种的一个,就要靠src/router/index.js来控制。
src/router/index.js
看一下文件内容就能明白。当在浏览器输入http://127.0.0.1:8080的时候,对应的路径就是'/'
,那么<router-view/>
标签就会自动替换成HelloWorld视图里面的内容。
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
}
]
})
routes
里面是一个数组,当页面有多个视图要显示的时候,就往routes
里面添加不同的路径即可。
要注意的是,在做页面的跳转的时候,不能像以前那样<a href='/xxx'>
这种方式,要用vue自定义的写法,<router-link to="/xxx" class="nav-link">xxx</router-link>
。在生成页面的时候,vue会帮我们转为<a>
标签。
小结
以上就是vue项目的结构说明,以及每个文件能发挥的作用。
在开发的时候,一般先确定好有多少个组件,然后根据需要在每个视图中引用组件,最后确定好视图的路由规则即可。
打包发布
运行npm run build
命令,在dist文件夹下会生成对应的html以及静态资源文件。
要注意,打包的过程中不会做正确性检查。检查页面是否有明显的bug,最好先运行 npm run unit,确认无误之后再打包发布
总结
从上面的分析可以看到,Vue将我们要开发的网页全部整合到了一个html文件中,根据路由规则显示不同的页面内容。这样能够将开发者的工作尽可能的独立开了,提高了开发者的效率。
当然,vue的强大之处还远不止如此,更多用法还需要参考下方的官网文档。
参考
- http://www.runoob.com/vue2/vue-install.html
- https://cn.vuejs.org/index.html
- https://router.vuejs.org/zh/