vue学习笔记(四)
一、vue-router
1、简介
我们经常使用vue开发单页面应用程序(SPA)。在开发SPA过程中,路由是必不可少的部分,vue的官方推荐是vue-router。单页面应用程序看起来好像是一个页面,其实是在一个页面中切换不同的html部分,从而达到所谓的单页面,在这切换之中,就需要使用路由来实现不同的页面内容的展现。
2、基本用法
(1).使用步骤
vue-router的基本使用步骤如下:
- 定义需要切换的组件
- 配置路由,规定路径到组件的映射关系
- 创建路由实例
- 将路由挂载到vue实例
//1.定义组件,用于路由切换
var Home = {
    template: '<div>我是主页</div>'
}
var News = {
    template: '<div>我是新闻</div>'
}
//2.配置路由
const routes = [{
        path: '/home',
        component: Home
    },{
        path: '/news',
        component: News
    },{ //这一路由配置用于首次访问或者找不到所请求路由,自动跳转home页
        path: '*',
        redirect: '/home'
}];
//3.创建路由实例
var router = new VueRouter({
    routes  //传入配置好的路由信息
});
//4.挂载路由到根组件
new Vue({
    el: '#app',
    router
});这样我们就配置好了一个完整的路由。在切换组件的时候会根据路由加载不同的组件。我们使用类似a标签的<router-link to="url"></router-link>触发组件的切换,to属性存放的是路径。使用<router-view></router-view>来显示所切换组件。
<div id="app">
    <router-link to="/home">主页</router-link>
    <router-link to="/news">新闻</router-link>
    <router-view></router-view>
</div>这样我们就可以实现主页和新闻组件间的切换。
(2).参数传递
可能我们需要向所切换组件传递参数。vue提供了两种向组件传递参数的方式。
- 查询字符串的形式
- /home?name=dawei&pwd=666
 
- 在组件内部使用{{$route.query}}接收参数
 
- 在组件内部使用
- rest风格
- /news/param1/param2
 
- 在组件内部使用{{$route.params}}接收参数
 
- 在组件内部使用
(3).路由嵌套
路由还可以多层嵌套使用,使用children属性。
{
    path:'/user',
    component:User,
    children:[
        {
            path:'login',
            component:Login
        },
        {
            path:'regist',
            component:Regist
        }
    ]
}子路由项路径不要使用/开头,以 / 开头的嵌套路径会被当作根路径。
在组件中就可以使用该路由:
<div>
    <h3>用户信息</h3>
    <ul>
        <router-link to="/user/login">用户登陆</router-link>
        <router-link to="/user/regist">用户注册</router-link>
    </ul>
    <router-view></router-view>
</div>注意路径的写法。
3、路由实例的方法
这里学习两个路由实例的方法:router.push()和router.replace()。
- router.push():添加路由,功能上与<route-link>相同
- router.replace(): 替换路由,不产生历史记录 - router.push({path:'home'}) router.replace({path:'user'})
4、路由结合动画
路由结合动画使用很简单,我们可以用 <transition> 组件给它添加一些动画效果:
<transition>
  <router-view></router-view>
</transition>二、单文件组件
1、.vue文件
.vue文件称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html、css、js代码。
.vue文件由三部分组成:<template>、<style>、<script>:
<template>
    //html
</template>
<script>
    //js
</script>
<style>
    //css
</style>
2、vue-loader
浏览器本身并不认识.vue文件,此时需要vue-loader对.vue文件进行加载解析,。类似的loader还有许多,如:html-loader、css-loader、style-loader、babel-loader等。需要注意的是vue-loader是基于webpack的。
3、webpack
webpack是一个前端资源模板化加载器和打包工具,它能够把各种资源都作为模块来使用和处理。实际上,webpack是通过不同的loader将这些资源加载后打包,然后输出打包后文件。简单来说,webpack就是一个模块加载器,所有资源都可以作为模块来加载,最后打包输出。
三、vue-cli
1. 简介
vue-cli是一个vue脚手架,可以帮助我们快速构造项目结构,减少开发人员开发阻力。vue-cli集成了多种版本:
- simple :比较简单
- webpack :包含ESLint代码规范检查和unit单元测试等
- webpack-simple: 没有代码规范检查和单元测试
- browserify: 使用的也比较多
- browserify-simple
2.安装、操作步骤
//安装vue-cli,配置vue命令环境
    cnpm install vue-cli -g
    vue --version
    vue list
// 初始化项目,生成项目模板
    vue init 模板名  项目名
//进入生成的项目目录,安装模块包
    cd vue-cli-demo
    cnpm install
//运行
    npm run dev  //启动测试服务
    npm run build //将项目打包输出dist目录,项目上线的话要将dist目录拷贝到服务器上3.文件介绍
.
|-- build                            // 项目构建(webpack)相关代码
|   |-- build.js                     // 生产环境构建代码
|   |-- check-version.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                              // 源码目录
|   |-- components                     // vue组件
|   |-- store                          // 状态管理
|   |-- App.vue                        // 页面入口vue文件
|   |-- main.js                        // 程序入口文件,加载各种公共组件
|-- static                           // 静态文件
|   |-- data
|-- .babelrc                         // ES6语法编译配置
|-- .editorconfig                    // 定义代码格式
|-- .gitignore                       // git上传需要忽略的文件格式
|-- README.md                        // 项目说明
|-- favicon.ico                      //网页图标
|-- index.html                       // 入口页面
|-- package.json                     // 项目配置信息
.vue学习笔记(四)的更多相关文章
- vue学习笔记(四)事件处理器
		前言 在上一章vue学习笔记(三)class和style绑定的内容中,我们学习了如何在vue中绑定class和style,介绍了常用的绑定方法,class的数组绑定和对象绑定以及style的数组绑定和 ... 
- Vue学习笔记四:跑马灯效果
		目录 跑马灯原理 HTML 箭头函数 计时器 跑马灯效果 跑马灯原理 先讲讲跑马灯的原理,就是一行字,会滚动,思路是这样的,使用substring方法,一个获取字符串的第一个字,一个获取1后面所有的字 ... 
- VUE 学习笔记 四 计算属性和监听器
		1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ... 
- vue学习笔记(六)表单输入绑定
		前言 在上一章vue学习笔记(四)事件处理器这一篇博客的内容中,我们已经了解vue是如何绑定事件的,而本篇博客主要讲解的是vue中表单输入的绑定,通常我们自己提交信息的时候都是通过表单将信息到服务器的 ... 
- Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)
		(五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二 Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ... 
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
		(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ... 
- Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习
		一 使用环境: windows 7 64位操作系统 二 IDE:VSCode/PyCharm 三 Vue.js官网: https://cn.vuejs.org/ 四 下载安装引用 方式1:直接 ... 
- Vue学习笔记-vue-element-admin 按装报错再按装
		一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ... 
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
		前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ... 
- Vue学习笔记-2
		前言 本文非vue教程,仅为学习vue过程中的个人理解与笔记,有说的不正确的地方欢迎指正讨论 1.computed计算属性函数中不能使用vm变量 在计算属性的函数中,不能使用Vue构造函数返回的vm变 ... 
随机推荐
- 关于guava实现线程池
			private ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCac ... 
- A. Coffee Break(思维题,类似于邻接表的head数组用法)
			题:https://codeforces.com/gym/101911/problem/A 题意:每天工作m分钟,每次喝coffee得间隔d分钟,然后给出n个数,每个数表示想在一天中的a[i]的时刻喝 ... 
- Image.FromStream(ms) 提示参数无效
			说明ms有问题,首先确保有读到数据,这种情况是保存到库的时候出错的. 原来你可能是这样写的: MemoryStream stream = new MemoryStream();PictureBox1. ... 
- jsonConfig用法
			1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ... 
- abstract class
			在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点 ... 
- Java捕获并处理线程失败抛出的异常
			使用 UncaughtExceptionHandler 示例代码如下: Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExc ... 
- idea常见需求
			1.给class加注释模板 /** *@ClassName ${NAME} *@Description TODO *@Author xxx *@Date ${DATE} ${TIME} *@Versi ... 
- MySQL性能优化最佳实践 - 05 MySQL核心参数优化
			back_log参数的作用 指定MySQL可能的TCP/IP的连接数量(一个TCP/IP连接占256k),默认是50.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花 ... 
- 吴裕雄--天生自然python编程:turtle模块绘图(4)
			import turtle bob = turtle.Turtle() for i in range(1,5): bob.fd(100) bob.lt(90) turtle.mainloop() im ... 
- POJ 3249 Test for Job(拓扑排序+dp优化空间)
			Description Mr.Dog was fired by his company. In order to support his family, he must find a new job ... 
