前端新手,想问问关于 import 命令执行的效率问题?

2023-08-30 08:42:20 +08:00
 kolibreathV

之前没有写过前端,现在临时开始学习并且编码。简单学习了一下 Vue ,看了下项目代码和 vue.js 源码心中有些疑惑. 首先我先抛出一下我现在的理解,如果理解错误请大家指正下:

  1. vue.js 是一个很大的立刻执行函数,最后 return Vue 的构造函数。在vue._init()函数中会将 Vue 函数放到 window 上,这样全局都可以使用
  2. import 命令每次都会执行对应模块的代码

我看到在项目的很多地方都会 import Vue ,然后做Vue.use()等操作,那这样会不会因为 import 反复执行 vue.js?

3506 次点击
所在节点    程序员
32 条回复
dream4ever
2023-08-30 08:45:47 +08:00
个人提一点离题的意见,新手没必要看源码,不如先把库/框架用熟,把开发效率提上来,后面有闲工夫了再研究源码啥的。
linshuizhaoying
2023-08-30 08:47:10 +08:00
新手别问效率 前端谈这些基本没啥用,你要谈的是开发效率 如何更快出货
Imindzzz
2023-08-30 08:53:16 +08:00
先学习下 node 模块和 webpack
nevermoreluo
2023-08-30 09:13:26 +08:00
import 不确定,reqire 是有 cache 的,类似脚本语言 python ,lua 等包导入都有导入模块的全局缓存
第一次缓存 miss -> path finding -> load
第二次就是缓存命中直接返回了
enchilada2020
2023-08-30 09:14:10 +08:00
不会 只有一次
touchmii
2023-08-30 09:16:11 +08:00
js 项目编译后 import 就会被实际用到的代码替换,你这种你说的这种只是 debug 下情况,不用瞎操心。
libasten
2023-08-30 09:20:53 +08:00
搭车问一下,同是 vue 项目,有两三个比较大的 json 数据文件,大约 10M 左右,需要在 vue 页面组件中使用,都通过 import 方式引入到组件中。
现在这个组件特别卡顿,是这几个 import 文件太大导致的吗?
一般有什么优化思路呢?
lizhenda
2023-08-30 09:25:18 +08:00
@libasten 改成 http 请求
eatgrass
2023-08-30 09:28:02 +08:00
@libasten
异步加载
拆分 chunk
本地缓存
xujinkai
2023-08-30 09:29:06 +08:00
import 只在第一次调用时执行一遍文件,也就是 export 出来的变量天生是单例的。
ljsh093
2023-08-30 10:18:07 +08:00
打包工具会解决重复导入的问题
libasten
2023-08-30 10:22:07 +08:00
@lizhenda http 请求会解决 vue 组件上控件操控的卡顿? import 和 http 的区别是什么?我理解的都要缓存到本地?但是 import 是“注入”到对象属性里面了?
mdn
2023-08-30 10:22:53 +08:00
@libasten 动态 import()
BUHeF254Lpd1MH06
2023-08-30 10:30:32 +08:00
@libasten 也可以使用 service worker
mdn
2023-08-30 10:31:16 +08:00
参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import

ES6 标准中,import 引入的模块是地址引用
Outclass
2023-08-30 10:39:17 +08:00
过早优化是万恶之源。[手动滑稽]
mdn
2023-08-30 10:43:28 +08:00
1. import 命令是编译阶段执行的,在代码运行之前
2. import 语句是 Singleton 模式
zhangxingliang
2023-08-30 10:50:41 +08:00
@libasten 1. dom 元素过多卡顿 2. json 转成的对象太大遍历卡顿
liuzhifei
2023-08-30 11:30:41 +08:00
我的前端编程工作经历中,最坑人的就是考虑性能。
只有当你实际操作觉得卡顿,再去考虑性能,不然没意义。
react 性能不如 vue ,但是比 vue 火太多了。
react 源码中很多都不是性能最优的代码
4771314
2023-08-30 11:43:22 +08:00
@libasten 10M 的 json ,你用浏览器或者 vs code 打开看下卡不卡?
单纯就是文件太大了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/969362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX