当执行 import vue from 'vue' 时发生了什么?

作者&投稿:达律 (若有异议请与网页底部的电邮联系)
~ 平时开发中,经常会用到这样一个语句:

由于浏览器兼容性问题,通常这个语法是在 webpack 的构建流搭建的项目中执行的,那么这个语句到底做了什么呢?

其实在 nodejs 中,执行 import 就相当于执行了 require ,而 require 被调用,其实会用到 require.resolve 这个函数来查找包的路径,而这个函数在 nodejs 中会有一个关于优先级的算法。先看一下 import Vue from 'vue' 这一句做了什么:

到了第五步, import Vue from 'vue' 就找到了 vue 所在的实际位置了,那么问题来了,node_modules 下的 vue 是一个文件夹,而引入的 Vue 是一个 javascript 对象,那它是怎么取到这个对象呢?

其实对于一个 npm 包,内部还有一个文件输出的规则,先看下 node_modules/vue 下的文件结构是怎么样的:

是不是看起来很笼统,其实对于 npm 包, require 的规则是这样的:

那么看一下 vue 的 package.json 文件有这么一句:

到这里就很清晰了:

而 vue.runtime.common.js 文件的最后一行是: module.exports = Vue; ,就正好跟我们平时使用时的 new Vue({}) 是一致的,这就是 import vue from 'vue' 的过程了。

当然,这个是我们平时使用得最多的导入方式,还有其他一些导入规则,都可以在 nodejs 的文档 中找到。


武威市19365968138: 编写一个Python程序,请使用同步赋值语句实现随机输入的两个变量值的交换? -
仝琴盖诺: a = input('输入第一个:') b = input('输入第二个:') print('交换前,a = {},b = {}.'.format(a, b)) a, b = b, a print('交换后,a = {},b = {}.'.format(a, b))

武威市19365968138: import vue from vue'这个vue在哪 -
仝琴盖诺: 看你的提问,感觉是在使用vue,按一般逻辑,应该是在node_modules文件夹中,该文件夹存放项目依赖模块.在js中,import vue1 from 'vue' 这句话的意思是: 加载vue模块,并输入变量vue1.import后面的from指定模块文件的位置,可以是相对路径,也可以是绝对路径.如果是模块名,不带有路径,那么必须有配置文件,告诉js引擎该模块的位置.

武威市19365968138: 在vue中script里的import是什么意思? -
仝琴盖诺: 【释义】:1、首先全局装vue-cli,它是vue的一个脚手架. 2、生成vue项目的初始化工作.这里是基于webpack打包.Vue:系列产品为3D自然环境的动画制作和渲染提供了一系列的解决方案.Vue系列有很多不同的产品,这是为了满足不同阶...

武威市19365968138: vue组件import的js依赖另外一个js 怎么解决 -
仝琴盖诺: 请明确点,不过方法有一些:尝试调整 import 的顺序.或者在 a.js 文件的开头引入 b.js 中的这个函数,其实只要代码组织按规范来,import 用起来是很灵活的.可以再外层的main.js 里先引入 './a.js'.

武威市19365968138: python里的 -- name--属性,是怎么回事? -
仝琴盖诺: 在使用自身的时候,就是main,比如你执行: python test.py 此时在test.py里面的name就是main 如果你在test2中import test,那么name就是文件名

武威市19365968138: 在vue中import()语法为什么不能传入变量 -
仝琴盖诺: 一个不错的开头1 . 首先全局装vue-cli,它是vue的一个脚手架.cnpm i -g vue-cli12 . 然后进入workspace.执行了如下代码,生成vue项目的初始化工作.这里是基于webpack打包.vue init webpack learnvue13 . 引导定制过程中,测试的选项我全...

武威市19365968138: 如何在mysql shell命令中执行sql命令行 -
仝琴盖诺: 本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法.其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信....

武威市19365968138: python在导入模块时模块会执行一次吗 -
仝琴盖诺: python是解释性动态语音,所以当你导入模块时,脚本会执行一边,脚本中的全局变量都会赋值.

武威市19365968138: python 执行import导入模块,到底执行了什么动作?导入了文件吗 -
仝琴盖诺: python中自带了很多的模块,import导入其实是引用的作用,每一个import导入模块内容都是不一样的,要看你具体用的是那个?import就好比引用了公共的方法,有别人写好的,我们直接拿来用他们的方法,就会出现我们的结果,和java,c++中引用别的类的方法一样的道理

武威市19365968138: 分析如何提高Import命令的性能 -
仝琴盖诺: 在执行IMPORT命令前,要先用INSERT BUF参数重新绑定IMPORT命令对应的绑定文件db2uimpm.bnd .例如:db2 connect to 数据库名db2 bind db2uimpm.bnd blocking all insert bufdb2uimpm.bnd在..sqllib\bnd目录下.执行IMPORT命令...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网