热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习Vue笔记记录

Vue基础基础声明式渲染:el,data,methods,components。定义template然后挂载到index.html中的某个模

Vue 基础

基础

  1. 声明式渲染:el, data, methods, components。定义 template 然后挂载到 index.html 中的某个模块上
  2. MVVM 模型:双向绑定
  3. 生命周期:beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDestroy, destroyed

模版语法

  1. mustache,computed,watch 属性(监听 route)
  2. v-once, text, pre, cloak
  3. v-for: 给 DOM 元素添加 key
    1. 数组:(item, index) in myList
    2. 对象:(value, key, index) in myItem
  4. v-bind: 单向绑定属性
    1. 属性:src, value, name, title, class, href, style, id
    2. 动态变样式!绑定 class
  5. v-on: 绑定事件监听
    1. click: stop, prevent, native, once
    2. keyup/keydown: enter...
  6. v-if (else if, else) && v-show
  7. v-model: 双向绑定
    1. 等于 v-bind + v-on (比如:value + :input)
    2. 应用元素:input, mustache, radio(相同 value 互斥),checkbox, select & option
    3. 修饰符:lazy, number, trim

Vue 的组件化开发

  1. data 必须是函数:有自己独立的作用域

父子组件通信

父 --> 子

  1. props
  2. children(子组件数组)
  3. ref

子 --> 父

  1. 事件监听:
    1. 子定义:this.$emit('自定义事件名字', 其他参数)
    2. 父中子:v-on 绑定=‘自定义事件名字’
  2. parent
  3. root

v-slot 插槽

  1. 插槽默认值
  2. 具名插槽:name 对应上
  3. 作用域插槽:数据来自子组件,父组件重新进行排版(template + slot-scope="mychildslot") + mychildslot.myPropName

Webpack + Vue CLI 脚手架

Webpack 基础

  1. 静态模块打包:处理依赖关系,用 loader 将文件转换成浏览器可识别文件。除了JS以外,图片等文件也可以被当成模块来使用
  2. 使用:依赖 node 环境。 npm init: package.json 管理 package name, versionn, description, entry point, script 运行脚本, devDependencies, dependencies
  3. 文件配置打包出入口
  4. 使用vue:npm install vue。module 中配置 resolve extensions & alias

Webpack loader

  1. css
  2. less
  3. 图片:url-loader, file-loader
  4. babel: 处理 ES6 语法

Webpack Plugin

Webpack-dev-server

  1. 本地开发服务器,基于 node.js 服务器搭建
  2. module.exports 的 dev 对象中配置端口等信息

Webpack 配置文件: base 都会被 merge 到 dev 和 prod 中

  1. base.config.js
  2. dev
  3. prod

Vue CLI

CLI 3.0 配置,提供 vue ui命令,提供可视化配置

项目目录结构

  1. build
  2. config
  3. node_modules
  4. src
  5. static
  6. .babelrc
  7. .editorconfig
  8. .eslintignore
  9. .gitignore
  10. ./postcssrc
  11. index.html
  12. package.json
  13. package-lock.json
  14. README.mD

Runtime+compiler vs. Runtime-only

  1. Vue 程序运行过程:template —> AST —> render —> Virtual DOM —> UI
  2. runtime-only 直接 render 成 virtual DOM,没有转换 AST 步骤,效率更高

Vue Router

路由基本知识

  1. 公网 & 内网 IP
  2. 路由过程:内容 + IP地址 —> 猫 —> 路由器通过映射表(内网IP和电脑MAC地址的对照表)再次转发消息
  3. url 的 hash & HTML5 的 history
    1. pushState(data, title, url)
    2. history.back/forward/go/replaceState

前后端渲染 & 路由:后端渲染 --> (Ajax)前后端分离 --> SPA 前端路由

Vue-Router 基础

  1. router-link (to, tag, replace, (自定义)active class) + router-view
  2. 代码跳转:this.$router.push/replace

动态路由

  1. /user/:uid
  2. this.$route.params.uid

路由懒加载:

  1. 只请求 & 加载当前会用到的资源
  2. const myCpn = () => import('component Path')

其他

  1. 嵌套路由:children
  2. 路由传参:params, query
  3. 全局导航守卫:beforeEach (to, from, next), afterEach...
  4. Keep-alive

Javascript ES6 语法

  1. 模块化开发:
    1. Common JS:
      1. module.exports = {...}
      2. const blablabla = require('myPath')
    2. ES6:
      1. export (default)...
      2. import ... from ...
  2. Promise: 异步操作管理

Vuex:状态管理工具

  1. 过程:Vue components —> dispatch —> actions —> commit —> mutations —> modules —> state —> render —> Vue components
  2. state: 存储状态
  3. getters: vuex 的 computed
  4. mutations: 定义改变 state 的方法,使用时要 commit
  5. actions: 专门处理异步操作,使用时先 dispatch 到 actions,然后 actions 在 commit mutations 方法/事件
  6. modules: 拥有独立的 state, getter, mutation, action 的模块

Axios 网络请求封装框架

  1. get/post,普通请求
  2. 发送并发请求:
    1. axios.all([axios数组])
    2. axios.spread((res1, res2) => { ...... })
  3. 全局配置:defaults: url, method, baseURL, headers, timeout...
  4. 创建 Axios 实例:不同的实例有不同的配置
  5. 封装:返回一个函数,返回 Promise 对象,其中创建 axios 实例&用传进来的 config 发送请求,返回 Promise 对象。外部正常 then & catch
  6. 拦截器:
    1. request 请求拦截:
      1. 添加特殊的 header(比如language)
      2. 开启 loading
      3. 判断请求是否满足后端需求(比如看是否有token:登陆状态)
    2. response 拦截:
      1. 后端返回的登陆状态:按需跳转登陆页面
      2. 关闭 loading

推荐阅读
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文主要对比了Proxy和Object.defineProperty两种对象属性操作方式的优劣,并介绍了它们各自的应用场景。Proxy具有直接监听对象和数组变化、多种拦截方法以及新标准的性能优势等特点,而Object.defineProperty则兼容性好,支持IE9,并且无法用polyfill磨平浏览器兼容性问题。根据具体需求和浏览器兼容性考虑,选择合适的方式进行对象属性操作。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
author-avatar
mobiledu2502927537
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有