vue + element + CDN 的方式使用

2023-11-01

CDN方式开发vue项目步骤:

1.cdn 链接相关css(element-ui.css, common.css),  js(jq ,vue.js, element-ui.js, common.js) 等

2.每个页面嵌入 下列相关内容

<div id="app">
    {{ 3.1415926 | number(2) }}
</div>

// 全局过滤器
Vue.filter("number", function(data){
    return ....
})

new Vue({

   el: "#app",

   data: {},

   methods: {
        fun1(){},
        fun2: function(){}
   },
    
   filters: {
       number: function(data,n){
           return data.toFixed(n);
       }
   }

});

3.代码优化 :相关js可以提出 写在js文件内,与html区别开

4.相关项目练习代码如下所示:

* event: 传参  $event

取消冒泡:e.stopPropagation();

取消默认行为:e.preventDefault();  或者  @click.prevent.stop="open()"   // 如取消a链接的跳转行为

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

        <title>vue cdn</title>

        <link rel="stylesheet" href="../libs/element-ui/lib/theme-chalk/index.css">

        <link rel="stylesheet" href="../css/style.css">

    </head>

    <body>

        <div id="app">

            <el-row>

              <el-col :span="24"><div class="grid-content">

                <a href="https://yulegh.github.io/vue-element-test/index.html">cdn 项目demo地址</a>

                <a href="javascript:;" @click="openGitHub">open GitHub</a>

              </div></el-col>

            </el-row>

            <el-row>

              <el-col :span="4"><div class="grid-content bg-purple">

                

                <el-menu :default-active="activeIndex">

                    <template v-for="firstMenu in menus">

                        <el-menu-item :index="firstMenu.id" @click="open(firstMenu.url)"  v-if="firstMenu.children==undefined">

                            <i :class="firstMenu.iconClass"></i>{{ firstMenu.name }}

                        </el-menu-item>

                        <el-submenu :index="firstMenu.id" v-else>

                           <template slot="title"><i :class="firstMenu.iconClass" ></i>{{ firstMenu.name }}</template>

                           <el-menu-item-group v-for="secondMenu in firstMenu.children" :key="secondMenu.id">

                                <!-- <template slot="title">{{ secondMenu.name }}</template> -->

                                <!-- <el-menu-item :index="secondMenu.id" @click="open(secondMenu.url)">{{ secondMenu.name }}</el-menu-item> -->

                                <el-menu-item v-for="thirdMenu in secondMenu.children" :index="thirdMenu.id"

                                             :key="thirdMenu.id" @click="open(thirdMenu.url)">{{ thirdMenu.name }}

                               </el-menu-item>

                           </el-menu-item-group>

                        </el-submenu>    

                    </template>

                </el-menu>

                
              </div></el-col>

              <el-col :span="20"><div class="grid-content bg-purple-light">

                <iframe :src="iframeUrl" frameborder="0"></iframe>

              </div></el-col>

            </el-row>

        </div>

        
        <script src="../libs/jquery.js"></script>

        <script src="../libs/element-ui/lib/vue.js"></script>

        <script src="../libs/element-ui/lib/index.js"></script>

        <script src="../js/menus.js"></script>

        <script type="text/javascript">

            new Vue({

                el: "#app",

                data: {

                    activeIndex: "aboutme",

                    aboutMeUrl: "aboutme.html",

                    iframeUrl: "aboutme.html",

                    menus: menus

                },

                methods: {

                    open(url){

                        console.log(url)

                        this.iframeUrl = url;

                    },

                    openGitHub(){

                        window.open("https://github.com/yuleGH", "_blank");

                    }

                }

            });

        </script>

    </body>

</html>

 

上面html页面js可提出:

index.js:

new Vue({

    el: "#app",

    data: {

        activeIndex: "aboutme",

        aboutMeUrl: "aboutme.html",

        iframeUrl: "aboutme.html",

        menus: menus

    },

    methods: {

        open(url){

            console.log(url)

            this.iframeUrl = url;

        },

        openGitHub(){

            window.open("https://github.com/yuleGH", "_blank");

        }

    }

});

aboutme.js

new Vue({

    el: "#app",

    data: {

        dialogVisible: false

    },

    methods: {

        handleClose(done) {

            this.$confirm('确认关闭?')

              .then(_ => {

                done();

              })

              .catch(_ => {});

        }

    }

});

menu.js

var menus = [

    {

        name: "关于我",

        id: "aboutme",

        iconClass: "el-icon-aboutme",

        url: "aboutme.html"

    },

    {

        name: "测试页",

        id: "test",

        iconClass: "el-icon-test",

        url: "test.html"

    },

    {

        name: "测试页2",

        id: "test2",

        iconClass: "el-icon-test",

        url: "https://www.baidu.com"

    },

    {

        name: "测试页3",

        id: "test3",

        iconClass: "el-icon-test",

        url: "https://www.toutiao.com/"

    },

    {

        name: "时间控件",

        id: "date",

        iconClass: "el-icon-time",

        children: [

            {

                name: "DatePicker 日期选择器",

                id: "DatePicker",

                children: [

                    {name: "年月日时分", id: "DatePicker-demo1", url: "date/demoElDatePicker.html"},

                    {name: "多日期选择", id: "DatePicker-mutidemo", url: "date/demoMultipleDate.html"}

                ]

            }

        ]

    },

    {

        name: "Form",

        id: "form",

        iconClass: "el-icon-edit-outline",

        children: [

            {

                name: "Input",

                id: "input",

                children: [

                    {name: "小写转大写", id: "input-demo1", url: "form/demoUpper.html"}

                ]

            },

            {

                name: "validateRules",

                id: "validateRules",

                children: [

                    {name: "动态修改校验规则", id: "validateRules-demo", url: "form/validateRules.html"}

                ]

            }

        ]

    }

]

5.效果图如下所示:

 

6.监听

<div id="app">
    {{ 3.1415926 | number(2) }}
</div>


var vm = null;
windoe.onload = function(){
    vm = new Vue({

       el: "#app",

       data: {
           age: "",
           name: "",
           obj: {
              value: "",
              name: ""
           }
       },

       watch: {
           age: function(newValue, oldValue){
                console.log("监听年龄修改")
           },
           name: function(newValue, oldValue){
                console.log("监听姓名修改")
           },
           obj: {
                handler: (newValue, oldValue) => {
                    console.log("obj 属性监听");
                },
                // deep: true  表示监听对象的属性变化,执行handler,获取newValue
                // deep: false 关闭监听,看不到属性变化,不执行handler. 数组无需此设置
                deep: true,   
           },
       } 
       
       methods: {
            fun1(){},
            fun2: function(){}
       }

    });
}

// 全局监听
Vue.$watch("number", function(data){
    return ....
})

7.属性获取

<div id="app">
    {{ 3.1415926 | number(2) }}
</div>


var vm = null;
windoe.onload = function(){
    vm = new Vue({

       el: "#app",

       data: {
           age: "",
           name: "",
           obj: {
              value: "",
              name: ""
           }
       },
       name: "aaaa",
       methods: {
            fun1(){},
            fun2: function(){}
       }

    });
}

8.手动挂载Vue实例

vm.$mount("app");

new Vue({}).$mount("app");

9.属性增删改

<div id="app">
    {{ 3.1415926 | number(2) }}
</div>


var vm = null;
windoe.onload = function(){
    vm = new Vue({

       el: "#app",

       data: {
           age: "",
           name: "",
           obj: {
              value: "",
              name: ""
           }
       },
       name: "aaaa",
       methods: {
            add(){
                // this.obj.age = 12;  无效
                this.$set(this.obj,"age",12);
            },
            del: function(){
                this.$delete(this.obj,"age");
            },
            update(){
                this.obj.age = 20;
            }
       }

    });
}

10.指令+指令生命周期

<div id="app">
    <input v-focus>
    <p v-hello>12</p>
    <p v-hello:wds>12</p>
    <p v-hello2>12</p>
</div>


var vm = null;
windoe.onload = function(){
    vm = new Vue({

       el: "#app",

       data: {
           age: "",
           name: "",
           obj: {
              value: "",
              name: ""
           }
       },
       name: "aaaa",
       methods: {},
       direactives: {
           focus: {
                inserted(el){ el.focus(); // 页面打开输入框即获得焦点 },
                 
           }
       }
    });
}

Vue.directive('hello',{
   bind(el, binding){},
   insert(){}
});

Vue.directive('hello2',{
   bind(el, binding){},
   inserted(){},
   update(){}
});

11.组件

全局写法:

局部组件:有独立data数据

 

组件引入:

组件套指令:

<templete id="myaddress">
    <input v-focus/>
    ....
</templete>

<body>
    <myaddress ></myaddress>
</body>

12.组件中is的使用:不建议使用

直接正常组件引入<my-row></my-row> 此种写法,展示tbody并没有写入table中,甚至有时候解析出错或者解析不出来。

13.slot内容分发,嵌套使用

14.动态模板

方法1:v-if

方法2:is flag 值与组件名必须统一

15.keep-alive: 缓存非活动组件

button按钮点击切换组件,随机数第一次更新后不再变化,只更新一次。

若是去掉keep-alive,点击一次按钮就会更新一次随机数

  

16.父子组件通信:父包含子组件

    

子 --> 父 传值发射:

父接收广播:

 

17.axios数据请求get,post, 以及发送请求数据格式处理:

   

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue + element + CDN 的方式使用 的相关文章

  • IDEA代码覆盖率测试

    代码覆盖率测试 1 使用idea自带的代码覆盖率工具 1 创建test文档 右击将 test 目录设置为测试文档 2 选中需要测试的类 按Ctrl shift T 创建测试类 并选中要测试的方法 在测试案例中 编写测试代码 点击Edit C
  • 小程序分包实现

    目录 一 使用场景 二 操作方式 1 建立分包文件夹 2 文件构建 3 文件配置 三 总结 一 使用场景 微小程序分包常用于代码量较大的小程序 发布时会受到大小限制 二 操作方式 1 建立分包文件夹 在项目根目录下创建分包文件夹 此处我创建
  • L1-8 乘法口诀数列

    本题要求你从任意给定的两个 1 位数字 a1 和 a2 开始 用乘法口诀生成一个数列 an 规则为从 a1 开始顺次进行 每次将当前数字与后面一个数字相乘 将结果贴在数列末尾 如果结果不是 1 位数 则其每一位都应成为数列的一项 输入格式
  • ad电阻原理图_光敏电阻的基础知识介绍

    39G电子技术 电路 电子元件等 全套资料免费领 干货下载 十天学会单片机完整版 100个实例 PPT 点击上方红字 即可获取 一 光敏电阻 光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器 表面还涂有防潮树脂 具有光电导效应 二 特
  • TCP 拥塞窗口原理

    学过网络相关课程的 都知道TCP中 有两个窗口 滑动窗口 在我们的上一篇文章中有讲 接收方通过通告发送方自己的可以接受缓冲区大小 这个字段越大说明网络吞吐量越高 从而控制发送方的发送速度 拥塞窗口 也就是本文要讲的 概念 一个连接的TCP双
  • element-plus elplus el-tree三种图标自定义 并且点击图标展开收起 点击文字获取数据

    前言 公司需求 需要实现如下样式的树形列表 基于vue3 element plus 当节点展开时 显示展开的文件夹图标 当节点收起时显示收起的文件夹 最后一级显示文件样式 废话没有了 代码如下
  • C规范编辑笔记(九)

    往期文章 C规范编辑笔记 一 C规范编辑笔记 二 C规范编辑笔记 三 C规范编辑笔记 四 C规范编辑笔记 五 C规范编辑笔记 六 C规范编辑笔记 七 C规范编辑笔记 八 正文 今天我们来分享一下C规范编辑笔记第九篇 话不多说 我们直接来看
  • 树莓派数据远程传输学习记录——TCP/IP协议连接OneNet云平台传输数据的方法

    目录 项目场景 问题描述 解决方案 OneNet云平台前期项目搭建准备 以网络调试助手模拟树莓派建立连接并发送数据 树莓派与OneNet云平台进行对接 最后总结 项目场景 本人在进行树莓派项目开发时进行数据远程传输 4G WiFi通信 过程
  • Spark 3.0.3 源码阅读及 idea 调试环境搭建

    目录 1 源码下载 2 源码解压并编译 3 使用 Idea 打开或导入 4 idea 调试环境设置 Master 设置 Worker 设置 1 源码下载 Downloads Apache Spark 2 源码解压并编译 编译前建议在环境变量
  • ingress 400 Bad Request The plain HTTP request was sent to HTTPS port

    问题现象 访问时返回400 Bad Request 并提示The plain HTTP request was sent to HTTPS port 问题原因 Ingress Controller到后端Pod请求使用了默认的HTTP请求 但
  • 效果:网页页面随机改变颜色+自定义样式背景颜色随机改变+20秒倒计时+时间一到马上跳转新页面

  • linux 安装flash

    2 將下载好的包拷到某个目录下并解压得到文件 得到如下libflashplayer so文件与usr文件夹 3 将libflashplayer so拷到firefox的插件目录 usr lib mozilla plugin 下 sudo c
  • 个人总结-基础算法

    文章目录 基础算法 各个算法的复杂度及稳定性等 冒泡排序 蛮力法 理解 函数代码 测试用例 选择排序 蛮力法 理解 函数代码 测试用例 归并排序 分治法 理解 函数代码 测试用例 快速排序 分治法 理解 函数代码 测试用例 插入排序 减治法
  • GitHub、GIT、Intellij集成github初探

    一 什么是Git 刚接触Git或github的童鞋可能会把它们的概念搞混淆 所以在这里稍微解释一下 Git和github是两个完全不同的概念 Git是一个版本管理系统 Version Control System 简称 VCS 早期版本管理
  • kafka-offset手动提交和自动提交

    目录 首先回顾之前的知识点 自动提交offset 手动提交 消费者poll消息的细节 完整代码 按照新方法进行消费消息 1 指定时间进行消息的消费 2 指定分区开始从头消费 指定分区的偏移量开始消费 新消费组的消费offset规则 首先回顾
  • 国内如何申请到Twitter API

    Tip Twitter Developer Platform 申请只能申请一次 被拒后该账户就不能再申请了 一点要做好详细的准备再提交申请 网上的申请教程有的很坑 几句话就提交申请通过了 几率很小 Twitter开发者平台的申请 记录三次申
  • vue+element文本域设置自适应和默认高度

  • ⛳ TCP 协议面试题

    目录 TCP 协议面试题 一 为什么关闭连接的需要四次挥 建 连接却只要三次握 呢 二 为什么连接建 的时候是三次握 可以改成两次握 吗 三 为什么主动断开 在TIME WAIT状态必须等待2MSL的时间 四 如果已经建 了连接 但是Cli
  • PyTorch 官方教程:撸一个神经网络

    本文为 PyTorch 官方教程中 如何构建神经网络 基于 PyTorch 专门构建神经网络的子模块 torch nn 构建一个简单的神经网络 完整教程运行 codelab torch nn 文档 神经网络由对数据执行操作的层 模块组成 t

随机推荐

  • PaddleDetection重磅升级!PP-YOLOE、PP-PicoDet云边端一网打尽!

    目标检测作为计算机视觉领域的顶梁柱 不仅可以独立完成车辆 商品 缺陷检测等任务 也是人脸识别 视频分析 以图搜图等复合技术的核心模块 在自动驾驶 工业视觉 安防交通等领域的商业价值有目共睹 正因如此 YOLOv5 YOLOX PP YOLO
  • 从Java到Go:构建一个任务调度器和队列管理系统

    目录 1 任务调度器和队列管理的基本概念 2 Java和Go的基本差异 2 1 语法差异
  • osg::ref_ptr<osg::Image> image = osgDB::readImageFile(fileName); image指针为空

    前言 使用 OpenSceneGraph Quick Start Guide 中文版及源码 里面的一个例子TextureMapping 在我本机上运行没有问题 但拷贝到公司电脑 发现总是运行异常 无法读取纹理图片 调试到136行 image
  • lua的pcall

    对于大多数应用而言 我们无须在Lua代码中做任何错误处理 应用程序本身会负责处理这类问题 所有Lua语言的行为都是由应用程序的一次调用而触发的 这类调用通常是要求Lua语言执行一段代码 如果执行中发生了错误 那么调用会返回一个错误代码 以便
  • AcWing 196. 质数距离 二次筛法

    题 想求231 1范围的质数距离 那么我们可以求5e4范围中的所有质数 然后这些质数可以组成2 231 1中的所有合数 打表求5e4范围中的质数 用类似埃氏筛的方法把l到r的所有质数筛出来 由于差值不会超过 106 可以O n 扫描一遍求距
  • pytorch,mmdetection的安装以及注意事项

    如题 记录一下pytorch mmdetection的安装 以及注意事项 conda 基础操作 创建 name mmlab conda create n mmlab python 3 8 删除 conda remove n mmlab al
  • 数学建模-启发式算法-蚁群算法

    文章目录 蚁群算法 算法原理 算法特点 算法步骤 流程图 代码 蚁群算法 蚁群算法 由Marco Dorigo于1992年在他的博士论文中提出 是一种灵感来源于蚂蚁在寻找食物过程中发现路径的行为 用来在图中寻找优化路径的算法 算法原理 蚂蚁
  • 单例模式中的懒汉模式和饿汉模式是什么?

    一 懒汉模式 顾名思义 他是一个懒汉 他不愿意动弹 什么时候需要吃饭了 他就什么时候开始想办法搞点食物 即懒汉式一开始不会实例化 什么时候用就什么时候new 才进行实例化 二 饿汉模式 顾名思义 他是一个饿汉 他很勤快就怕自己饿着 他总是先
  • sqldeveloper 格式化(美化)sql语句快捷键

    1 Ctrl A 全选需要格式化的sql 2 Ctrl F7 格式化
  • C语言文件操作(1)

    目录 一 为什么使用文件 二 什么是文件 2 1 程序文件 2 2 数据文件 2 3 文件名 三 文件的打开和关闭 3 1 文件指针 3 2 文件的打开和关闭 四 文件的顺序读写 4 1 对比一组函数 一 为什么使用文件 我们前面学习 结构
  • UVA 1601 The Morning after Halloween (BFS/双向BFS)

    单向BFS 1150ms include
  • opencv-bayes模型训练以及加载

    此代码适用于opencv 数据集分开训练数据集和测试数据集合 训练模型代码 Ptr
  • 分享5个免费的Python学习网站,抓紧收藏吧~

    最近有好多人说刚开始学习 有哪些免费的学习网站可以自学一下 于是 趁着空闲的时间在各大网站上面梳理了一下 找出了5个比较好的学习网站 并且都是免费的 比较适合初学者了解一些基础语法 解决BUG问题 如果是大佬的话了解一下就行了 废话不多说了
  • 基于RRT算法的避障路径规划(MATLAB代码)

    基于RRT算法的避障路径规划 MATLAB代码 路径规划是机器人导航和自主移动中的关键问题之一 Rapidly exploring Random Trees RRT 算法是一种经典的随机采样路径规划算法 它通过随机采样和不断扩展树结构来搜索
  • Java英文日期格式转换yyyy-MM-dd格式

    我们在后端的开发过程中会经常跟日期相关的类型打交道 不过我们大多数在开发过程中遇到的格式都是基本的 年 月 日 yyyy MM dd 格式 当然 这种格式的日期我们都可以用Java自带的SimpleDateFormat类自带的转换方法来进行
  • Animate 2021 for Mac(an 2021中文版) v21.0.1中文直装版

    全新的adobe animate2021版本更加的引入注目 比如经过修改后的资产面板允许您在新的 默认 和 自定义 选项卡中查找 组织和管理资产 并且可通过组合各种资产快速创建炫酷的动画 从而减轻了以往的逐个创建动画效果 Animate 2
  • 关于moment时区处理问题,指定时间转换特定时区

    如题网上一堆复制粘贴让使用timezone插件的文章 查了十几分钟 真是浪费生命 垃圾文章太多 如果只想转换某个时间而已 是不需要使用timezone插件的 这个插件一用可能全局的时区就变了 问题就大了 只转换某几个时间的时区解决办法是mo
  • echart时间轴设置详解

    timeline x center 时间轴X轴方向位置设置 y bottom 时间轴Y轴方向位置设置 width 80
  • 常见算法题(包括华为机试题)

    一 维护O 1 时间查找最大元素的栈 问题描述 一个栈stack 具有push和pop操作 其时间复杂度皆为O 1 设计算法max操作 求栈中的最大值 该操作的时间复杂度也要求为O 1 可以修改栈的存储方式 push pop的操作 但是要保
  • vue + element + CDN 的方式使用

    CDN方式开发vue项目步骤 1 cdn 链接相关css element ui css common css js jq vue js element ui js common js 等 2 每个页面嵌入 下列相关内容 div 3 1415