百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

你知道import Vue from 'vue' 吗?

suiw9 2024-10-23 18:50 21 浏览 0 评论

前言

随着前端模块化的兴起,特别在 vuereact等一些热门框架的崛起,越来越多的公司加入了这一阵营。提及前端的模块化(这里主要说的是Javascript语言的模块化),就不得不说 es6标准提出的 export 和 import 两个命令了。当然还有 commonJS里的 module.exports 和 require 这一对组合了,这里暂不介绍这两组命令的具体用法。以后 我会专门写一篇文章介绍这两个命令的用法。我们以 es6中的 export 和 import 为例,介绍一下:

import 加载的具体流程是怎么样的

加载普通模块文件内容:

我们使用 import 加载同一项目下的某个模样文件的时候,应该是很熟练了。简单看一下。

创建一个vue项目,这个过程就不多说了,很简单,创建完之后看一下目录结构:


现在我要在 main.js里面引用 utils.js里面的内容,先看一下两个文件的内容:

// main.js
import Vue from 'vue'
import App from './App.vue'
import { log } from './utils.js'
Vue.config.productionTip = false
log('main.js')
new Vue({
  render: h => h(App),
}).$mount('#app')
// utils.js
export function log(content = '') {
  console.log(content)
}

很简单,只是在 main.js 引用了 utils.js的 log 方法,这里要记住一点:

import { log } from './utils.js' 这行代码中 from 后面的 './utils.js' 要加上 ./

再后面会有一个比较。

加载其它项目的文件

在平时开发中,不可避免的要用到其它项目,就比如说,开发vue项目,就肯定要引用 vue 这个框架。我们都知道,在自己项目中的 main.js文件里面写入:

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
new Vue({
  render: h => h(App),
}).$mount('#app')

就可以使用了,不知道小伙伴有没有发现两个问题:

  • 两个 importfrom 后面跟着的格式还是不一样,第一个没有 ./ 而第二个有 ./
  • 一个项目有很多个模块文件,import Vue from 'vue' 到底是引入的哪个文件?

说到这里了,就不得不提一个 重要的文件了: package.json。这个文件是描述一个 npm 项目的基本信息。里面有很多重要的配置。而与我们今天要介绍的内容有关的配置是 main 这个属性配置。

在我们项目的根目录下也有这个文件,我们打开 node_modules里面的一些项目,都会有这个文件。如 vue 项目:

看一下里面的 main 标签 内容:


说一下结论:

main属性主要使用在引用或者开发某个依赖包的时候需要此属性的支持,不然工程中无法用import导入依赖包

现在,我们自己写个项目放入 node_modules 中,目录如下:

// package.json
{
  // 省略了
  "main": "index.js",
  // 省略了
}

// index.js
export const name = 'index name'

main.js引入一下:

import Vue from 'vue'
import App from './App.vue'
import { name } from 'test'
Vue.config.productionTip = false
console.log(name)

运行一下,会输出:'index name'

现在把 package.json中的main属性改一下,改成:"main": other.js",再运行,发现报错了,找不到文件

 error  in ./node_modules/test/index.js
Module build failed: Error: ENOENT: no such file or directory, open '/Users/mac/Desktop/project/test-vue/node_modules/test/index.js'

再把 import { name } from 'test' 改成:import { name } from 'test/other.js'可以发现又正常了。这就说明:如果我们不指定引用哪个文件,就会根据 package.json中的main属性配置来找这个文件

如果我把main属性删除了,两把import { name } from 'test/other.js'改成import { name } from 'test'

再保存,这个时候还是会报错,找不到文件。我把 other.js改成 index.js。保存运行,又可以正常运行了。
说一下结论吧:

  • 对于引入项目本身自带的模块就要加上 ./ 或者 ../ 对这两个东西不熟悉的小朋友,可以去搜一下用法。
  • 对于引用其它项目中的,这里主要是指 node_modules里面的项目,就不能加 ./ ,否则会报错,找不到。具体情况如下:
  1. 如果我们指定要引用的文件,就直接写具体的名字就好了,如上面的:'test/other.js'
  2. 如果只写了项目的名字,会根据 package.json 中的 main属性配置来找入口文件。如果没有找到,则报错
  3. 如果没有 main 属性,则默认会去找项目根目录下面的 index.js模块为入口文件。如果没有找到,则报错

相关推荐

5款Syslog集中系统日志常用工具对比推荐

一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...

跨平台、多数据库支持的开源数据库管理工具——DBeaver

简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...

强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)

NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...

3 年 Java 程序员还玩不转 MongoDB,网友:失望

一、什么场景使用MongoDB?...

拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南

作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...

solidworks使用心得,纯干货!建议大家收藏

SolidWorks常见问题...

统一规约-关乎数字化的真正实现(规范统一性)

尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...

Elasticsearch节点角色配置详解(Node)

本篇文章将介绍如下内容:节点角色简介...

产前母婴用品分享 篇一:我的母婴购物清单及单品推荐

作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...

比任何人都光彩照人的假期!水润、紧致的肌肤护理程序

图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...

Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型

中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...

柔性——面向大规模定制生产的数字化实现的基本特征

大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...

创建PLC内部标准——企业前进的道路

作者:FrankBurger...

标准化编程之 ----------- 西门子LPMLV30测试总结

PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...

取消回复欢迎 发表评论: