美文网首页
typescript模块解析过程

typescript模块解析过程

作者: 小麻烦爱学习 | 来源:发表于2021-01-15 19:07 被阅读0次

点击导入的包,为何跳转到对应的.d.ts文件.

在src/router/index.ts

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'

在VS code里Ctrl+鼠标点击vue-router,跳转到node_modules/vue-router/dist/vue-router.d.ts文件.

为什么会跳转到这个文件?

模块解析过程

根据typescript模块解析整理了以下xmind图.

模块解析.png

结合vue-router的例子再梳理一下整个查找过程:

  1. /src/router/node_modules/vue-router.ts(src/router/下没有node_modules文件夹,往上一级查找)
  2. /src/node_modules/vue-router.ts(src/下没有node_modules文件夹,往上一级查找)
  3. /node_modules/vue-router.ts(和src文件夹平级的node_modules下没有vue-router.ts)
    4./node_modules/vue-router/package.json文件的types属性


    image.png
  4. 根据types对应的路径即:dist/vue-router.d.ts定位到了文件.
    所以:Ctrl+鼠标点击vue-router,跳转到node_modules/vue-router/dist/vue-router.d.ts文件.

.d.ts文件是什么?有什么用?

是什么?定义数据类型的typescript文件.
有什么用?
①编写代码时,编辑器根据.d.ts文件会有提示
②在TypeScript编译为JavaScript的过程中,用来进行类型检查.此后.d.ts文件的使命完成.


image.png

在项目运行过程中,实际用的是用的哪个js文件?

vue-router/dist/文件夹下除了vue-router.d.ts文件,还有各种js文件,分别是什么用?什么时候使用?


image.png
  1. vue-router.cjs.js:


    image.png

后缀.cjs.js,表示符合CommonJs规范的js文件.
根据上面整理的解析过程可以知道在Node策略时加载该文件.比如webpack打包时候,会使用它

  1. vue-router.cjs.prod.js:

Node.js策略且生产环境时加载该文件.在package.json文件内没有找到

  1. vue-router.esm-browser.js:

esm几个字可以看出,该js文件使用ES6模块规范.在package.json文件内没有找到

  1. vue-router.esm-bundler.js:

使用rollup编译时,使用module属性对应的路径的文件解析.vue3编译时默认使用rollup

  1. vue-router.global.js: jsdelivr 和npm上开启cnd的地址


    image.png

jsdelivr 开启cnd的地址.比如vue官网上使用vue:


image.png
image.png

npm上开启cnd的地址.

相关文章

网友评论

      本文标题:typescript模块解析过程

      本文链接:https://www.haomeiwen.com/subject/uqvfaktx.html