Vue项目创建

1) 进入存放项目的目录
>: cd vue_project 2) 创建项目
>: vue create v-proj 3) 项目初始化
  • 输入npm run serve 初始化项目

pycharm配置并启动vue项目

1) 用pycharm打开vue项目
2) 添加配置npm启动

vue项目目录结构分析

├── v-proj
| ├── node_modules // 当前项目所有依赖,一般不可以移植给其他电脑环境
| ├── public
| | ├── favicon.ico // 标签图标
| | └── index.html // 当前项目唯一的页面
| ├── src
| | ├── assets // 静态资源img、css、js
| | ├── components // 小组件
| | ├── views // 页面组件
| | ├── App.vue // 根组件
| | ├── main.js // 全局脚本文件(项目的入口)
| | ├── router
| | | └── index.js// 路由脚本文件(配置路由 url链接 与 页面组件的映射关系)
| | └── store
| | | └── index.js// 仓库脚本文件(vuex插件的配置文件,数据仓库)
| ├── README.md
└ └── package.json等配置文件

js原型补充

function A() {}

let a1 = new A();
let a2 = new A(); // 为A类添加原型 类似于类属性
A.prototype.num = 100; console.log(a1.num);
console.log(a2.num); // ES6语法下的类
class B {
constructor(name) {
this.name = name
}
} let b1 = new B('cwz');
let b2 = new B('neo');
B.prototype.count = 666;
console.log(b1.count);
console.log(b2.count); console.log(b1.name);
console.log(b2.name);

vue项目生命周期

全局脚本文件main.js 文件入口

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store' Vue.config.productionTip = false new Vue({
router,
store,
render: h => h(App)
}).$mount('#app');

改为:

// 项目一启动,加载一堆环境
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store' Vue.config.productionTip = false // 创建根组件
new Vue({ // 挂载、 渲染挂载点
el: '#app',
router: router, // 把路由、仓库配置到vue对象中
store: store,
render: function (read_vue_fn) {
return read_vue_fn(App)
}
});
  • 启动项目,加载主脚本文件 mian.js,加载vue环境, 创建根组件完成渲染;加载系统已有的第三方环境:router、store;加载自定义的第三方环境与自己配置的环境,后期项目不断添加

  • router被加载,就会解析router文件夹下的index.js脚本文件,完成路由-组件 的映射关系

  • 新建视图组件.vue(在views文件夹中), 在路由中配置(在router的index.js中),设置路由跳转(在导航栏组件中)

    <router-link to="/user">去用户页面</router-link>  完成标签跳转
    
    this.$router.push('/user')   完成逻辑跳转

页面组件

views文件夹下新建Home.vue

<!--
template标签负责组件的html结构,有且只有一个根标签
--> <template>
<div class="home">
<h1>主页</h1>
<hr>
<Nav></Nav>
</div>
</template> <!--
script标签负责组件的js逻辑:逻辑固定导出(外界才可以导入)
-->
<script>
import Nav from '../components/Nav' export default {
data() {
return {}
},
methods: {},
components: {
Nav,
}
}
</script> <!--
style标签负责组件的css样式: scoped保证样式的组件化 样式只在该组件内部起作用
-->
<style scoped> </style>

根组件 App.vue

<template>
<div id="app">
<!--页面组件占位符-->
<router-view/>
</div>
</template>

配置自定义全局样式

mian.js中配置:

// 配置全局样式  @就代表src文件夹的绝对路径
// import '@/assets/css/global.css'
// import './assets/css/global.css'
require('./assets/css/global.css'); // 官方提倡required加载静态文件

路由逻辑跳转

this.$router     控制路由跳转
this.$route 控制路由数据
this.$router.push('/') 往下再跳转一页
this.$router.go(-2) go是历史记录前进后退, 正为前进,负为后退,数字为步数 // router文件夹 index.js中
const routes = [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/course',
name: 'course',
component: Course
},
] // 其中name的用法:
<router-link :to="{name: 'course'}">课程页</router-link>

路由重定向

const routes = [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/home/',
redirect: '/',
},
]

组件的生命周期钩子

  • 一个组件从创建到销毁的众多时间节点回调的方法
  • 这些方法都是vue组件 实例的成员
  • 生命周期钩子的作用就是满足不同时间节点需要完成的事
new Vue({
el: "#app",
data: {
msg: "message"
},
beforeCreate () {
console.log("组件要创建了");
console.log(this.msg); },
created () { // 在该钩子中完成后台数据的请求
console.log("实例创建成功, data, methods已拥有");
console.log(this.msg);
},
beforeMount() {
console.log("组件准备加载")
},
mounted () { // 特别耗时的数据请求,可以延后到组件初步加载成功,再慢慢请求
console.log("组件加载完成");
},
destroyed() {
console.log("组件销毁成功了")
}
// 拿到需求 => 确定钩子函数 => 解决需求的逻辑代码块
})

路由传参

第一种:

{
path: '/course/detail',
name: 'course-detail',
component: CourseDetail
}
{
path: '/detail',
redirect: '/course/detail'
}
this.$router.push('/course/detail');
this.$router.push('/course/detail?pk=1'); => this.$route.query.pk

第二种:

{
path: '/course/detail/:pk',
name: 'course-detail',
component: CourseDetail
}
this.$router.push('/course/detail/10'); => this.$route.params.pk

vue项目、路由的更多相关文章

  1. vue 项目路由跳转后显示不同的title

    1.在router/index.js的每个路由中配置title 2.在项目中运行命令 npm install vue-wechat-title --save 安装插件(在 package.json文件 ...

  2. 关于vue项目 路由中 使用的坑

    关于vue路由重定向的时候 记得一定要先声明先声明

  3. 解决vue项目路由出现message: "Navigating to current location (XXX) is not allowed"的问题(点击多次跳转)

    如果网页跳转用的方法传参去跳转: (点击多次链接会出现错误) <a class="" href="javascript:void(0);" @click= ...

  4. vue 项目中当访问路由不存在的时候默认访问404页面

    前言: 在Vue项目中,当访问的页面路由不存在或错误时,页面显示为一片空白.然而,通常我们需要对访问url不存在或者错误的情况下添加默认的404页面,即not found页面. 一般的处理方法是: 在 ...

  5. vue项目微信分享之后路由链接被破坏怎么办

    异常现象: 多页面应用,路由采用hash模式,链接带有"#". 在微信中分享到朋友圈或好友时,分享出去的路由被破坏,打开分享的链接,路由中的“#”会被去掉并追加?fromTimel ...

  6. VUE 项目刷新路由指向index.html

    背景描述: VUE 项目经过 npm run bulid 生成静态文件上传到服务器后,当我们切换路由并刷新页面,nginx 服务器会报 502 或者 404 错误. 原因分析: 我猜测是因为在 VUE ...

  7. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

  8. Vue框架(三)——Vue项目搭建和项目目录介绍、组件、路由

    Vue项目环境搭建 1) 安装node,在官网下载好,然后在本地安装 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 2) 换源安装cnpm >: npm ins ...

  9. vue项目搭建通过vue-cli包括组件路由的使用实现基本的前端项目全流程

    github上项目地址:https://github.com/comonly/javaweb_blog/tree/master/blog_diverse_frontend 具体搭建流程及实现方式:ht ...

随机推荐

  1. 数据库Oracle函数之单行函数的介绍

    函数介绍: 函数:是数据库产品中提供的能够处理查询结果的方法. 函数能够用于下面的目的: • 执行数据计算 • 修改单个数据项 • 格式化显示的日期和数字 • 转换列数据类型 • 函数有输入参数,并且 ...

  2. 移动开发在路上-- IOS移动开发系列 网络交互四(1)

    最近一段时间上班忙的没日没夜的,不是披星戴月,就是头天早上出门,第二天早上回家...一直没出处时间来更新博客,码农之苦,说了都是泪,废话不多说,直接本主题,经过之前三篇的讲述,ios开发的东西大家或多 ...

  3. [TimLinux] django WSGI入口分析及自定义WSGIHandler思路

    1. 命令行启动 命令行是通过runserver子命令来启动的,对应的django模块为django.core.management.commands.runserver,调用关系结构: # 简化的运 ...

  4. Zabbix 监控MySQL、Apache、Nginx应用监控

    zabbix对第三方应用软件的监控,主要有两个工作难点,一个是编写自定义监控脚本,另一个是在编写模板并导入zabbix web中,编写脚本这个要根据 监控需求定制即可,而编写模板文件有些难度,不过网上 ...

  5. Beego在views中格式化显示时间(int64转string)

    最近在使用beego开发系统的过程中,遇到时间转换问题,需求如下: 通过以下函数获取Unix时间戳,后台数据库格式为int64: time.Now().Unix() 效果图: 从数据库获取数据,直接以 ...

  6. ESD选型

    通常情况ESD保护电路如下 当系统没有干扰,正常工作时,ESD器件可以忽略,几乎不起作用 当外部接口电压超过ESD器件的击穿电压(VBR),ESD器件开始起作用,并将电流分流到地. 实际ESD器件的工 ...

  7. Java 打印Word文档

    本文介绍如何在Java程序中通过物理打印机和虚拟打印机来打印Word文档的方法.文中使用了类库Spire.Doc for Java,可通过官网下载jar文件并导入程序或者直接通过maven仓库安装导入 ...

  8. impala-shell导出数据存在中文异常问题

    由于查询在impala-shell 中没有问题,在导出数据的时候才有问题,这是impala-shell的客户端是由python编写的,而Python无法自动将unicode对象写入没有设置默认编码的输 ...

  9. c++-重载运算符(+-,++,--,+=,-=,cin,cout)

    操作符重载 自定义类型需要操作符重载 运算符重载入门技术推演 友元函数和成员函数实现2元运算符重载 友元函数和成员函数实现1元运算符重载(前置++,前置--,后置++,后置--) 友元函数实现运算符重 ...

  10. 蒟蒻的PKUWC2019划水记(更新ing)

    前言 (结束再补) \(Dec\ 20th\) 正式出发 今天,是正式出发的日子. 虽说是星期五,可并没有去学校晨跑.难得睡到了\(7\)点,起来匆匆吃完了早饭(一个手抓饼),就出发去火车站了. 到了 ...