搭建Vue项目以及项目的常见知识

这篇具有很好参考价值的文章主要介绍了搭建Vue项目以及项目的常见知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:使用脚手架搭建vue项目,使用脚手架可以开发者能够开箱即用快速地进行应用开发而开发。

搭建

#创建一个基于 webpack 模板的新项目
vue init webpack my-project
#选择所需要的选项

如图:
搭建Vue项目以及项目的常见知识

cd my-project
npm run dev

搭建Vue项目以及项目的常见知识

访问localhost:8080
搭建Vue项目以及项目的常见知识

vue目录层级

理解vue项目的目录层级以及文件的作用十分很重要

├── build/               # Webpack 配置目录
├── dist/                # build 生成的生产环境下的项目
├── config/               # Vue基本配置文件,可以设置监听端口,打包输出等
├── node_modules/                # 依赖包,通常执行npm i会生成
├── src/                 # 源码目录(开发的项目文件都在此文件中写)
│   ├── assets/            # 放置需要经由 Webpack 处理的静态文件,通常为样式类文件,如css,sass以及一些外部的js
│   ├── components/        # 公共组件
│   ├── filters/           # 过滤器
│   ├── store/         # 状态管理
│   ├── routes/            # 路由,此处配置项目路由
│   ├── services/          # 服务(统一管理 XHR 请求)
│   ├── utils/             # 工具类
│   ├── views/             # 路由页面组件
│   ├── App.vue             # 根组件
│   ├── main.js             # 入口文件
├── index.html         # 主页,打开网页后最先访问的页面
├── static/              # 放置无需经由 Webpack 处理的静态文件,通常放置图片类资源
├── .babelrc             # Babel 转码配置
├── .editorconfig             # 代码格式
├── .eslintignore        # (配置)ESLint 检查中需忽略的文件(夹)
├── .eslintrc            # ESLint 配置
├── .gitignore           # (配置)在上传中需被 Git 忽略的文件(夹)
├── package.json         # 本项目的配置信息,启动方式
├── package-lock.json         # 记录当前状态下实际安装的各个npm package的具体来源和版本号
├── README.md         # 项目说明

1、Vue的生命周期

vue生命周期图以及详情可以查看官方文档:Vue生命周期

Vue实例具有生命周期:beforeCreate( 创建前 )、created ( 创建后 )、beforeMount、mounted、beforeUpdate、updated(更新后)、beforeDestroy(销毁前)、destroyed(销毁后)

beforeCreate( 创建前 )

在Vue实例创建前,el 和 data 并未初始化,无法访问methods,data,computed等上的方法和数据。

created ( 创建后 )

实例已经创建完成之后被调用,实例已完成以下配置:数据观测、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。挂在阶段还没有开始, $el属性目前不可见,你可以调用methods中的方法,改变data中的数据,并且修改可以通过vue的响应式绑定体现在页面上,获取computed中的计算属性,也可以发异步请求。

beforeMount

此时已经完成编译模板,把data里面的数据和模板生成html,完成了el和data 初始化,注意此时还没有挂在html到页面上。

mounted

挂在完成,也就是模板中的HTML渲染到HTML页面中,此时一般可以做一些ajax操作,mounted只会执行一次。
beforeUpdate
在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,不会触发附加地重渲染过程

updated(更新后)

在由于数据更改导致地虚拟DOM重新渲染和打补丁只会调用,调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作,然后在大多是情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环,该钩子在服务器端渲染期间不被调用

beforeDestroy(销毁前)

在实例销毁之前调用,实例仍然完全可用,
这一步还可以用this来获取实例,
一般在这一步做一些重置的操作,比如清除掉组件中的定时器 和 监听的dom事件

destroyed(销毁后)

在实例销毁之后调用,调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用
生命周期内容转载至:作者:前端_周瑾 来源:简书
链接:https://www.jianshu.com/p/672e967e201c

2、Vue导入导出:import export

使用场景:一些公共的方法可以写进js中,并进行导出,在需要用到的时候将其导入即可使用

本案例:
创建后的项目为:
搭建Vue项目以及项目的常见知识

首先在static中创建一个common.js,并在common.js中定义一些公共方法

var common = {
  getFullName(firstName, secondName) {
    return firstName + secondName
  }
}

export default common

搭建Vue项目以及项目的常见知识

全局导入

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import common from "../static/js/common";

Vue.config.productionTip = false
Vue.prototype.$common = common
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

搭建Vue项目以及项目的常见知识

如何使用呢?
this.$common来调用里面的方法

export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      firstName:'hello',
      secondName:'world'
    }
  },
  methods:{
    getFullName(){
      return this.$common.getFullName(this.firstName,this.secondName)
    }
  }
}

搭建Vue项目以及项目的常见知识

 <h2>{{getFullName()}}</h2>

效果如下:
搭建Vue项目以及项目的常见知识

3、路由

更多知识请看官方文档:路由
原本项目中是:
搭建Vue项目以及项目的常见知识

现在可以在components文件夹中创建多一个vue组件,本案例创建Info.vue

 {
      path: '/Info',
      name: 'Info',
      component: Info
    }

搭建Vue项目以及项目的常见知识
搭建Vue项目以及项目的常见知识

效果如下:
搭建Vue项目以及项目的常见知识

路由跳转 $router
#在HelloWorld.vue中添加
   <button @click="$router.push('Info')">Info</button>

点击按钮后跳转:
搭建Vue项目以及项目的常见知识
搭建Vue项目以及项目的常见知识

又或者将跳转写成一个方法,两者效果一致:

#methods中添加方法
  goToInfo(){
      this.$router.push('Info')
    }

#添加一个按钮,绑定一个点击事件
 <button @click="goToInfo()">Info</button>
vue router 路由跳转常用的4 个方法
#1/xx 路径名
this.$router.push('/xx') 
 
 
#2、路由带参数 query中放置参数
this.$router.push({         
   name:'xx1',
   query:{
	    name: 'zhangsan'xx:xx      
          }
        })

获取参数:this.$route.query.xx

#3、路由带参
 
this.$router.push({
   path:'/xx2',      
   query:{
           xx:xx   
       }
})
 
#4、路由不会带查询参数,可以在route 里面的params 里查询到
this.$router.push({
   name:'xx3',    
   params:{
           xx:xx   
       }
})

获取参数:this.$route.params.xx
$router 和 $route的区别

1.router是VueRouter的一个对象,通过Vue.use(VueRouter)和VueRouter构造函数得到一个router的实例对象,这个对象中是一个全局的对象,他包含了所有的路由包含了许多关键的对象和属性。
举例:history对象

$router.push({path:‘home’});本质是向history栈中添加一个路由,在我们看来是 切换路由,但本质是在添加一个history记录

2.route是一个跳转的路由对象,每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name,path,params,query等

查看route的信息
 getRouteInfo(){
      console.log(this.$route.name)
      console.log(this.$route.path)
      console.log(this.$route.query)
      console.log(this.$route.params)
    }

搭建Vue项目以及项目的常见知识

路由守卫(导航守卫)

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

记住参数或查询的改变并不会触发进入/离开的导航守卫。你可以通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫

全局导航守卫
举一个场景:用户需要登陆了才可以访问系统的后台页面,不然的话不允许进行页面跳转。
在main.js中添加:

import router from './router'

#路由守卫

router.beforeEach(({name}, from, next) => {
  // 获取用户的JWT Token信息验证用户是否登陆
  if (localStorage.getItem('token')) {
    // 用户已经登陆了,如果用户在login页面
    if (name === 'Login') {
      //跳转至首页 /
      next('/');
    } else {
      next();
    }
  } else {
    if (name === 'Login') {
      next();
    } else {
      next({name: 'Login'});
    }
  }
});


new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于 等待中

每个守卫方法接收三个参数:

  • to: Route: 即将要进入的目标 路由对象

  • from: Route: 当前导航正要离开的路由

  • next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

  • next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)

  • next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

  • next(‘/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: ‘home’ 之类的选项以及任何用在 router-link 的 to prop 或 router.push 中的选项。

  • next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

此处路由参数内容转载至:
作者: 妖色调
网址: https://www.cnblogs.com/loveyt/p/10905662.html

Axios异步请求

发送请求给服务器一般都是异步请求,在main.js中配置全局axios

import axios from 'axios'
Vue.use(VueAxios,axios)

//{config}其他配置,譬如说请求头等信息
发送Get请求

 this.$axios.get('url',{config}).then(res => {
  //处理返回的数据结果
})

发送Post请求

 this.$axios.post('url',data,{config}).then(res => {
  //处理返回的数据结果
})

发送Delete请求

 this.$axios.delete('url',data,{config}).then(res => {
  //处理返回的数据结果
})

发送Put请求

 this.$axios.put('url',data,{config}).then(res => {
  //处理返回的数据结果
})

请求拦截器interceptors

前端拦截器interceptors,作用是拦截请求
场景:每次发送请求到服务器时,都带上token验证
在main.js中添加

axios.interceptors.request.use(config=>{
//从本地localStorage获取token信息,并放置在请求头中
  if(localStorage.getItem('token')){
    config.headers.Authorization = localStorage.getItem('token')
  }
  return config;
});

过滤器filter

场景:项目中对于日期数据格式的过滤
在main.js中添加

Vue.filter('formatDate', function(value) {
  // return Moment(value).format('YYYY-MM-DD HH:mm:ss')
  return Moment(value).format('YYYY-MM-DD')
})

使用:文章来源地址https://www.toymoban.com/news/detail-499925.html

 <div class="time">{{ birthday | formatDate }}</div>

到了这里,关于搭建Vue项目以及项目的常见知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3+vite+ts项目集成科大讯飞语音识别(项目搭建过程以及踩坑记录)

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端

    2023年04月09日
    浏览(37)
  • STM32CUBEMX使用教程以及项目的搭建

    STM32cubemx教程 简介 STM32CubeMX 是 ST 意法半导体近些年力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。 在CubeMX上,通过傻瓜

    2024年02月08日
    浏览(29)
  • 使用vue-cli创建vue2项目以及项目配置

    1、安装vue-cli cmd:npm install -g @vue/cli@4.5.19 验证是否安装成功:vue -v   出现版本号说明安装成功 2、创建项目 vue create 项目名称 根据自己的需求选择特性,如下所示: 手动选择: 选择自己需要的特性:例如: 选择vue版本 选择路由模式 (输入y和n都可以,y代表history模式没有

    2024年02月06日
    浏览(39)
  • 【vue项目】vue项目创建全流程,创建使用 vue-cli 搭建项目

    一. 使用 vue-cli 搭建项目 1.安装vue/cli ,执行下面的命令安装或是升级 npm i -g @vue/cli 安装报错 ​ 如果安装报错如下 npm i -g @vue/cli 安装报错解决方案 ​ 查看vue版本 vue -V ,主要原因是安装vue的版本过低。 ​ 输入以下命令 ,可以强制覆盖以前旧版本的vue-cli脚手架。 ​ 执行完,

    2023年04月17日
    浏览(36)
  • 项目搭建使用qiankun(乾坤),入门篇,以及遇到的坑与解决

    微前端架构具备以下几个核心价值: 技术栈无关 主框架不限制接入应用的技术栈,微应用具备完全自主权 独立开发、独立部署 微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新 增量升级 在面对各种复杂场景时,我们通常很难对一个已经存在的系统

    2024年02月12日
    浏览(28)
  • 【vue create】一.使用vue creat搭建项目

    场景 :使用vue create脚手架快速搭建vue的项目 前提 :需要安装node.js和cnpm以及yarn 并且cnpm需要设置为淘宝镜像,cnpm和yarn安装教程网上很多可以自行搜索 查看安装的版本(显示版本号说明安装成功) 1.cmd窗口跳到需要新建项目的文件夹下,使用vue create 2.我这里选择第三个Ma

    2024年02月06日
    浏览(28)
  • vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持

    一、v-model是什么 v-model是Vue框架的一种内置的API指令,本质是一种语法糖写法,它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。在Vue中,v-model是用于在表单元素和组件之间创建双向数据绑定的指令。它可以简化表单元素的绑定,使得在用户输入

    2024年01月19日
    浏览(40)
  • 分布式核心知识以及常见微服务框架

     分布式中的远程调用 在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等,目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

    2024年02月11日
    浏览(27)
  • 02_使用Vite搭建Vue3项目

    首先插件添加:Live Server、Vue - Official、Vue VSCode Snippets、别名路径跳转 官网:Vite | 下一代的前端工具链 (vitejs.dev) 1.创建一个文件夹VueApp,运行cmd转到该目录下,执行命令:npm create vite@latest 2.然后转到vuedemo目录下命令:cd vuedemo, 3.执行命令:npm install。文件夹内会新添加no

    2024年04月08日
    浏览(39)
  • linux常见命令以及jdk,tomcat环境搭建

    目录 Is  pwd  cd   touch cat echo vim  复制粘贴  mkdir  rm cp   jdk部署 1. yum list | grep jdk进行查找​编辑 2.安装​编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包,把压缩包上传至linux(可能需要yum install lrzsz)  2.解压缩unzip 压缩包名(可能要 yum install unzip) 3.进入bin目

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包