渐进式的JavaScript框架

  1. vue react angualr
  2. 作者:尤雨溪 facebook 谷歌公司
  3. 文档:中文 建议:如果你想学好vue
  4. 1.看视频 初步的了解vue
  5. 2.vue的课 时刻看官网文档 https://cn.vuejs.org/

前端框架和库的区别

功能上的不同

  1. jquery库:包含DOM(操作DOM)+请求,就是一块功能。
  2. art-template库:模板引擎渲染,高性能的渲染DOM (我们后端的一种模板 python的模板类似)
  3. 框架:大而全的概念,简易的DOM体验+请求处理+模板引擎
  4. KFC的世界里,库就是一个小套餐,框架就是全家桶。

代码上的不同

  1. 一般使用库的代码,是调用某个函数或者直接使用抛出来的对象,我们自己处理库中的代码。
  2. 一般使用框架,其框架本身提供的好的成套的工具帮我们运行我们编写好的代码。

框架的使用

  • 初始化自身的一些行为
  • 执行你所编写的代码
  • 释放一些资源

nodejs

  1. 去官网https://nodejs.org/en/download/ 下载 安装(傻瓜式安装)

  2. 打开终端 cmd : 执行node -v 如果出现版本号,证明安装node成功 ,跟安装python雷同

  3. 下载完node之后,会自带包管理器 npm,好比 是python中 pip3包管理器。pip3 install xxx

  4. 使用npm

    1. 1.要初始化npm的项目 :

      npm init --yes 自动生成一个package.json文件

      1. ```javascript
      2. {
      3. "name": "vue_lesson",
      4. "version": "1.0.0",
      5. "description": "这是我的vue的第一个项目",
      6. "main": "index.js",
      7. "scripts": {
      8. "test": "echo "Error: no test specified" && exit 1"
      9. },
      10. "author": "mjj",
      11. "license": "ISC",
      12. "dependencies": {
      13. "vue": "^2.5.16"
      14. }
      15. }
      16. ```

      2.下载依赖包

      npm install vue --save
      npm install jquery --save

      3.卸载包 npm uninstall vue --save

      4.下载所有的依赖包 npm install

    2. 使用cnpm(淘宝镜像)
  1. .下载cnpm
  2.  
  3. npm install -g cnpm --registry=https://registry.npm.taobao.org
  4.  
  5. .使用cpm
  6.  
  7. cnpm install jquery --save

vue的起步

  • 引包:
  • 创建实例化对象
  1. new Vue({
  2. el:'#app',//目的地
  3. data:{
  4. msg:"hello Vue"
  5. }
  6. });
  7. /*
  8. {{}}: 模板语法插值
  9. {{变量}}
  10. {{1+1}}
  11. {{'hello'}}
  12. {{函数的调用}}
  13. {{1==1?'真的':'假的'}}
  14. */

指令系统

  1. //常用
  2. v-text
  3. v-html
  4. v-if
  5. v-show
  6. v-for
  7. v-bind
  8. v-on
  9. 表单控件的value (看后面)

v-if和v-show


  1. v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
  2. v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
  3. 相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
  4. 一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
  5. //保存数组或者对象 格式
  6. v-for = '(item,index) in menuList'
  7. v-for = '(value,key) in object'
  8. //item指的是数组中每项元素
  1. <a href="" class='box'></a>
  2. <img src="" alt="">
  3. 使用v-bind:class = '{}||[]||变量名||常量' 对我们的页面中标签的属性进行绑定 所有的属性都可以进行绑定,注意只要使用了v-bind 后面的字符串一定是数据属性中的值

v-on、v-bind、v-for


  1. // 1.事件源 2.事件 3.事件驱动程序
  2. vue中使用v-on:click对当前DOM绑定click事件 注意:所有的原生js的事件使用v-on都可以绑定
  3. v-ifv-on 来对页面中DOM进行操作
  4. v-bind:classv-on对页面中DOM的样式切换
  5. v-bindv-on
  6. vue中它可以简写: v-bind:
  7. :class 等价于 v-bind:class
  8. :src 等价于v-bind:src
  9. :id 等价于v-bind:id
  10. v-on:click 等价于 @click = '方法名'
  1. v-text v-html {{}}: 对页面的dom进行赋值运算 相当与jsinnerText innerHTML
  2. v-if = 'true':
  3. //创建
  4. var oP = document.createElement('p') ;
  5. oDiv.appendChild(op)
  6. v-if = 'false'
  7. //销毁
  8. oDiv.removeChild(op)
  9. v-show = 'true'
  10. oDiv.style.display = 'block'
  11. v-show:'true'
  12. oDid.style.display = 'none'
  13. v-bind:class
  14. oDiv.className += ' active'
  15. /*
  16. 渐进式的JavaScript框架
  17. 做加法和做减法:大部分的人觉得做加法简单,做减法难
  18. vue这个框架 将 做减法的事情都给咱们做了(难的部分)
  19. 学习简单的部分就能实现复杂的dom操作
  20. */

组件的使用

局部组件的使用

​ 打油诗: 1.声子 2.挂子 3.用


  1. var App = {
  2. tempalte:`
  3. <div class='app'></div>`
  4. };
  5. //2.挂子
  6. new Vue({
  7. el:"#app",
  8. //用子
  9. template:<App />
  10. components:{
  11. App
  12. }
  13. })

(1)父组件向子组件传递数据:通过Prop

  1. 1.在子组件自定义特性。props:['自定义的属性1','自定义属性2']
  2. 当一个值传递给一个 prop 特性的时候,它就变成了那个组件实例的一个属性,那么我们就可以像访问data中的值一样
  3. 2.要在父组件中导入的子组件内部 绑定自定义的属性 <Vheader :title = '父组件中data声明的数据属性'/>

​ 注意:一个组件默认可以拥有任意数量的 prop,任何值都可以传递给任何 prop。

(2)如何从子组件传递数据到父组件

  1. 1.给子组件中的某个按钮绑定原声事件,。我们可以调用内建的 this.$emit('自定义的事件名','传递的数据'),来向父级组件触发一个自定义的事件.
  2. 2.在父组件中的子组件标签中 要绑定自定义的事件,

全局组件的使用

  1. Vue.component('全局组件的名字',{
  2. new Vue() 实例化对象中的options是一样,但是要注意:
  3. 不管是公共组件还是局部组件 data必须是个函数 函数一定要返回 {}
  4. })
  1. <slot> 元素作为承载分发内容的出口

过滤器的使用

局部过滤器

  1. //1.注册局部过滤器 在组件对象中定义
  2. filters:{
  3. '过滤器的名字':function(value){
  4. }
  5. }
  6. //2.使用过滤器 使用管道符 |
  7. {{price | '过滤器的名字'}}

全局过滤器

  1. // 注册全局的过滤器
  2. //第一个参数是过滤器的名字,第二个参数是执行的操作
  3. Vue.filter('reverse',function(value) {
  4. return value.split('').reverse().join('');
  5. });
  6. //使用跟 局部过滤器一样

计算属性computed和侦听器(watch)

侦听的是单个属性

  1. watch:{
  2. 数据属性的名字:function(value){
  3. },
  4. 数据属性的名字2function(value){
  5. }
  6. }

侦听多个属性:计算属性 computed

{{str.split('').reverse().join('')}}

  1. 计算属性 :默认只有getter方法
  2. data(){
  3. return {
  4. name:'alex',
  5. age:18
  6. }
  7. }
  8. compuetd:{
  9. key:value
  10. 计算属性的方法名:funtion(){
  11. return ${this.name}他的年龄是${this.age}岁
  12. }
  13. }
  14. var musicData = [
  15. {
  16. id:1,
  17. name:'于荣光 - 少林英雄',
  18. author:'于荣光',
  19. songSrc:'./static/于荣光 - 少林英雄.mp3'
  20. },
  21. {
  22. id:2,
  23. name:'Joel Adams - Please Dont Go',
  24. author:'Joel Adams',
  25. songSrc:'./static/Joel Adams - Please Dont Go.mp3'
  26. },
  27. {
  28. id:3,
  29. name:'MKJ - Time',
  30. author:'MKJ',
  31. songSrc:'./static/MKJ - Time.mp3'
  32. },
  33. {
  34. id:4,name:'Russ - Psycho (Pt. 2)',
  35. author:'Russ',
  36. songSrc:'./static/Russ - Psycho (Pt. 2).mp3'
  37. }
  38. ];

生命周期(钩子函数)

  1. beforeCreate(){
  2. // 组件创建之前
  3. console.log(this.msg);
  4. },
  5. created(){
  6. // 组件创建之后
  7. // 使用该组件,就会触发以上的钩子函数,created中可以操作数据,发送ajax,并且可以实现vue==》页面的影响 应用:发送ajax请求
  8. console.log(this.msg);
  9. // this.msg = '嘿嘿黑';
  10. },
  11. beforeMount(){
  12. // 装载数据到DOM之前会调用
  13. console.log(document.getElementById('app'));
  14. },
  15. mounted(){
  16. // 这个地方可以操作DOM
  17. // 装载数据到DOM之后会调用 可以获取到真实存在的DOM元素,vue操作以后的DOM
  18. console.log(document.getElementById('app'));
  19. },
  20. beforeUpdate(){
  21. // 在更新之前,调用此钩子,应用:获取原始的DOM
  22. console.log(document.getElementById('app').innerHTML);
  23. },
  24. updated(){
  25. // 在更新之前,调用此钩子,应用:获取最新的DOM
  26. console.log(document.getElementById('app').innerHTML);
  27. },
  28. beforeDestroy(){
  29. console.log('beforeDestroy');
  30. },
  31. destroyed(){
  32. console.log('destroyed');
  33. },
  34. activated(){
  35. console.log('组件被激活了');
  36. },
  37. deactivated(){
  38. console.log('组件被停用了');
  39. }

$属性

  • $refs获取组件内的元素
  • $parent:获取当前组件的父组件
  • $children:获取当前组件的子组件
  • $root:获取New Vue的实例化对象
  • $el:获取组件对象的DOM元素

获取更新之后的dom添加事件的特殊情况

  1. $nextTick 是在下次Dom更新循环结束之后执行的延迟回调,在修改数据之后使用$nextTick ,则可以在回调中获取更新之后的DOM

vue初识的更多相关文章

  1. ES-6常用语法和Vue初识

    一.ES6常用语法 1.变量的定义 1. 介绍 ES6以前 var关键字用来声明变量,无论声明在何处都存在变量提升这个事情,会提前创建变量. 作用域也只有全局作用域以及函数作用域,所以变量会提升在函数 ...

  2. vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus

    vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...

  3. day 81 Vue学习一之vue初识

      Vue学习一之vue初识   本节目录 一 Vue初识 二 ES6的基本语法 三 Vue的基本用法 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 vue初识 vue称为渐进式js ...

  4. day 80 Vue学习一之vue初识

    Vue学习一之vue初识   本节目录 一 Vue初识 二 ES6的基本语法 三 Vue的基本用法 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 vue初识 vue称为渐进式js框架 ...

  5. vue 初识组件

    Vue.component("greeting",{ template: `<p>{{ name }}大家好 <button v-on:click="c ...

  6. Js 框架之Vue .JS学习记录 ① 与Vue 初识

    目录 与 Vue.js 认识 VUE.JS是个啥?有啥好处? Vue 的目标 战前准备  VUE.JS环境 VUE.JS 尝试一下,你就明白 第一步 实例化VUE 对象 第二步VueAPP 调用数据 ...

  7. Python-WEB -VUE初识

    走进Vue_渐进式 JavaScript 框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目 what -- 什么是Vue 可以独立完成前后 ...

  8. Vue 初识Vue

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  9. Vue学习【第一篇】:Vue初识与指令

    什么是Vue 什么是Vue Vue.js是一个渐进式JavaScript框架它是构建用户界面的JavaScript框架(让它自动生成js,css,html等) 渐进式:vue从小到控制页面中的一个变量 ...

随机推荐

  1. echarts画图时tooltip.formatter参数params不会更新(转载)

    echarts画图时tooltip.formatter参数params不会更新 解决方案: setOption时默认是合并, 如果要全部重新加载 要写成 setOption({},true),这样就可 ...

  2. git 创建本地分支与远程分支

    早上抽空整理了下git常用操作,偶尔看看加深下印象吧: 如果github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pu ...

  3. Java Date类的使用总结

    Date类表示特定的瞬间,精确到毫秒. 有2种方法可以创建Date对象(这里不考虑已过时的构造函数) 1.public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫 ...

  4. sourcetree Authentication failed

    sourcetree 的 git 密码存在 mac 的 钥匙串里面, 需要在钥匙串里删除掉对应信息,再次打开就会让你重新输入密码, 问题就解决了。 参看: https://stackoverflow. ...

  5. CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全

    媒体查询介绍 我今天就总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. 先看一个简单的例子: <link rel="stylesheet" media=&q ...

  6. js中判断空及获取当前服务的根路径

    function isValue(o) { return (this.isObject(o) || this.isString(o) || this.isNumber(o) || this.isBoo ...

  7. Spring学习之旅(一)极速创建Spring框架java工程项目

    编译工具:eclipse 1)创建java工程:Spring_helloworld 2)导入所需jar包: 3)创建一个实体类: public class HelloBeans { private S ...

  8. Testlink1.9.17使用方法(第十三章 使用中遇到的问题)

    第十三章 使用中遇到的问题 一. 登录Testlink后,新建一个项目后,会出现如下提示: 解决办法:打开Testlink安装文件夹下的config.inc.php文件, 原来:$tlCfg-> ...

  9. pyinstaller使用错误 SyntaxError: Non-UTF-8 code starting with '\xb4' in file C:......

    注:我的博客原本在CSDN,现转到博客园,图片采用以前的图片,并没有盗图.​​ 在将.py文件打包时,出现了下列错误 >>C:\Users\小呆\PycharmProjects\pycha ...

  10. 不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱

    如果你是一个有经验的 Android 程序员,那么你肯定手写过许多 onSaveInstanceState 以及 onRestoreInstanceState 方法用来保持 Activity 的状态, ...