petite vue的使用示例详解

目录
  • 题引:
  • 特征及使用:
    • 1. CDN引入:
    • 2.module引入
    • 3. 组件化
    • 4. 模板组件
  • 结尾:

题引:

这几天在公司没事做,于是上网看看有关vue的文章,忽然看到尤大大的一个文章:只有5kb大小的mini vue,好家伙,又整活了,这不得冲一冲嘛。

特征及使用:

  • petite-vue体积更小,约5bk
  • 渐进的增强更加的明显,特别是运用在服务端渲染的页面上更是便捷。系统看了一下,语法跟vue的语法绝大部分是一样了,除了增加了一些新的语法糖;
  • 基于reactive进行响应式

petite-vue的引用方式有几种,但在举例之前,先讲一下特有的语法:
v-scope:用于标记被petite-vue控制的区域,里面可以定义变量,且可以在控制区域内进行使用。

1. CDN引入:

<!-- 正常的CDN引入 -->
<div
  v-scope="{ upVotes: 0, downVotes: 0 }"
  @vue:mounted="console.log('mounted on: ', $el)"
  @vue:unmounted="console.log('unmounted: ', $el)"
>
  <p>{{ upVotes }} <button @click="upVotes++">👍</button></p>
  <p>{{ downVotes }} <button @click="downVotes++">👎</button></p>
</div>
<div v-scope="{ test:1,test1:2}">
  <p v-effect="$el.textContent=test" v-show="test == 2"></p>
  <p v-effect="$el.textContent=test1" @click="console.log(1123)"></p>
</div>
<div v-scope="{ array:[1,2,3,4,5,6],obj:1 }">
  <div v-for="item in array">{{item}}</div>
</div>
<script src="https://unpkg.com/petite-vue" defer init></script>

效果图:

总结:在CDN引入的时候,需要在script标签加init属性,因为该属性会进行初始化操作,比如引入和调用createApp函数及挂载v-scope区域。

2.module引入

<!-- module引入方式 -->
<div v-scope>
    {{count}}<div>{{count}}</div>{{count}}
</div>
<script type="module">
    import { createApp } from "https://unpkg.com/petite-vue?module"
    createApp({
        count: 10,
        get plusOne() {
            return this.count + 1;
        },
        increment() {
            this.count++;
        }
    }).mount()
</script>

效果图:

总结:使用module引入的时候,我们需要从线上地址引入createApp并进行挂载,内部会查找有v-scope属性的标签并进行正则匹配,这跟vue3的创建方式很像。

3. 组件化

既然petite-vue继承了vue的绝大部分特性,那么当然也可以使用组件化的方式来使用

<div v-scope="About({count:2})">
    <p>{{count}}</p>
    <button @click="inc">increment</button>
</div>
<div v-scope="Home({count:1})">
    <p>{{count}}</p>
    <button @click="inc">increment</button>
</div>
<script type="module">
    import { createApp } from "https://unpkg.com/petite-vue?module";
    function Home(props) {
        return {
            count: props.count,
            inc() {
                this.count++;
            }
        }
    }
    function About(props) {
        return {
            count: props.count,
            inc() {
                this.count++;
            }
        }
    }
    createApp({
        Home,
        About
    }).mount();
</script>

效果图:

总结:其实这就跟CDN引入的方式很像,我们把v-scope绑定的变量注册在createApp里,并使用函数的方式,那么在v-scope绑定的地方都可以使用这些函数。当我们调用的时候返回一个对象,就跟我们直接v-scope="{xxx:xxx}"一样,扩展性还更高

4. 模板组件

我们可以发现,组件化的例子中:Home和About组件的不同之处就是参数不同,模板是一样的。那么我们可以使用vue中的template的思路,通过$template指定模板来进行优化。

<!-- 模板组件 -->
<template id="counter-template">
    <div>
        my count is {{count}}
    </div>
</template>
<div v-scope="Counter({count:13})"></div>
<div v-scope="Counter({count:14})"></div>
<script type="module">
  import { createApp } from "https://unpkg.com/petite-vue?module";
    function Counter(props){
        return{
            $template:"#counter-template",
            count:props.count,
            inc(){
                this.count++
            }
        }
    }
    createApp({
        Counter
    }).mount()
</script>

效果图:

结尾:

以上就是petite-vue的一个简单使用手册,当然其他的用法大家可以上GitHub上进行略读,但总体上跟vue的使用方式和思路是十分相像的。

以上就是petite vue的使用示例详解的详细内容,更多关于petite vue使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • Vue简单封装axios网络请求的方法

    目录 Vue简单封装axios网络请求 一.utils下的httpUtils.js: 二./api下的path.js: 三./api下的index.js: 四.组件中引入并请求: Vue简单封装axios网络请求 一.utils下的httpUtils.js: import axios from 'axios'; import querystring from 'querystring'; const errorHandler = (status, info) => { switch(status

  • Vue技巧Element Table二次封装实战示例

    目录 前言 思考 实践 filterPane.vue 明确目标 传入数据结构整理 timeSelect elinput elselect 开始封装 tablePane.vue 明确目标 传入数据结构整理 tool cols pageData operation tablePane.vue配置项Cols详解 开始封装 实战 结尾 前言 由于重构后台管理项目中有好多表格页面, 举个栗子 这表格看着还挺好看,写起来叫人直呼XX,多动脑子少掉发,少走弯路多省鞋. 写了一个后感觉太麻烦了,于是我奋笔疾书,

  • vue3封装echarts组件最佳形式详解

    目录 思路 目录结构 组件代码 v-charts.vue useCharts.ts type.d.ts options/bar.ts 项目中使用 index.vue /hooks/useStatisDeviceByUserObject.ts 思路 项目中经常用到echarts,不做封装直接拿来使用也行,但不可避免要写很多重复的配置代码,封装稍不注意又会过度封装,丢失了扩展性和可读性.始终没有找到一个好的实践,偶然看到一篇文章,给了灵感.找到了一个目前认为用起来很舒服的封装. 结合项目需求,针对不

  • Vue Router4路由导航守卫实例全面解析

    目录 前言 一.什么是导航守卫 二.全局前置守卫 可选的第三个参数 next 三.全局解析守卫 四.全局后置钩子 五.路由独享的守卫 六.组件内的守卫 可用的配置 API 使用组合 API 七.完整的导航解析流程 前言 在写Vue项目的时候,少不了使用路由vue-router,而路由守卫是vue-router中一个非常重要的概念,也是非常重要的技巧.它能够很好的帮助开发者“监视”每一个跳转的路由. 一.什么是导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫

  • Vue ELement Table技巧表格业务需求实战示例

    目录 前言 常见业务 需求:合并行 思路分析 需求合并列 思路分析 前言 在我们日常开发中,表格业务基本是必不可少的,对于老手来说确实简单,家常便饭罢了,但是对于新手小白如何最快上手搞定需求呢?本文从思路开始着手,帮你快速搞定表格. 常见业务 需求:合并行 1. 合并条码一样的两行 2. 触摸高亮关闭,表格颜色重一点 思路分析 调取element Table的回调 通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row.当前列column.当

  • 手写可拖动穿梭框组件CustormTransfer vue实现示例

    目录 本文内容 最终效果图 组件html布局 穿梭框左侧内容 穿梭框右侧内容 穿梭框中间向左.向右按钮 把排序好的穿梭数据传给父组件 整体代码 小结 本文内容 需求是实现类似 el-transfer的组件,右侧框内容可以拖动排序: 手写div样式 + vuedraggable组件实现. 最终效果图 组件html布局 新建一个组件文件 CustormTransfer.vue,穿梭框 html 分为左中右三部分,使用flex布局使其横向布局,此时代码如下 <template> <div cl

  • 尤大大新活petite-vue的实现

    目录 前言 简介 上活 简单使用 根作用域 指定挂载元素 生命周期 组件 全局状态管理 自定义指令 内置指令 不支持 总结 前言 打开尤大大的GitHub,发现多了个叫 petite-vue 的东西,好家伙,Vue3 和 Vite 还没学完呢,又开始整新东西了?本着学不死就往死里学的态度,咱还是来瞅瞅这到底是个啥东西吧,谁让他是咱的祖师爷呢! 简介 从名字来看可以知道 petite-vue 是一个 mini 版的vue,大小只有5.8kb,可以说是非常小了.据尤大大介绍,petite-vue 是

  • petite vue的使用示例详解

    目录 题引: 特征及使用: 1. CDN引入: 2.module引入 3. 组件化 4. 模板组件 结尾: 题引: 这几天在公司没事做,于是上网看看有关vue的文章,忽然看到尤大大的一个文章:只有5kb大小的mini vue,好家伙,又整活了,这不得冲一冲嘛. 特征及使用: petite-vue体积更小,约5bk: 对渐进的增强更加的明显,特别是运用在服务端渲染的页面上更是便捷.系统看了一下,语法跟vue的语法绝大部分是一样了,除了增加了一些新的语法糖: 基于reactive进行响应式 peti

  • vue全局数据管理示例详解

    目录 记账页面标签页面新增 将API封装到window 用computed计算属性 记账页面标签页面新增 记账页面和标签页面都可以新增标签.可是现在有一个bug.在标签页面新增标签之后,在记账页面不会自动同步,要刷新一下才能同步. 这是因为这两个页面的数据tagList都是分别从tagListModel里fetch的.所以就导致了数据不同步. 解决方案:在更高一层的地方统一去tagListModel里fetch一次,把取出来的设成一个全局的属性,然后分别在两个页面直接使用. 我们选择在main.

  • Vue生命周期示例详解

    首先看看Vue文档里关于实例生命周期的解释图 那么下面我们来进行测试一下 <section id="app-8"> {{data}} </section> var myVue=new Vue({ el:"#app-8", data:{ data:"aaaaa", info:"nono" }, beforeCreate:function(){ console.log("创建前========&q

  • 关于Vue Webpack2单元测试示例详解

    前言 最近发现一个问题,vue-cli 提供的官方模板确实好用.但一直用下来手贱毛病又犯了,像穿了别人的内衣,总感觉不舒服. 所以有机会就瞎倒腾了一遍,总算把各个流程摸了一把.这里分享一下配置带覆盖率的单元测试.分享出来供大家参考学习,话不多少了,来一起看看详细的介绍: 一.文件结构 基本的文件结构. ├─src │ ├─assets │ ├─components │ ├─app.vue │ └─main.js ├─test │ └─unit │ ├─coverage │ ├─specs │ ├

  • VUE mixin 使用示例详解

    目录 mixin 混入 组件 data 优先级高于 mixin data 优先级 2 mixin 生命周期优先级 mixin 中的生命周期函数和组件的生命周期函数都会执行,而且 mixin 中的优先级更高. 3 局部 mixin 和全局 mixin 全局 mixin 写法: 4 自定义属性的优先级 自定义属性组件的优先级比 mixin 优先级高. mixin总结: mixin 混入 <!DOCTYPE html> <head> <meta charset="UTF-

  • vue 之 .sync 修饰符示例详解

    在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行"双向绑定". 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的值时,这个变化也会同步到父组件中所绑定的值. 这很方便,但也会导致问题,因为它破坏了单向数据流.(数据自上而下流,事件自下而上走) 由于子组件改变 prop 的代码和普通的状体改动代码毫无区别,所以当你光看子组件的代码时,你完全不知道它合适悄悄地改变了父组件的状态. 这在 debug 复杂

  • Vue中的vue-resource示例详解

    vue-resource特点 vue-resource插件具有以下特点: 1. 体积小 vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多. 2. 支持主流的浏览器 和Vue.js一样,vue-resource除了不支持IE 9以下的浏览器,其他主流的浏览器都支持. 3. 支持Promise API和URI Templates Promise是ES6的特性,Promise的中文含义为"先知",Pro

  • vue cli4下环境变量和模式示例详解

    本文介绍了vue cli4下环境变量和模式示例详解,分享给大家,具体如下: 官方文档 环境变量 一个环境变量文件只包含环境变量的键值对: NODE_ENV=development VUE_APP_BASE_URL=http://127.0.0.1:8080/ 注意: NODE_ENV - 是 "development"."production" ."test"或者自定义的值.具体的值取决于应用运行的模式 BASE_URL - 会和 vue.con

  • Vue项目接入Paypal实现示例详解

    一.支付流程 在paypal的官网上给出了这个按钮内部封装的流程,整个流程只需要用户点击按钮,触发创建订单事件,然后我们再监听用户支付成功的回调,拿到订单id传给后端,让后端再进行一次校验. 二.实现方案 接入方式 优点 缺点 相关资料 在html中插入paypal的script脚本 实现方式比较简单 1.安全性问题:公司的client_id会暴露在代码中 2.引用的按钮样式比较难自定义 官方文档:https://developer.paypal.com/docs/checkout/integr

  • Vue响应式原理的示例详解

    Vue 最独特的特性之一,是非侵入式的响应系统.数据模型仅仅是普通的 JavaScript 对象.而当你修改它们时,视图会进行更新.聊到 Vue 响应式实现原理,众多开发者都知道实现的关键在于利用 Object.defineProperty , 但具体又是如何实现的呢,今天我们来一探究竟. 为了通俗易懂,我们还是从一个小的示例开始: <body> <div id="app"> {{ message }} </div> <script> v

随机推荐