初识Vue框架

库和框架

库:功能单一
比如jquery:只能操作节点,lodash,只能操作数组、字符串、函数等
以后项目中可以引入多个库
​
框架:针对我们的程序体提供一套完整的解决方案,功能多
以后项目中一般只能引入一套框架,比如要么是vue,要么是react
​
项目中引入框架后也能够引入其他库,比如echarts(数据可视化)

前端流行的三大框架

1 Angular  2009年  google
2 React    2013年  facebook     适合做大型项目(对优化有要求)
3 Vue      2014年  尤雨溪(负责人)  适合做中小项目(上手容易)---》多用于后台管理系统

官网

百度  vue.js

vue特点

1 渐进式    按需引入
2 版本分为: 2.x  和 3.x
3 核心思想:
    1 数据驱动 (数据来驱动页面的渲染)   ---》vue自带了一套响应式系统(数据一旦更改,页面会自动渲染)
    2 组件化(模块化)---vue是单页面应用(该项目只有一个index.html,该页面就是由一个一个的组件组成)----复用性
​

引入vue框架的方案

1 官网下载vue.js,自己在页面引入 (用于快速测试)
2 通过vue-cli 脚手架来安装 (推荐)
    脚手架分为:
        1 4.5以及4.5以上 (2.x、3.x)
        2 4.5以下  (只能玩2.x)
​

vscode插件推荐

vetur  让vscode识别vue语法(有了颜色、有提示了)
AutoFileName  路径提示
Vue 3 Snippets  v3的提示

全局下载vue脚手架

npm i  @vue/cli -g
如果报错:
npm i  ‘@vue/cli’ -g
​
查看版本:vue -V
​
vue 项目 底层是集成了webpack

创建vue2.x项目

1 
vue create 项目名   ---会在当前路径下创建
​
2 
​
​
  Default ([Vue 3] babel, eslint)    --快速创建v3  送了babel  eslint
  Default ([Vue 2] babel, eslint)    --快速创建v2  送了babel  eslint
> Manually select features   (自定义)
​
babel:高级语法转低级语法(ES6转->ES5),为了让webpack能够识别
eslint: 约束插件      
​
​
3 
<enter> to proceed)
 (*) Babel  选择这一个即可
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 ( ) CSS Pre-processors
 ( ) Linter / Formatter
 ( ) Unit Testing
>( ) E2E Testing
4
? Choose a version of Vue.js that you want to start the project with 
  3.x
> 2.x
5 
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
> In dedicated config files  单独用一个文件来配置以上插件
  In package.json  把配置代码合并到  package.json
6 
 Save this as a preset for future projects? (y/N) n 是否保存当前所有选择,以便下次能快速创建项目
 

开服:

npm run serve

打包:

npm run build

项目结构:

public
	index.html: 默认页面(唯一的页面)
src
	assets:装图片的
	components(组件):装组件(*.vue文件)
	App.vue (入口组件)
	main.js(入口js) 首次访问时才会执行
.browserslistrc  :不同浏览器的兼容处理.比如初始化css等..(我们不用管)
babel.config.js  关于babel的配置 (我们不用管)
jsconfig.json  配置文件 (我们不用管)、
package.json 插件依赖
vue.config.js (类似于webpack.config.js,以后可以配置例如前端跨域的等)


解释 main.js

//引入第三方插件
import Vue from 'vue'
//引入入口组件
import App from './App.vue'

//关闭生产模式的信息打印
 Vue.config.productionTip = false

//实例化vue对象
new Vue({
  //render:渲染
  render: h => h(App),
  //mount:挂载 ,#app就是index.html中  <div id="app"></div>
}).$mount('#app')


组件

vue中的思想:整个项目都是由组件构成的

组件:*.vue文件,该文件中拥有 html、css、js

语法:

<template>
    <!-- html标签 -->
    <div>
        内容
    </div>
</template>


<script>
// js业务逻辑
export default {

}
</script>

<style>
/* 样式 */
</style>

注意:template下必须并且只能有一个根节点

组件的引入

步骤:

1 引入 import ... from '*.vue'   .vue可省 
2 注册 components注册
3 使用 当成标签来使用

demo:

<template>
    <div id="app2">
        app的内容
        <hr>
        <Father></Father> 
        <Mother/>
    </div>
</template>


<script>
//引入
import Father from './components/Father'
import Mother from './components/Mother'
export default {
  //注册
  components:{
      // 自定义标签  :  引入的组件对象
      Father,Mother
  }
}
</script>

<style>


</style>

vue中响应式数据 (data)

定义:

export default {
    data(){
        return {
            //设置想要渲染的数据
            name:"张三",
            user:{
                username:"aaa",
                password:"111"
            },
            arr:["1","a","b"]
        }
    }
}

注意:data中数据的取名不要以$或者_开头 (vue本身提供了大量的内置属性,这些属性都是以$或者_开头)

使用:

在template中 通过  {{data中定义的k}} 来进行渲染

注意:
1 {{}}只能用于标签中,不能用于属性
2 {{}}默认只能识别data中定义的k(变量),如果先要直接渲染常量,则添加''
  number和boolean例外
3 {{}} 支持一切运算符、api、模板字符串


          {{age+1}}
          {{age+'1'}}
          {{age>=18?'成年':"未成年"}}
          <hr>
          {{arr.filter(item=>item>=9)}} 
          <hr>
          {{'我的名字叫'+name+',今年'+age+'岁'}}
          <hr>
          {{`我的名字叫${name},今年${age}岁`}}

指令

vue提供了很多指令,这些指令都有各自的功能
语法: v-xx
位置:写在标签中,和属性是同级别;
<标签  属性=""   v-xx=""

v-on

vue提供了v-on来注册事件

语法:

<标签  v-on:事件="业务"
1 业务以后都是用函数来代表的,现在暂时用一下,这里的业务只能用于为data中的属性赋值
2 业务中也是可以直接获取data中定义的数据

demo: 点击按钮,name=张三改为李四

<template>
    <div id="father">

     {{name}}
     <button v-on:click="name='李四'">点击</button>
    
    </div>
</template>

<script>

export default {
    data(){
        return {
            name:"张三",
        }
    }
}
</script>

demo:点击按钮切换张三和李四

<template>
    <div id="father">
     {{name}}
     <button v-on:click="name=name=='张三'?'李四':'张三'">切换</button>
    </div>
</template>

<script>

export default {
    data(){
        return {
            name:"张三",
        }
    }
}
</script>

v-text和v-html

vue提供了以上两个指令用来设置标签体的内容

<标签>标签体</标签>
v-text 类似于  innerText   (不能识别标签)
v-html 类似于  innerHTML   (可以识别标签)

demo

<template>
    <div id="father">
     <span>我的名字叫{{name}}</span>
     <hr>
     <span v-text="'我的名字是'+name">哈哈哈</span>
     <hr>
     <span v-html="`我的名字是${name}`">哈哈哈</span>
    </div>
</template>

<script>

export default {
    data(){
        return {
            name:"张三",
        }
    }
}
</script>
{{}}、v-text、v-html区别:
v-html:识别标签,其余两个不行
{{}}:很灵活

v-show

用于元素的隐藏和显示

<标签 v-show="boolean类型"
如果值是true,则显示,反之隐藏

demo: 点击按钮,切换元素的隐藏和显示

<span v-show="isb">蜗牛</span>  
<button v-on:click="isb=!isb">切换</button>

export default {
    data(){
        return {
            isb:true,
        }
    }
}

v-if

用于元素的隐藏和显示
<标签  v-if="boolean"
如果值是true,则显示,反之隐藏

v-show和v-if的区别

相同点:都是用来隐藏和显示元素的
不同点:
  1 v-show通过css的display来控制,v-if通过是否渲染节点来控制(删除和追加节点)
  2 场景:经常频繁的切换一个元素的显示和隐藏,用v-show ,为了性能优化
  3 为了权限控制的安全性,应该采用v-if,而不是v-show(防止通过F12更改display)
  4 v-if功能更强(搭配v-else...)

v-else

v-else代表否则
1 必须搭配v-if
2 必须放在v-if的后面(紧挨着,中间不能有其他标签,v-else-if例外)

        <span v-if="isb">蜗牛1</span>  
        <span v-else>蜗牛2</span> 

v-else-if

1 必须搭配v-if
2 必须放在v-if的后面(紧挨着,中间不能有其他标签)
        <span v-if="false">蜗牛1</span> 
        <span v-else-if="false">蜗牛2</span> 
        <span v-else>蜗牛3</span> 

v-bind

该指令能够把标签原本的属性写活

< 标签  v-bind:标签本来的属性  

<font v-bind:color="color" v-bind:size="size" v-bind:face="face">蜗牛</font>
    data(){
        return {
            color:"red",
            size:10,
            face:"宋体"
        }
    }

作业1:

App.vue组件中引入并渲染MyDemo.vue和MyDemo2.vue
MyDemo.vue组件中引入MyDemo_son.vue
组件内容自拟

作业2:

看群

单词:

Property  属性
method 方法
instance 实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值