调用的时候 统一使用
import {xxx,xxx2,xxx3} from 'xxx'
的形式调用。
当然了如果只用到其中一个变量或函数,那么只需要import进来需要的那个就行了,比如
import {a1} from './A'
.
但有时候遇到这种情况,名字重复比如B.js里面已经有个变量叫a1了,那么就加个 as 起个别名。
//B.js
import {a1 as a111,fn} from './A'
console.log(a111)
还有一种常用的import是这样的:
import * as A from './A'
console.log(A.a1)
这个怎么理解记忆呢,就是A模块在代码里不是这样导出的吗——
export {a1,fn}
这里看成导出了一个对象,对应我们
import * as A from './A
里面的
*
,然后我们给它起了个别名叫
A
,当然叫
A
是为了记忆使用的方便,你可以叫其他什么
abcd
,那么调用的时候就是
abcd.a1
abcd.fn
.
以上就是一种 export 和两种import 的搭配使用方式。在我自己早期import和export也是各种组合用,自己把自己搞糊涂了,最后发现就这俩套路翻来覆去的用,就能解决问题。
各自导出的方式
当然了,除了自己写代码,还经常调用别人写的代码,比如有这个C模块:
export var c1 = 222
export function fn() {
我一般不推荐这种写法,缺点之一是导出的变量或者函数分散在代码的各个地方,没有一个统一管理的地方,另一个缺点是不能够直观的让人理解导出的形式。
不过如果是别人写的话我们也没有办法,那我们自己可以在脑子里把他成想象成之前说的的那种导出方式:
var c1 = 222
function fn() {
export{c1,fn}
那么怎么import使用就和上面的基本情况一样了,就不赘述了。
default的用法
还有一种export用法
//C.js
var c1 = 222
function fn() {
var c2=222
export { c1,fn}
export default c2
注意这里的c2前面加了个default,那这个有啥用的呢,就是其他模块import的时候能简单点——少写一对大括号。
import c2 from "./C";
当然这里有个所谓的『优点』就是直接起别名
import c222 from "./C"
相当于
import c2 as c222 from "./C"
然后如果我们的代码里还使用了C模块的其他变量或函数,那就要这样了
import c2 ,{c1,fn} from "./C";
你就会发现import的用法瞬间成笛卡尔积复杂起来:加大括号的、不加大括号的、起别名加as的、不加as的、import*的、不带星的再乘以export的分开export的、不分开export的 default和不default的…………
export:规定模块对外接口
①默认导出:export default Test(导入时可指定模块任意名称,无需知晓内部真实名称)
②单独导出:export const name = "Bruce"
③按需导出:export { age, name, sex }(推荐)
④改名导出:export { name as newName }
import:导入模块内部功能
①默认导入:import Test from "test"
②整体导入:import * as Test from "test"
③按需导入:import { age, name, sex } from "test"
④改名导入:import { name as newName } from "test"
⑥自执导入:import "test"
⑦复合导入:import Test, { name } from "test"
export命令和import命令结合在一起写成一行,变量实质没有被导入当前模块,相当于对外转发接口,导致当前模块无法直接使用其导入变量
①默认导入导出:export { default } from "test"
②整体导入导出:export * from "test"
③按需导入导出:export { age, name, sex } from "test"
④改名导入导出:export { name as newName } from "test"
⑤具名改默认导入导出:export { name as default } from "test"
⑥默认改具名导入导出:export { default as name } from "test"
继承:默认导出和改名导出结合使用可使模块具备继承性;
设计思想:尽量地静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量;
严格模式:ES6模块自动采用严格模式.
基本用法比如模块A 向外部提供变量a1和函数fn供其他模块调用,那么我们在模块B中调用a1和fn。//A.jsvar a1=111function fn(){}export {a1,fn} //在文件的底部统一导出,即使有时候导出的变量只有一个也这样写那么在B.js中调用的形式就是这样://B.jsimport {a1,fn} from './A'console.log(a1)fn()调用的时候 统一使用import {xxx,xxx2,xxx.
新创建index.
ts
文件时自动导出打字稿文件。
在index.
ts
文件中时,运行此扩展名(“导出打字稿:写导出”)
export
* from ./<FILE>当前目录中的每个同级文件/文件夹添加
export
* from ./<FILE> 。
通过在配置中设置
export
Star=false ,可以显式导出声明,例如
export
{ Foo, Bar } from ./<FILE> 。
默认配置将导出所有具有index.
ts
文件的同级.
ts
文件和文件夹。
"
export
-typescript.excludes " :[ " *.{spec.
ts
,spec.
ts
x} " ],
"
export
-typescript.includes " :[ " *.{
ts
,
ts
x} " , " */index.{
文章目录TypeScript 中的
export
export
import
TypeScript 中的
export
注意: 目前没有任何浏览器实现
export
和
import
,要在浏览器中执行, 必须借助 TypeScript 或者其它的转换器!
export
export
语句用于从文件(或模块)中导出函数, 对象或者基础类型, 语法如下:
export
{ name1, name2, …, nameN };
export
{ variable1 as name1, variable2 as nam
export
{} //加上
export
或者
import
,表示这个文件是一个模块,里面声明的变量就会变成局部变量; 不加表示全局变量,如果其他文件也有一样的命名,就会报错
class Person {
name: string = "111"; //设置默认值
getName():void {
console.log(this.name);
let p1 = new Person()
p1.name = '111'
p1.getName()
// 定义
在讲模块化之前,我们线了解一些前端领域中有哪些模块化标准:ES6、common
js
、amd、umd、system、esnext(这个还没有正式成为模块化标准)
那么这么多模块化标准,我们在
TS
中所讨论的是ES6和common
js
,他们是如何书写模块化语句?书写完成后编译结果是如何的
TS
中如何书写模块化语句
TS
中,导入和到处模块化,同一使用ES6的模块化标准,如下例子
//myModule.
ts
文件
export
function sum(a:number,b:number):number{
安装和配置 unplugin-auto-
import
/vite 的方法如下:
1. 首先在项目目录中运行以下命令安装 unplugin-auto-
import
/vite:npm install unplugin-auto-
import
vite-plugin-compression --save-dev
2. 在项目中添加以下代码来配置 unplugin-auto-
import
/vite:
// vite.config.
js
import
{ defineConfig } from 'vite'
import
vue from '@vite
js
/plugin-vue'
import
{ viteCompression } from 'vite-plugin-compression'
import
Auto
Import
from 'unplugin-auto-
import
/vite'
export
default defineConfig({
plugins: [
vue(),
viteCompression(),
Auto
Import
({
import
s: [
'vue',
'vue-router',
'lodash-es': ['debounce', 'cloneDeep']
d
ts
: 'src/auto-
import
s.d.
ts
',
3. 现在你可以在代码中使用自动导入来导入你需要的模块,unplugin-auto-
import
/vite会自动将所需的模块导入到你的代码中:
// main.
js
import
{ createApp } from 'vue'
import
App from './App.vue'
createApp(App).mount('#app')
npm i安装包依赖时 gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env
20488