当前位置: 首页 > news >正文

【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用

原文:https://blog.csdn.net/zgh0711/article/details/78664262

vue 中,将页面分为了各个组件,我们写好组件,就可以将这个组件运用到其他各个页面中,每个组件都是一个 .vue 文件,里面有各自的 Html 结构,样式表和 JS 代码。这样的项目结构很清晰,维护起来也很方便。

但是最近在写项目的时候发现一个问题,我们有一些公共的样式和 JS 代码,在以前只需要直接引入相关文件就可以使用了,所以我很自然的想到在入口文件,也就是 index.html 中用传统的方式直接引入文件,然后发现没有起作用,所以这个办法是行不通的。

搜索了一番,发现有二个办法可以引入外部的文件供组件使用:
一:在组件的 .vue 文件中引入外部文件,原文链接

 

二:全局引用外部文件,原文链接
具体的做法就是在 main.js 中用 import 引入想要使用的文件,比如要引入一个全局样式文件,可以这样:

import './css/common.css'

这里要注意的是文件的层级关系,如果是同级的文件或文件夹,使用 ./ ,如果是上一级,则是 ../

引入 CSS 比较简单,引入 JS 就比较麻烦了。如果只是一些自己写的方法和工具类,有一个最简单粗暴的方法就是直接在 index.html 这个入口文件中通过传统方法引入,如:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>app</title>
</head>
<script type="text/javascript" src="./static/common.js"></script>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

这样就做到了全局引入 common.js ,同样要注意目录层级的问题。通过这种方式引入的时候有一个需要特别注意的地方就是:要把需要引入的文件放在 static 文件夹下面,否则会报错。
这个方法同样也适用于 CSS 文件,不过这个方法也有一个弊端,就是不能向在组件里面那样修改了即时刷新,放在 index.html 入口文件里面的东西,需要刷新页面才能看到效果。所以如果需要即时刷新的话,还是放在组件里面比较好。

所以总结下来就是,对于要全局引用的 CSS,最好是在 main.js 中通过 import 引入,这样能够让修改后的 CSS 样式即时刷新,而 JS 一般都是需要主动调用的,所以可以放在 index.html 里面直接引入即可。

但是对于 Jquery 的话,在 index 文件中直接引入的方式好像是有问题的,在 index 中引入的 JQuery 只能在 index 文件中使用,在组件中是没有效果的。所以 JQuery 需要采用另外i的方式引入。
虽然 vue 中不推荐使用 JQuery ,但是平时用的多了,突然不用的话有些不方便,而且以前收集整理的一些工具类中都或多或少的有用到 JQuery,如果要全部改回原生的那就更麻烦了,所以引入 JQuery 就是一个必须要做的事情了。

在 vue 中引入 JQuery 的方法
关于如何引入 JQuery 及其插件的问题,找了几篇文章  
vue-cli 怎么引入 JQuery
vue-cli 中,如何引入 JQuery 插件
vue-cli快速构建项目>>>>及引入jquery、jquery插件、this的指向 mounted钩子函数应用
如何在 Vue.js 中使用第三方库

 

相关文章:

  • 各个浏览器之间常见的兼容性问题
  • 为什么需要RPC,而不是简单的HTTP接口
  • 和开源硬件相关的几个词,免费、山寨、创客教育,以及未来 | COSCon'18
  • 2018云计算行业现状及2020年云计算发展趋势
  • 当我们谈论Promise时,我们说些什么
  • 谷歌推迟公布Google+漏洞遭参议员不满
  • 今日头条完成超25亿美元融资 软银GA与KKR参与
  • iOS开发中实用的lldb命令
  • 网络时间戳
  • 昨天1024程序员节,我故意写了个死循环~
  • Git常用命令记录
  • Algs4-2.1.32运行时间曲线图
  • BZOJ 3812 : 主旋律
  • 《JavaScript实用效果整理》系列分享专栏
  • 浅谈web中前端模板引擎的使用
  • [PHP内核探索]PHP中的哈希表
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • Codepen 每日精选(2018-3-25)
  • DataBase in Android
  • java中具有继承关系的类及其对象初始化顺序
  • js
  • Tornado学习笔记(1)
  • 服务器从安装到部署全过程(二)
  • 爬虫模拟登陆 SegmentFault
  • 盘点那些不知名却常用的 Git 操作
  • 前端代码风格自动化系列(二)之Commitlint
  • 项目管理碎碎念系列之一:干系人管理
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #AngularJS#$sce.trustAsResourceUrl
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (二)hibernate配置管理
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十)c52学习之旅-定时器实验
  • (十六)Flask之蓝图
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (未解决)macOS matplotlib 中文是方框
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *Django中的Ajax 纯js的书写样式1
  • .net CHARTING图表控件下载地址
  • .net core 6 redis操作类
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net wcf memory gates checking failed
  • .NET 常见的偏门问题
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net6使用Sejil可视化日志
  • .NET简谈设计模式之(单件模式)
  • .NET开发者必备的11款免费工具
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET设计模式(11):组合模式(Composite Pattern)