Vue 项目 尚品汇(一)

一、开发环境构造

Vue-cli 脚手架初始化项目

node 平台 和 webpack 和 淘宝镜像 环境

(一)脚手架

1.安装脚手架

在我们的项目文件夹中路径输入 cmd 然后在终端中输入 vue create app(项目名) 

选择 vue 2 然后安装 (因为是基于 vue2 开发的)

2.脚手架内容介绍

1)node_modules :项目依赖文件夹

就是我们开发依赖的一些资源和框架

@babel 把 es6 的语法转化成 es5

@vue 框架

2)public:静态资源文件夹

单页面的 html 文件 和 图标

放到 public 文件夹中的静态资源 webpack 打包的时候会原封不动的打包到 dist 文件夹中

3)src :源代码文件夹

程序员源代码文件夹,程序员开发使用的

assets:静态资源 但是一般是多个组件共用的静态资源

放到 assets 文件夹中的静态资源 webpack 打包的时候会将静态资源当作一个模块打包到 JS 文件夹中

components:放非路由组件,常用的全局组件

App.vue 项目中唯一的根组件

main.js:程序的入口文件 最开始执行的文件 

gitgnore :git 的忽略文件 一般不碰

4)babel-config.js;配置文件

 babel 相关 一般不碰

5)package.json :项目介绍

可以看成项目的身份证,项目叫什么,有哪些依赖,怎么运行里面都有

6)package-lock.json:缓存性文件

依赖从哪下的 都有记录 第二次下的速度会变快 因为有缓存

7)readme.md :说明文件

对脚手架项目使用和说明的认知 里面有一些指令可以使用

3.运行浏览器自动打开网页

package.json  文件中修改属性 在后面加上一句 空格 --open 

"scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

4.eslint 校验功能关闭

有时候声明变量不适用就报错我们不想这么轻易就报错 影响我们使用我们就直接关了

在根目录下创建一个 vue.config.js 文件

里面配置如下即可关闭

module.exports = {
  lintOnSave: false
}

5.src 文件夹配置别名 @

在 jsconfig.json 文件中配置如下

遇见 @ 文件就当成 src 文件夹 未来文件过多 找的时候方便很多

但是不能在 

 "node_modules",

    "dist"

这两个文件夹中使用

{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "baseUrl": "./",
    "moduleResolution": "node",
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "exclude": [
    "node_modules",
    "dist"
  ]
}

二、项目路由分析

(一)路由回顾

vue-router

前端路由 可以看成 kv 键值对 

key:url 地址栏中的路径

value:相应的路由组件

(二)拆分

网页有上中下三部分

上下不变 中间变所以拆分结果为

路由组件:

Home 首页路由组件,Search 路由组件,login 登录路由,Register 注册路由

非路由组件:

Header

都有头部的组件

Footer

有的没有 footer 组件

注意1:

开发项目 不以html css 为主 主要涉及业务逻辑

开发顺序:

1.书写静态页面

2.拆分组件

3.通过 axios 获取服务器的数据进行动态展示

4.完成相应的动态的业务逻辑

创建组件时 组件结构 组件样式 组件资源 这三个部分都要有 而且要放到正确的位置

注意2:

我们的项目采用 less 的样式 浏览器不识别 less 样式 我们通过 less,less-loader 进行处理

变成 css 样式 浏览器就能识别了

安装依赖:npm install less

而且还得 让组件识别 less style 里面就加上 lang=less 即可

三、使用组件的步骤(非路由组件)

放在 components 文件夹中

(一)创建或者定义

创建新的组件 新建文件/文件夹

先粘贴 结构(html) 再粘贴样式(css) 然后还有图片等静态资源

(二)引入

在根组件 App 中引入新创建的组件

清除默认样式 引入 reset.css 文件清除默认的 css 样式

(三)注册

在 App 中 用 components 注册组件

(四)使用

在App 中 使用组件标签使用

四、路由配置使用

(一)处理路由组件

非路由组件放在 components 文件夹中,路由组件放在 pages/views 文件夹中

根据刚才分析的结果 应该有四个路由组件

(二)路由配置

配置的路由放在 router 文件夹中

1.在 router 文件夹中配置路由

因为 vue-router 是路由中的一个插件 所以得引入 vue 然后再引入 vue-router

2.引入路由组件 

3.配置路由

4.在入口文件中 引入路由

5.设置路由显示的位置

在 App 中 头部尾部标签中间 放一个 router-view 标签 就会显示到这里

6.定向首页

{
      path: "*",
      redirect: '/home'
    },

(三)路由跳转

 router-link 声明式路由导航 得有to 属性

把 a 标签跳转别的页面的标签都替换成 router-link 然后配置 to 属性

push/replace 编程式路由导航

如果不是 a 标签就用这个 绑定点击事件 然后回调函数里面使用 push/replace 来跳转 

this.$router.push('跳转路径')

(四)路由组件显示和隐藏

根据组件身上的 route 属性 获得当前路由的信息,通过路由路径判断 Footer 的显示和隐藏

通过 v-show 直接就能实现 但是 给路由配置 meta 属性比较好(配置路由元信息) 

路由中有这个信息

(五)路由传参

路由跳转的时候顺便把数据也传过去

搜索栏搜索时我们得把参数带过去 就得用到路由传参

搜索的时候通过按钮把参数传给 /search 路由

params 参数:属于路径中的一部分,配置路由时需要占位

1.字符串形式

query 参数 :不属于路径的一部分 类似于 ajax 中 的queryString /home?k=v&k=v 不需要占位

2.模板字符串形式 

前面时 parmas 参数 后面是 query 参数

3.对象形式 

需要给路由起个名字 name 指定给谁传数据

里面 params query 参数都能写

小面试题:

面试题1:

面试题2: 

在路由中加入一个问号就能解决 可传可不传的问题,代表params 参数可传可不传

面试题3:

面试题4:

为了组件用我们传的数据方便一点 但是不太用

正常路由跳转 和 发送数据

1.布尔型

首先在路由中 添加一个布尔类型的属性 props 只能传递 params 参数

接收 参数 props 就能接收到我们传入的 keyword

2.对象型

给 props 里面写成对象 能额外传递一些 props

直接接收 a b 就能用

3.函数型

返回的 props 数据是 箭头函数 有一个参数就是 $route 里面可以返回 query 型 和  params 型

接收数据 keyword 和 k

(六)编程式导航的错误

1.提出问题

编程式路由 跳转到 当前路由(参数不变)多次执行会抛出 NavigationDuplicated 的警告错误

路由跳转有两种形式 声明式导航 编程式导航

声明式导航 没有这种问题 

编程式导航有这种问题 因为 最新的 vue-router 引入了 promise 没有回调

返回一个 promise 对象 我们需要给一个成功或者失败的回调 但是我们没有

2.解决问题(不完全)

我们把正确和失败的回调都写上即可 虽然为空 但是可以解决这个问题 但是治标不治本 在别的组件中 有 push 和 replace 编程式导航还是有这个问题

3.完全解决

this 是当前组件实例 search

this.$router属性:当前属性 属性值VueRouter 类的一个实例 当在入口文件给文件注册路由的时候 给组件添加  $router $route 属性

push:是VueRouter 类的一个实例

所以我们得重写一下VueRouter 原型对象上的 push 方法

先保存一下

总结

路由知识前面 vue2 笔记中都有不多做叙述

路由非路由组件区别

文件夹不同 components pages/Views

使用方式不同 一个是注册使用 一个是标签 

都有 $route $router属性

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 00:54:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 00:54:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 00:54:02       82 阅读
  4. Python语言-面向对象

    2024-05-03 00:54:02       91 阅读

热门阅读

  1. 【C】190 颠倒二进制位

    2024-05-03 00:54:02       37 阅读
  2. 【SSL 1967】A和B

    2024-05-03 00:54:02       27 阅读
  3. 《Redis使用手册之持久化存储》

    2024-05-03 00:54:02       37 阅读
  4. 21-30图表

    2024-05-03 00:54:02       25 阅读
  5. JDO还有人用吗

    2024-05-03 00:54:02       30 阅读
  6. 【Flask 系统教程 1】入门及配置

    2024-05-03 00:54:02       31 阅读
  7. springboot新闻推荐系统 - 源码免费(私信领取)

    2024-05-03 00:54:02       31 阅读
  8. 探索“cd”命令:通往数字世界的奇幻之旅

    2024-05-03 00:54:02       35 阅读
  9. TCP三次握手

    2024-05-03 00:54:02       26 阅读
  10. go开发环境安装配置(vscode)

    2024-05-03 00:54:02       27 阅读
  11. WebGL是啥

    2024-05-03 00:54:02       31 阅读