文章目录

  • 一、安装
  • 二、小Tips
  • 三、分析脚手架结构
  • 四、为什么使用render函数
  • 五、修改脚手架中的默认配置
  • 六、ref属性
  • 七、配置项props
  • 八、mixin混入
  • 八、自定义插件
  • 九、scoped样式管理
  • 十、todo案例
    • 1、思路
    • 2、添加数据——Vue组件中按下回车键获取value值
    • 3、勾选与取消勾选
    • 4、删除
    • 5、统计已完成与全部完成
    • 6、清除已完成的todo
    • 7、总结TodoList案例
  • 十一、浏览器本地存储WebStorage
    • 1、location
    • 2、session
  • 十二、todoList案例中添加本地存储
  • 十三、组件的自定义事件
    • 1、自定义事件_绑定
    • 2、自定义事件_解绑
  • 十三、事件总线
  • 十四、消息订阅与发布
    • 1、定义:
    • 2、使用步骤
  • 十五、nextTick
  • 十六、Vue中封装的过渡与动画
    • 1、效果
    • 2、实现
      • 2.1、第一种:使用动画效果实现
      • 2.2、第二种:使用过渡方式
      • 2.3、第三种:使用第三方库实现过渡效果
  • 十七、vue脚手架配置代理
    • 1、方法一
    • 2、方法二

一、安装

第一步(仅第一次执行):全局安装 @vue/cli

npm install -g @vue/cli

第二步:切换到你要创建项目的目录,然后使用命令创建项目

vue create xxxx

第三步:启动项目

npm run serve

二、小Tips

  1. 如出现下载缓慢请配置 npm 淘宝镜像:
npm config set registry https://registry.npm.taobao.org
  1. Vue 脚手架隐藏了所有 webpack 相关的配置,若想查看具体的 webpack 配置,请执行如下命令 。就会将脚手架的默认配置生成一个 output.js文件供你查看
 vue inspect > output.js

三、分析脚手架结构

  1. 当我们使用脚手架新建一个项目vue_demo时,目录结构如下

assets 存放 png、video等静态资源,
components 存放子组件
脚手架文件结构如下:

  1. 当我们运行npm run serve命令时,系统会去文件中寻找main.js入口文件,
/*该文件是整个项目的入口文件*/
// 引入Vue
import Vue from 'vue'
// 引入APP组件,它是所有组件的父组件
import App from './App.vue'
// 关闭vue的生产提示
Vue.config.productionTip = false
// 创建Vue实例对象—— —— vm
new Vue({// 下面这行运行代码完成这个功能,将App组件放入容器中render: h => h(App),
}).$mount('#app')
/*
* .$mount('#app') ==>  el:'#app'
*/
  1. 首先引入App.vue文件,在App.vue文件中再引入components文件夹下的其他vue文件,如下

  2. public文件夹下找到index.html,从而启动页面

<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8"><!-- 针对IE浏览器的一个特殊配置,含义是让给IE浏览器以最高的渲染级别渲染页面 --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 开启移动端的理想视口 --><meta name="viewport" content="width=device-width,initial-scale=1.0"><!-- 配置图标文件的引入,<%= BASE_URL %> ,表示 public目录下--><link rel="icon" href="<%= BASE_URL %>favicon.ico"><!-- 配置网页标题,<%= htmlWebpackPlugin.options.title %>表示package.json中的name --><title><%= htmlWebpackPlugin.options.title %></title></head><body><!-- noscript 表示当浏览器不支持js时noscript钟的元素就会被渲染 --><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body>
</html>

四、为什么使用render函数

在我们 创建vm时,使用的new Vue时,使用常规的new Vue会出现以下错误

new Vue({el:'app';template:'<h1>你好啊!</h1>`;components:{App}
})

错误信息中要求我们使用完整版的vue或者使用render函数,由于在开发中使用完整版的vue占用体积相对较大,因此使用render函数【render函数中必须要有返回值】

一般的render函数写为:
render(createElement){return createElement('h1','你好啊!')
}经过使用箭头函数的缩写为:render: h => h('h1','你好啊!')

即,也可以写为:

因此,总结如下

五、修改脚手架中的默认配置

  1. Vue 脚手架隐藏了所有 webpack 相关的配置,若想查看具体的 webpack 配置,请执行如下命令 。就会将脚手架的默认配置生成一个 output.js文件供你查看
 vue inspect > output.js
  1. 使用vue.config.js可以对脚手架进行个性化定制,详情见:https://cli.vuejs.org/zh

六、ref属性

当我们在APP.vue中给各标签添加属性获取DOM值操作时,建议使用ref属性,来代替document,getElementById(‘title’)
通过ref属性获取到的值我们进行打印输出,发现,组件的DOM是组件的实例对象,而标签的DOM是真实DOM


因此,ref

  1. 被用来给元素或子组件注册引用信息(id的替代者)
  2. 应用在HTML标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  3. 使用方式:
    打标识:<h1 ref="xxx">...<h1><School ref="xxx><School>
    获取 :this.$refs.xxx

七、配置项props

props 实现了父组件向子组件传递数据(或方法),父组件中绑定属性(或方法),子组件中利用props接受数据(或方法)。。。若想要子组件向父组件传递数据,可利用方法传递,将参数带到方法中递回给父组件

现在有这么一个需求:在复用组件时,组件内的数据可以动态的改变,传入什么就展示什么——这就要用到props配置属性


所以,配置项props的功能就是让组件接收外部传过来的数据。

props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么就要求复制props的内容到data中一份,然后去修改data中的数据。

接收数据的方式如下

第一种:简单的声明接收【常用,只接收,对数据无特别要求】

props:['name','age','sex']

第二种:接受的同时对数据进行类型限制

props:{name:String,age:Number,sex:String
}

第三种:接受的同时对数据:进行类型限制 + 默认值的指定 + 必要性的限制
注意:default 与 required不能同时出现

props:{name:{type:String, // name 的类型是字符串required:true, // name 是必要的},age:{type:Number,default:99 // 默认值},sex:{type:String,required:true}
}

八、mixin混入

1、功能:复用配置,可以把多个组件共用的配置提取成一个混入对象,即多个组件共享同一个配置。
2、使用方式:

  1. 将共用的内容抽取到一个js文件中

  2. 在需要用到的组件中进行引入——局部引入

  3. 在需要用到的组件中进行引入——全局引入

八、自定义插件

1、定义插件:在plugins.js文件中定义插件,install()的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据【可写】


2、使用插件:在main.js文件中引入插件:import,使用插件:Vue.use()

九、scoped样式管理

在新建组件时,会用到style样式,scoped的作用就是让样式在局部生效,防止类名相同引起冲突


十、todo案例

1、思路

2、添加数据——Vue组件中按下回车键获取value值

安装npm install nanoid,并在代码中导入并调用nanoid()函数可以生成随机的id值

第一种:使用event获取数据

<template><div><input type="text" placeholder="请输入你的信息,按回车键确认" v-model="title" @keyup.enter="add"/><div/>
</template><script>import {nanoid} from 'nanoid'export default {name:'AddMessage',methods: {add(event){// 将用户的输入包装成一个todo对象const todoObj = {id:nanoid(),title:event.target.value,done:false)}}}
</script>

第二种:使用v-model双向绑定数据

<template><div><input type="text" placeholder="请输入你的信息,按回车键确认" v-model="title" @keyup.enter="add"/><div/>
</template><script>export default {name:'AddMessage',data(){return {title:''}},methods: {add(){// 校验数据if(!this.title.trim()) return alert('输入不能为空')// 将用户的输入包装成一个对象const todoObj = {id:nanoid(),title:this.title,done:false),// 将输入框的数据进行清除this.tite = '' }}}
</script>

3、勾选与取消勾选

第一种写法:绑定点击事件

第二种方法:使用v-model布尔值的点击绑定修改,但是不推荐使用,因为修改掉了 props

4、删除

5、统计已完成与全部完成

第一种:使用foreach循环添加【不推荐使用】

第二种,使用reduce函数实现:reduce((函数),初始变量接收值,类似于let i=0)
数组的长度为几,reduce中的函数部分就会调用几次。
pre:上一次的值
cuurrent:当前的值

使用v-model,但需要get()方法和set()方法同时使用

6、清除已完成的todo

7、总结TodoList案例


注意:vc中datapropsmethodscomputed中的名字不能重名

十一、浏览器本地存储WebStorage

首先,定义几个button

1、location

2、session

十二、todoList案例中添加本地存储

十三、组件的自定义事件

1、自定义事件_绑定

组件的自定义事件需要子组件向父组件进行传递数据,父组件定义函数(带参),绑定在子组件上,子组件通过props去拿到父组件传递过来的函数进行调用并将参数传递出去,从而试下子——父组件之间的传递

父组件App.vue

除此之外还可以用ref去接受,并在mounted中去触发事件

子组件Student.vue

2、自定义事件_解绑

解绑哪个事件就需要在哪个事件应用的组件上绑定解绑事件

十三、事件总线

想要在兄弟组件中互相传递数据,得用到父组件,但是非常麻烦
因此,学习事件总线可以有效的传递兄弟组件间的数据

首先在main.js文件中的实例对象vm上绑定一个事件如下

第二步在兄弟组件1——Student组件中设置方法将name通过事件总线发射出去

第三步,在兄弟组件2——School组件中的bus总线上绑定事件去接收传过来的数据

十四、消息订阅与发布

1、定义:

是一种组件间通信的方式,使用于任意组件间的通信

2、使用步骤

  1. 安装pubsub:npm install pubsub-js
  2. 引入:import pubsub from 'pubsub-js'
  3. 接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调留在A组件自身
  4. 提供数据:pubsub.publish('xxx',数据)
  5. 最好在beforeDestroy钩子中,用PubSub.unsubscribe(pid)取消订阅

十五、nextTick

  1. 语法:this.$nextTick(回调函数)
  2. 作用:在下一次DOM更新结束后执行其指定的回调
  3. 什么时候用:当改变数据后,要基于更新后的DOM进行某些操作时,要在nextTick所指定的回调函数中执行
  4. 案例:在点击编辑下一任务时该任务取消焦点获取,下一任务获得焦点

十六、Vue中封装的过渡与动画

1、效果

向左向右过渡移动的效果

2、实现

<template><div><button @click="isShow=!isShow">显示/隐藏</button><transition name="hello" appear><h1 v-show="isShow">{{msg}}</h1></transition></div>
</template>
<script>export default {name: 'Test',data(){return{msg:'你好啊大家!',isShow:true}},}
</script>

2.1、第一种:使用动画效果实现

1、将要过渡的内容放在<transition>标签中,添加name,在使用时对name进行过渡效果添加,添加apper表示在页面加载时开始过渡
2、在css中设置@keyframes中的移动效果
3、利用.hello-enter-active{}.hello-leave-active{}添加进入,离开的效果

<style scoped>h1{background-color: orange;}.hello-enter-active{animation: tran 1s linear;}.hello-leave-active{animation: tran 1s linear reverse;}@keyframes tran {from{transform: translateX(-100%);}to{transform: translateX(0px);}    }
</style>

2.2、第二种:使用过渡方式

2.3、第三种:使用第三方库实现过渡效果

该库的官网
第一步:安装库:npm install animate.css
第二步:导入库:import 'animated'
第三步:使用:

十七、vue脚手架配置代理

1、方法一


2、方法二


VueCLI 脚手架相关推荐

  1. Vue2.0使用vue-cli脚手架搭建

    一:安装node.js Node.js官网:https://nodejs.org/en/download/ 选择相应的版本即可安装 通过node自带的npm包管理工具 二.安装依赖 安装依赖:npm ...

  2. 前端进阶(三) webpack处理vue以及vue-cli脚手架环境

    webpack处理vue 安装 vue yarn add vue vue单文件组件 single-file components(单文件组件) ,文件扩展名为 .vue 的文件,需要安装vetur插件 ...

  3. 手摸手教你使用vue-cli脚手架-详细步骤图文解析[vue入门]

    写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目 ...

  4. Vue2.0 --- vue-cli脚手架中全局引入JQ

    第一步:安装jQuery npm/cmpn方式安装(默认安装1.7.X版本的JQ) npm/cnpm install jQuery 如果想安装更高版本的JQ那么可以选择在package.json文件下 ...

  5. vue基础18(vue-cli脚手架项目中组件的使用)

    vue-cli脚手架项目中组件的使用 在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的 ...

  6. 利用官方的vue-cli脚手架来搭建Vue集成开发环境

    在利用vue-cli脚手架搭建vue集成环境之前,我们需要先安装nodejs的环境.如果在cmd中输入node --version和npm --version出现如下的版本信息,就说明安装已经成功了. ...

  7. vue-cli 脚手架移除、安装(最新版安装)、检测安装结果 - npm篇

    文章目录 序言 · 本文· 知识点 一. 旧版本的删除:cmd 命令行 二. 新版本的安装:cmd 命令行 三. 安装成功与否的检测方法 附件:上述cmd 命令执行 · 截图 四. 案例搜集 五 .[ ...

  8. 史上最详细Vue-CLI脚手架快速创建Vue项目教程

    Vue-CLI脚手架 前言 安装Vue CLI 使用参考文档 一.创建项目存储文件夹 二.CMD打开当前文件夹所在路径 三.项目的配置 1.创建项目存储位置 2.项目名命名 3.项目预设 4.项目功能 ...

  9. vue + vue-router + vue-resource 基于vue-cli脚手架 ---笔记

    ps: 基于Vue2.0 npm的vue-cli脚手架 在vue-router中路由路径的简写代码: 点击打开项目 > build > webpack.base.conf.js 找到web ...

  10. 搭建vue-cli脚手架

    一波三折,本应该从易到难才不会容易放弃,折腾了几天才回到正轨.终于结束了以普通引入javascript文件的方式学习的过程,现在搭建vue-cli脚手架,接触webpack,npm,nodejs,ba ...

最新文章

  1. [LeetCode]: 242: Valid Anagram
  2. ubuntu将mysql、nginx添加到环境变量中
  3. js dom 操作实例图解
  4. Terraform 多云管理工具
  5. Android插件化原理解析——Hook机制之Binder Hook
  6. dvd清洗碟效果好吗_用什么清洗抽油烟机效果比较好?有哪些注意事项?
  7. GridView 激发了未处理的事件“RowEditing”
  8. 串口服务器介绍及产品特点详解
  9. Ubuntu中安装FastDFS
  10. ----uni-app之解决HBuilderX安装less成功运行时提示未安装----
  11. 零基础学python鱼c-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...
  12. 循序渐进学Python 1 安装与入门
  13. storm32和pixhawk_storm32三轴手持增稳云台项目实现代码 storm32 bgc手持云台增稳的代码 - 下载 - 搜珍网...
  14. VsCode建立工程
  15. Google SketchUp Cookbook: (Chapter 4) Advanced Intersect and Follow Me Techniques
  16. 【2019年04月30日】股息率分红最高排名
  17. mark:x264编译选项
  18. 小红书关键词搜索不到帖子?如何让小红书笔记被收录?
  19. JS--JavaScript数组Array(join、split、reverse、concat、slice)详解
  20. Unity Shader 常规光照模型代码整理

热门文章

  1. 阅文集团算法工程师校招面经
  2. Matlab之有趣实验之画多边形图
  3. 剪辑pr:2、视频特效、关键帧动画预设
  4. 2019 目标检测指南
  5. stm32学习笔记(如何新建一个工程)
  6. jQuery轮播图插件
  7. 薪火IP模拟器多开换IP自动阅读快手极速版aotujs脚本
  8. spring boot使用redis缓存数据与自动清除
  9. C语言游戏开发SDL篇
  10. 售前咨询顾问如何做好拜访前的准备工作?