vue3入门笔记 待更新

vue构建用户界面的前端框架
    构建用户界面:指令  数据驱动视图  事件绑定
    前端框架:构建用户界面一整套的解决方案    vue全家桶(vue+vue-router+vuex+组件库)辅助开发工具(vue-cli + vite+ vue-devtools)
vue的特性
    数据驱动视图(监听数据变化,自动重新渲染页面)单向数据绑定     双向数据绑定 
    MVVM是实现数据驱动视图和双向数据绑定的核心原理        view    viewmodel   model
vue2和vue3的区别   
    vue3支持vue2的大部分API,新增了新特性(组合式API  更好的typescript的支持) 废弃了过滤器,不支持$on  $off  $onde等实例方法
基本使用
    1.导入vue.js的script脚本
    2.在页面声明一个将要被vue所控制的DOM区域
    3.创建vm实例对象(vue的实例对象)
    <body>
    //将要被vue所控制的DOM区域
    <div id=app>{{name}}</div>
    //导入脚本
    <script src='/vue.js'></script>
    <script >
        //创建vm实例对象(vue的实例对象)  viewmodel
        const vm=new Vue({
            //使用el属性指定vue要控制的区域   view
            el:'#app'
            //数据源    model
            data:{         
                  name:'zs'
            }
        })
    </script>
    </body>
指令 
    内容渲染指令     v-text   <p v-text="b">a</p>   b数据会覆盖默认内容 a 
                {{b}}   插值表达式    不会覆盖默认内容
                 v-html    可以渲染标签
    属性绑定指令    v-bind    <p v-bind:a="b">w1</p>  动态绑定属性   简写   :    <p :a="b">w1</p>
    表达式运算        {{ ok? 'true' : 'false'}}   {{number + 1}} {{ message.spilt('') }}  <p :id=" ' list-' +         id">w1</p>
    事件绑定指令    v-on    v-on:click  v-on:onput    <p v-on:click="fun">a</p>   简写    <p  @click="fun">a</p> 
    事件对象event     事件不传形参的时候,fun(e)e是默认事件,可以使用e.target 获取当前事件元素
                  事件传形参    fun(step,$event)   传事件对象必须是$event
    事件修饰符      .prevent  阻止默认行为(阻止a链接的跳转  阻止表单提交)
              .stop 阻止冒泡
             .capture   以捕获模式触发当前的事件处理函数
             .once   绑定的事件只触发一次
             .self    只有在event.target是当前元素自身触发事件的处理函数  点谁触发谁不会触发冒泡
    按键(键盘)修饰符       .enter  监听按下enter键
                  .esc  监听按下esc
    v-model双向数据绑定    修饰符   .number  自动把用户输入的数据转换成数字型
                .trim    去除两端空格
                .lazy    在chang时而非在input时更新
    条件渲染指令(控制页面元素的显示和隐藏)      v-if    动态创建或移除DOM元素               切换开销    运行条件少时使用
                                  v-show   动态添加或移除 style="diaplay:none”初始渲染开销    频繁切换时使用
                v-if       v-else-if   v-else
    列表渲染指令    v-for="(item,index) in list"    <li  v-for="(item,index) in list">{{item}}{{index}}</li>
        key属性        列表渲染时,默认情况vue会尽可能复用已存在的dom,从而提升渲染性能,但是会导致有状态的列表无法被正确更新,为了给vue一个提示,
                以便更新每一个节点,从而保证有状态的列表被正确更新的前提下,提升渲染性能,需要为每项提供一个唯一的key属性
         注意:key只能是number或者string类型     key值唯一性(不建议使用index作为key值)     使用v-for一定使用key   
过滤器(vue3前版本) (Filters)常用文本格式化    过滤器可以串联的调用多个管道符
    {{mesage | cap}}      v-bind:id="mesage | cap"      管道符
    filters:{     //在filters节点下定于 "过滤器”
        cap(str){    // str   当前过滤器管道符前面的值   处理函数的的第一个参数永远都是当前过滤器管道符前面的值 
             return   str+1    
        }
    }
    全局过滤器     Vue.filter('cap',(str)=>{return str +1 })   两个参数 参数1:全局过滤器名称  参数2:全局过滤器的处理函数
    过滤器传参    {{mesage | cap(5)}}      Vue.filter('cap',(str,len)=>{return str +len })      处理函数的的第一个参数永远都是当前过滤器管道符前面的值 ,第1个后面为传的参数
      find()     array.find(function(currentValue, index, arr),thisValue)     当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
      filter()     array.filter(function(currentValue,index,arr), thisValue)  创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

单页面应用程序
SPA单页面应用程序优点:
    良好的交互体验
        单页面应用的内容的改变不需要重新加载整个页面
        获取数据也是通过Ajax异步获取
        没有页面之间的跳转,不会出现 白屏现象
    良好的前后端工作分离模式
        后端专注提供API接口,更易实现API接口的复用
        前端专注页面的渲染,更利于前端工程化发展
    减轻服务器压力
        服务器只提供数据,不负责页面的合成和逻辑的处理,吞吐能力提高几倍
SPA单页面应用程序缺点:
    首屏加载慢
           解决:路由懒加载
        代码压缩
        CDN加速
        网络传输压缩
    不利于SEO
           解决:SSR服务器渲染
创建SPA项目
vite:仅支持vue3  不基于webpack   运行速度快 功能小而巧 
vue-cli :支持vue3 vue2 基于webpack 运行速度慢 功能大而全 

vite创建项目:
    npm init vite-app 项目名称
    cd 项目名称
    npm install
    npm run dev
main文件:
    1、导入createApp函数     import { createApp } from 'vue'
    2、导入待渲染App.vue组件   import App from './App.vue'
    3、调用createApp函数,创建SPA应用实例    const app=cteateApp(App)
    4、调用mount()函数,把App组件的模板结构渲染到 index.html的el区域中  app.mount('#app')

template:
    vue2支持一个根节点    vue3支持多个根节点
script:
    export default{}
style:默认lang='css'
    lass的安装 npm i less -D

组件:
        组件的注册使用:  
    全局注册:在mian文件的app实例中 用 app.component('组件名称',组件) app.component('my-swiper',Swiper)
        <my-swiper></my-swiper>
    局部注册:在script的节点下 components:{my-swiper':Swiper}   键值对
    
组件之间的样式冲突:
    原因:默认情况下,写在 .vue组件中的样式会全局生效,因此很容易出现组件之间的样式冲突问题,原因是单页面应用程序中,
             所有的DOM结构都是基于唯一一个index.html页面进行呈现的,每个组件的样式都会影响index.html页面中的DOM元素
    解决:1:为style节点添加 scoped属性   <style scoped></style>
              2:在每个组件的每个标签中添加 data-001等属性 <p data-v-001></p> 在style中使用 p[data-v-001] {} 写样式

/deep/样式穿透:
    如果给当前组件的style添加scoped属性,则当前组件的样式对其子组件是不生效的。如果想让去某些样式对子组件生效,
        可以使用/deep/深度选择器
          .title { color:blue}    不加 /deep/时,生成的选择器格式为 .title[data-v-001]
        /deep/ .title { color:blue}    加 /deep/时,生成的选择器格式为 [data-v-001] .title
         /deep/是vue2实现的样式穿透的方案,在vue3中推荐使用 :deep() 代替/deep/
        :deep( .title)  { color:blue}     
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值