如何在Vuejs中优雅使用Javascript各种插件

在日常开发中,为了敏捷开发或者更快满足业务需求,不得不使使用js第三方库或者插件。

如何在Vue项目中引入javascript第三方库


全局变量

将 JavaScript 第三方库 添加到项目中,最简单的办法是通过将其附加到 window 对象上,以使其成为全局变量。

如何引入:

window._ = require(‘lodash‘); 

如何使用:

export default {
  created() {
    console.log(_.isEmpty() ? ‘Lodash everywhere!‘ : ‘Uh oh..‘);
  }
}

这种情况会使 window 变量不断增长,但是最关键的是,他们不能使用服务器渲染。当应用程序在服务端运行时,window 对象是 undefined 的,因此尝试访问 window 下的属性将会抛出一个错误。

使用ES6在每个文件中导入

二流的方法是将库导入到每个文件中:

// MyComponent.vue 文件
import _ from ‘lodash‘;
export default {
  created() {
    console.log(_.isEmpty() ? ‘Lodash is available here!‘ : ‘Uh oh..‘);
  }
}

这是有效的,但是你需要重复手动导入和移除,这是一个痛点:你必须记住将这个库导入到每个文件中,然后当你的某个文件不用这个库的时候, 记得要将它从这个文件中移除。如果你没有正确地设置你的构建工具,则可能会最终导致在构建包中存在同一个库的多个副本。

更好的方式

在Vue项目中使用Javascript库的最干净,最健壮的方法是将其代理为 Vue 原型对象的属性。我们用这种方式,将 Moment日期和时间库添加到我们的项目中:

import moment from ‘moment‘;
Object.definePrototype(Vue.prototype, ‘$moment‘, { value: moment });

由于所有组件都会继承 Vue 原型对象上方法,这将使 Moment 自动可用于任何组件,没有全局变量或任何需要手动导入的组件。它可以在任何 实例/组件 中简单地通过 this.$moment 访问被访问:

export default {
  created() {
    console.log(‘The time is ‘ . this.$moment().format("HH:mm"));
  }
}

大功告成!

时间: 2024-08-28 09:21:58

如何在Vuejs中优雅使用Javascript各种插件的相关文章

如何在vi中优雅地使用ex

记得刚开始用vi的时候,只会用:wq或者:q来退出,后来又学会了ZZ,今天上班路上没事做,又把 Learning the Vi & Vim 的 Introducing the ex Editor 过了一遍,又发现了一个退出命令-:x,其实很早以前这些内容都看过,但是由于使用惯性,渐渐地会把一些平时不太用到的命令给遗忘了,其实一个防止遗忘的好办法就是认真总结一下,方便以后查阅. 其实当我们在命令模式下按下冒号后,就已经进入ex编辑模式了,也就是说退出时使用的命令wq q x其实都是ex的命令.vi

如何在Word中优雅的插入Latex线性公式

写论文的小伙伴应该都有过这样的感受!普通二次公式的手动插入如果说是尚可忍受的话,那么做人工智能学习和物理研究的小伙伴在插入二项式定理和傅立叶公式的时候,如果是手动输入....我想不必多说了,下面我就来介绍下,如果配合Mathpix在word中优雅的输入基于Latex的线性公式. LaTeX 作为一款「史诗级」文章排版编译器,一直都有着优秀.高效的排版体验和简洁.一致的排版效果.但是 LaTeX 相对复杂的语法使用,让我们很多时候都需要花费大量时间在查阅 LaTeX 的参考文档上,才能得到我们想要

如何在 Swift 中优雅地处理 JSON

阅读目录 在Swift中使用JSON的问题 开始 基础用法 枚举(Enumeration) 下标(Subscripts) 打印 调试与错误处理 后记 因为Swift对于类型有非常严格的控制,它在处理JSON时是挺麻烦的,因为它天生就是隐式类型.SwiftyJSON是一个能帮助我们在Swift中使用JSON的开源类库.开始之前,让我们先看一下在Swift中处理JSON是多么痛苦. 在Swift中使用JSON的问题 以Twitter API为例.使用Swift,从tweet中取得一个用户的“name

如何在vuejs中抽出公共代码

当我们在使用vue构建中大型项目时,通常会遇到某些经常用的方法以及属性,比如说搭建一个员工管理系统,请求的url需要一个共同的前缀,或者在某几个view中需要用到时间,这个时间是通过某方法格式化之后的等等,如果每次用到都写共同的代码,那样如果之后有变动的话维护起来会非常麻烦. 所以我们就得想办法抽出公共代码,因为vue是组件化开发,我们就会很自然的与es6的module模块化联系到一起.其实当我们在搭建项目结构时就应该先提前埋下伏笔,有一个util文件夹,里面放的就是我们要写的公共代码,其实很多

如何在 Go 中优雅关闭子进程

有时我们会遇到这样的需求,在一个主进程中启动另外一个进程,而在 Go 中可以使用 exec 包的 Cmd 来轻松实现这类需求,例如代码: package main import ( "fmt" "log" "os" "os/exec" "os/signal" ) func main() { cmd := exec.Cmd{ Path: "nc", Args: []string{"

如何在mysql中优雅的解决精确到毫秒的问题?

刚刚搞定,不需要两个字段了.mysql5.6.4以后的版本,支持定义time(3)或者timestamp(6)这样的字段,然后使用 current_timestamp(6) 即可以为该字段赋值带有毫秒或微秒值的时间数据了! 发布于 2015-08-27 我也在研究这个问题.似乎都是两个字段来实现. http://www.zhihu.com/question/20859370 一般搜到的都是用两个字段实现,这是知乎上的说5.6.4之后的可以. 其实也可以用字符串存,而且到毫秒的时间字符串可以做主键

如何在react-native 中优雅的使用 redux

首先说下我对redux 的理解吧,第一印象很重要就像妹纸一样. 一句话来说他就是一个 js 的应用状态容器. 说长点就是当你的应用足够复杂,交互足够多的时候,你不方便管理你的 state, 那么交给 redux 吧,他是一个单向数据流,高效且清晰. 那么什么时候使用 redux呢,有一句话叫当你没有想到redux 的时候,那么你真的可能并不需要它. 下面就简单说下一些基本的概念. Action:中文意思,动作,没错,在 redux 里也是这么个意思,指用户的一个动作,放在 native 里就是

如何在TypeScript中使用第三方JavaScript框架

一.安装typings 使用npm全局安装typings :npm install -g typings 安装成功. 二,搜索资源,支持模糊搜索:typings search base64 三.安装ts库:typings install base-64 --save 此处搜索出很多个,可以随便挑选. 四.安装js库,否则无法运行:npm install base-64 --save 注意,这两个文件名字要一样 五.工程引用. 执行以上步骤,自动在项目里面生成typings文件夹 历程引用: 本文

如何在Notepad++ 中成功地安装Emmet 插件

1.双桌面已经安装好的 “Notepad++” 程序,启动Notepad++程序. 2.点开菜单“插件--->Plugin Manager--->Show Plugin Manager”. 3.进入“Plugin Manager”对话框,打开“Available”选项卡,勾选“Emmet”,点右下角的“Install”. 4.因为Emmet 需要 PythonScript 插件的支持.所以默认它会把这两个插件都安装. 5.安装完成后,提示需要重新启动 “Notepad++”,点“是”即可. 6