• VUE-CLI/VUE-ROUTER


    231bda16a01b4e3aab2f5b30e10c157e.png

    个人简介

    > 📦个人主页:是Lay的主页
    > 🏆学习方向:JAVA后端开发 
    > 📣种一棵树最好的时间是十年前,其次是现在!
    > ⏰往期文章:【Java基础】面向对象进阶(二)
    > 🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。

    目录

     

    前言:

    1. 安装

    1.1 npm安装

    1.2 vue-cli安装

    2. 初始化项目

     2.1 vue init命令讲解

      2.2 项目初始化

    3. 运行项目

    4. 成功页面

    5. 项目结构

    5.1 总体框架

    5.2 配置目录文件详解

    5.3 src项目核心文件讲解

    6. VUE-ROUTER 

    6.1 快速入门

     6.2 页面跳转

    6.3 子路由-路由嵌套

    6.4 路由传递参数

    6.5 命名路由-命名视图-重定向-别名

     

    前言:

            官方文档

            vue-cli是vue官方出品的快速构建单页应用的脚手架,里面集成了webpack,npm,nodejs,babel,vue,vue-router

    1. 安装

    先安装nodejs

    配置环境变量

    4baacbf956a1ea2610fc00d13765b379.png

     

    9b14f914de13cd938fb7e194ff70847b.png

    47d7ef0c6158d463f1626e6e8e66c81a.png

     安装vue-cli的前提是你已经安装了npm,在命令行工具中输入npm -v 命令来检测npm的安装以及版本情况。

    1.1 npm安装

    node下载地址:下载 | Node.js 中文网
    安装成功提示:npm -v

    配置淘宝镜像

    npm config set registry https://registry.npm.taobao.org

    1.2 vue-cli安装

    全局安装vue-cli,命令行:

    npm install vue-cli -g

    92ad7dbe64ab8ff81d7ee0914e0ab639.png

    PS:-g代表全局安装,然后查看版本:

    vue -V

    PS: 注意这里的V是大写

    2. 初始化项目

     2.1 vue init命令讲解

    用vue init命令来初始化项目,具体使用方法如下:

    vue init

    init:表示要用vue-cli来初始化项目

    :表示模板名称,vue-cli官方提供的5种模板:

    1. webpack:一个全面的webpack+vue-loader的模板,功能包括热加载,linting,检测和CSS扩展。
    2. webpack-simple:一个简单webpack+vue-loader的模板,不包含其他功能,让你快速的搭建vue的开发环境。
    3. browserify:一个全面的Browserify+vueify 的模板,功能包括热加载,linting,单元检测。
    4. browserify-simple:一个简单Browserify+vueify的模板,不包含其他功能,让你快速的搭建vue的开发环境。
    5. simple:一个最简单的单页应用模板。

    :标识项目名称,用户根据自己的项目来起名字。

      2.2 项目初始化

       在实际开发中,一般都会使用webpack这个模板,命令使用如下:

     vue init webpack my-vue-demo

    88ccd5bba6220d0d391b1f448980b2ab.png

    Project name:项目名称 ,默认为初始化建项目的名称my-vue-demo,不需要直接回车
    Project description:项目描述,默认为A Vue.js project,不需要直接回车
    Author:作者,如果有配置git的作者,自动会读取。直接回车
    Install vue-router? 是否安装vue的路由插件,需要安装,选择Y
    Use ESLint to lint your code? 是否用ESLint来限制你的代码错误和风格。不需要输入n,需要选择y,如果是大型团队开发,最好是进行配置
    setup unit tests with Karma + Mocha? 是否需要安装单元测试工具,不需要输入n,需要选择y
    Setup e2e tests with Nightwatch? 是否安装e2e来进行用户行为模拟测试,不需要输入n,需要选择y

    初始化完成之后会出现以下信息,表示操作成功。

    fdaf2e4156120d98ab0e93eb24a60b05.png

     

    3. 运行项目

    cd my-vue-demo,使用cd命令进入到项目目录

    npm run dev

    以上命令为开发模式下运行项目

    npm run build

    以上命令为项目发布打包

    4. 成功页面

    dfd9f3d00c2165ee035b6ea91e40108b.png

    5. 项目结构

    5.1 总体框架

    一个vue-cli的项目结构如下,其中src文件夹是需要掌握,其余了解即可。
    文件夹目录如下:
    每个文件夹目录详细说明如下:

    f76d049b33d04000b8531576b8ff92fe.png 

    5.2 配置目录文件详解

    1. build目录(webpack配置)

    build文件主要是webpack的配置,目录详情如下:

    c8425195a623d5b3feb8a15d8c0cfd86.png

    2. config目录(vue项目配置目录)

    config文件主要是项目相关配置,常用的就是当端口冲突时配置监听端口,打包输出路径及命名等,目录详情如下:

    b63ada5240c15cfa35c8888c1bd105b0.png

    3. node_modules(项目依赖包)

    node_modules里面是项目依赖包,其中包括很多基础依赖,自己也可以根据需要安装其他依赖。安装方法打开命令工具,进入项目目录,输入npm install [依赖包名称],回车

    在两种情况下我们会自己去安装依赖:
    》项目运行缺少该依赖包
    》安装插件:如vuex

    PS:有时会安装指定依赖版本,需在依赖包名称后加上版本号信息,如npm install vue-loader@11.1.4

    5.3 src项目核心文件讲解

    核心文件目录前面已经说明了,下面重点讲解index.html,main.js,App.vue,router的index.js,HelloWorld.vue

    1. index.html(主页)

    index.html为项目的主页,跟其他html一样,但一般只定义一个空的根节点,在main.js里面定义的实例将挂载在根节点下,内容都通过vue组件来填充。说明如下:

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <meta name="viewport" content="width=device-width,initial-scale=1.0">
    6. <title>my-vue-demotitle>
    7. head>
    8. <body>
    9. <div id="app">div>
    10. body>
    11. html>

    2. main.js(入口文件)

    main.js为项目的入口文件,即单入口,主要是引入vue框架,根组件及路由设置,并且定义vue实例,说明如下:

    1. // 引入vue框架
    2. import Vue from 'vue'
    3. // 引入根组件
    4. import App from './App'
    5. // 引入路由配置
    6. import router from './router'
    7. // 关闭生产模式下给出的提示
    8. Vue.config.productionTip = false
    9. // 定义实例
    10. new Vue({
    11. el: '#app',
    12. router,
    13. components: { App },
    14. template: '<App/>'
    15. })

    3. App.vue(根组件)

    一个vue页面通常由三部分组成:模板(template)、js(script)、样式(style),说明如下:

    1. <template>
    2. <div id="app">
    3. <img src="./assets/logo.png">
    4. <router-view/>
    5. div>
    6. template>
    7. <script>
    8. export default {
    9. name: 'App'
    10. }
    11. script>
    12. <style>
    13. #app {
    14. font-family: 'Avenir', Helvetica, Arial, sans-serif;
    15. -webkit-font-smoothing: antialiased;
    16. -moz-osx-font-smoothing: grayscale;
    17. text-align: center;
    18. color: #2c3e50;
    19. margin-top: 60px;
    20. }
    21. style>

     [template-模板]
    (1) 模板只能包含一个父节点,也就是说顶层的div只能有一个(如上图,父节点为#app的div,其没有兄弟节点)
    (2)是子路由视图插槽,后面的路由页面都显示在此处,相当于iframe

    【script-JS代码】
    vue通常用es6来写,用export default导出,其下面可以包含数据data,生命周期(mounted等),方法(methods)等。

    【style-CSS样式】
    样式通过style标签包裹,默认是影响全局的,如需定义作用域只在该组件下起作用,需在标签上加scoped,

    引入外部CSS示例:

    1. <style>
    2. import './assets/css/public.css'
    3. style>

    4. router(路由配置)

    router文件夹下,有一个index,js的路由配置文件,说明如下:

    1. // 引入vue框架
    2. import Vue from 'vue'
    3. // 引入vue-router路由依赖
    4. import Router from 'vue-router'
    5. // 引入页面组件,命名为HelloWorld
    6. import HelloWorld from '@/components/HelloWorld'
    7. // 使用路由依赖
    8. Vue.use(Router)
    9. // 定义路由配置
    10. export default new Router({
    11. routes: [
    12. {
    13. path: '/',
    14. name: 'HelloWorld',
    15. component: HelloWorld
    16. }
    17. ]
    18. })

    5. HelloWorld.vue(页面组件)

    最熟悉的HelloWorld输出,说明如下:

    1. <script>
    2. export default {
    3. // 定义页面名称,可以不要
    4. name: 'HelloWorld',
    5. data () {
    6. return {
    7. // 定义变量
    8. msg: 'HelloWorld'
    9. }
    10. }
    11. }
    12. script>
    13. <style scoped>
    14. h1 {
    15. font-size: 16px;
    16. font-weight: normal;
    17. }
    18. style>

    6. VUE-ROUTER 

    官方文档

    Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。
    包含的功能有:

    • 嵌套的路由/视图表
    • 模块化的、基于组件的路由配置
    • 路由参数、查询、通配符
    • 基于 Vue.js 过渡系统的视图过渡效果
    • 细粒度的导航控制
    • 带有自动激活的 CSS class 的链接
    • HTML5 历史模式或 hash 模式,在 IE9 中自动降级
    • 自定义的滚动条行为

    6.1 快速入门

    安装

    vue-router是一个插件包,需要用npm来进行安装的。如果采用vue-cli构建初始化项目会提示安装,也可以自己使用命令安装:

    npm install vue-router --save

    解读核心文件

    用vue-cli构建项目之后,在src/router/index.js文件中,看到以下的路由核心文件:

    1. // 引入vue框架
    2. import Vue from 'vue'
    3. // 引入vue-router路由依赖
    4. import Router from 'vue-router'
    5. // 引入页面组件,命名为HelloWorld
    6. import HelloWorld from '@/components/HelloWorld'
    7. // Vue全局使用Router
    8. Vue.use(Router)
    9. // 定义路由配置
    10. export default new Router({
    11. routes: [ //配置路由,这里是个数组
    12. { //每一个链接都是一个对象
    13. path: '/', //链接路径
    14. name: 'HelloWorld', //路由名称,
    15. component: HelloWorld //对应的组件模板
    16. }
    17. ]
    18. })

    使用 

    在系统入口文件main.js中注入router,代码如下:

    1. // 引入vue框架
    2. import Vue from 'vue'
    3. // 引入根组件
    4. import App from './App'
    5. // 引入路由配置
    6. import router from './router'
    7. // 关闭生产模式下给出的提示
    8. Vue.config.productionTip = false
    9. // 定义实例
    10. new Vue({
    11. el: '#app',
    12. router, // 注入框架中
    13. components: { App },
    14. template: ''
    15. })

     6.2 页面跳转

     1. router-link标签跳转

    在html标签内使用router-link跳转,相应于超链接a标签,使用方式如下:

    "/">[显示字段]

    to:导航路径
    使用示例如下:

    1. 导航 :

    2. "/">首页
    3. <router-link to="/hello">hellorouter-link>

    2. 编程式导航-JS代码内部跳转

    实际项目中,很多时候都是通过在JS代码内部进行导航的跳转,使用方式如下:

    this.$router.push('/xxx')

    具体的简单用法:
    (1)先编写一个按钮,在按钮上绑定goHome( )方法。

    (2)在