导航:首页 > 编程语言 > windowvuejs

windowvuejs

发布时间:2025-05-23 03:06:35

① vue.js中confirm怎样实现

<template>
<divclass="confirm">
<divclass="shade"></div>
<divclass="content">
<divclass="top">提示</div>
<divclass="center">{{title}}</div>
<divclass="bottom">
<buttonv-on:click="clickBtn(true)">确定</button>
<buttonv-on:click="clickBtn(false)">取消</button>
</div>
</div>
</div>
</template>
<script>
//importVuefrom'vue'
exportdefault{
name:'confirmCmp',
props:['title'],
data(){return{
}},
methods:{
clickBtn(b){
this.close();
//监听result变化,并发出通知(在angularjs中叫做广播,angularjs提供了emit,broadcast和$on服务用于向子父中传递消息)
this.$emit('result',b);
},
open(){
document.querySelector('.confirm').style.display='block'
},
close(){
document.querySelector('.confirm').style.display='none'
}

},
mounted(){
//垂直居中
varwindowHeight=window.innerHeight;
vardomObj=document.querySelector('.content');
vardomObjHeight=domObj.offsetHeight;
//console.log(domObjHeight)不知道为啥获取不到高
vartop=windowHeight/2-77;
domObj.style.top=top+'px';
},
install(Vue){//核心部分,在我们使用Vue.use()时,自动调用的是install,而install导出的必须是的组件
//console.log('confirmCmpInstall');
Vue.component('confirmCmp',this);
}
}
</script>
<style>
.confirm{display:none;
position:fixed;z-index:1;width:100%;
height:100%;
}

.shade{
position:fixed;
z-index:2;
background-color:rgb(0,0,0);
opacity:0.3;
width:100%;
height:100%;
}
.content{
background-color:white;
z-index:3;
width:260px;
margin:auto;
position:relative;
left:0;right:0;
}

.top{
padding-left:20px;
background:#f6f6f6;
/*color:#212a31;*/
font-size:16px;
font-weight:700;
height:46px;
line-height:46px;
border-bottom:1pxsolid#D5D5D5;
}
.center{
padding:20px;
line-height:20px;
font-size:14px;
}
.bottom{
border-top:1pxsolid#D5D5D5;
text-align:center;
height:46px;
line-height:46px;
background:#f6f6f6;}
.bottombutton{width:60px;border:none;height:30px;display:inline-block;}
.bottombutton:first-child{background-color:#1E9FFF;color:white;margin-right:3px}
.bottombutton:last-child{margin-left:3px}

</style>

<!--插件开发教程-->
<!--https://cn.vuejs.org/v2/guide/plugins.html-->

<!--此办法行不通
http://www.cnblogs.com/yufann/p/Vue-Node8.html-->

② 如何在 Vue.js 中使用第三方库

在 Vue.js 中使用第三方库的方式有:
1.全局变量
在项目中添加第三方库的最简单方式是讲其作为一个全局变量, 挂载到 window 对象上:
entry.js
window._ = require('lodash');
MyComponent.vue
export default {
created() {
console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..');
}
}
这种方式不适合于服务端渲染, 因为服务端没有 window 对象, 是 undefined, 当试图去访问属性时会报错.

2.在每个文件中引入
另一个简单的方式是在每一个需要该库的文件中导入:
MyComponent.vue
import _ from 'lodash';

export default {
created() {
console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
}
}
这种方式是允许的, 但是比较繁琐, 并且带来的问题是: 你必须记住在哪些文件引用了该库, 如果项目不再依赖这个库时, 得去找到每一个引用该库的文件并删除该库的引用. 如果构建工具没设置正确, 可能导致该库的多份拷贝被引用.

3.优雅的方式
在 Vuejs 项目中使用 javaScript 库的一个优雅方式是讲其代理到 Vue 的原型对象上去. 按照这种方式, 我们引入 Moment 库:
entry.js
import moment from 'moment';
Object.defineProperty(Vue.prototype, '$moment', { value: moment });

由于所有的组件都会从 Vue 的原型对象上继承它们的方法, 因此在所有组件/实例中都可以通过 this.$moment: 的方式访问 Moment 而不需要定义全局变量或者手动的引入.
MyNewComponent.vue
export default {
created() {
console.log('The time is ' . this.$moment().format("HH:mm"));
}
}

③ vue外部js动态加载

vue加载远程(网络)js

vue项目中有时候会遇到加载远程(网络)js的情况,常用的方法有以下两种:

以加载在线的cesium为例

在组件中可以通过window.Cesium来获取加载的js,示例如下:

在main.js里注册组件

注意:注册组件一定要在newVue之前

在组件中使用:

这样使用比较灵活还能在加载完成和加载失败时做一些操作。

vue项目中插入外部js

script1.onload要在页面加载js之前写

···

constcenterRotationAd=document.getElementById("centerRotationAd");

···

VUE中如何动态编译js

需求:动态获取一段字符串类型的js脚本,动态编译它并且可以完美在vue中运行与之交互。

实现:动态编译js的方式有eval和newfunction

简单例子:

eval:

newfunction:

显然后者更利于扩展,详细了解区别可以参考链接内容:

要注意使用newFunction,在vue环境中直接赋值的方式函数作用域与赋值vue结构对象不同:

如何在.vue文件中引入外部js

Vue的createElement方法,简单的封装一个组件解决问题。

解决方法

第一版代码(直接在操作Dom)如下:

exportdefault{

mounted(){

consts=document.createElement('script');

s.type='text/javascript'

s.src=''

document.body.appendChild(s);

},

}

使用createElement方法:

exportdefault{

components:{

'dingtalk':{

render(createElement){

returncreateElement(

'script',

{

attrs:{

type:'text/javascript',

src:'',

},

},

);

},

},

},

}

//使用在页面中调用

终极方案

通过封装一个组件remote-js实现:

exportdefault{

components:{

'remote-js':{

render(createElement){

returncreateElement('script',{attrs:{type:'text/javascript',src:this.src}});

},

props:{

src:{type:String,required:true},

},

},

},

}

使用方法:

remote-jssrc=""remote-js

阅读全文

与windowvuejs相关的资料

热点内容
怎么看华为手机的所有的app 浏览:991
通信大数据行程卡为什么不是我的电话号码 浏览:697
如何教婴儿学英语app 浏览:462
打印文件按键盘上的哪个键 浏览:695
u盘的文件变大了 浏览:784
怎样隐藏系统文件恢复 浏览:891
驱动精灵卸载找不到文件位置 浏览:474
java多线程开发 浏览:715
素数密码学 浏览:457
js选择字体 浏览:671
拦截器放在哪个文件夹 浏览:103
洛阳哪里有学数控编程 浏览:950
压缩文件管理器使用方法 浏览:320
数据移除磁盘怎么办 浏览:471
哪里有好的群发短信app 浏览:682
小型文件系统 浏览:457
儿童编程软件如何下载 浏览:717
王牌液晶电视系统升级 浏览:876
cf手游版下载最新版本下载安装 浏览:648
超神狂暴升级等级分类 浏览:595

友情链接