Vue框架之ES6模块化

◆ 模块化的分类:

1、浏览器端的模块化:

  • AMD(Asynchronous Module Definition,异步模块定义),代表产品为:Require.js
  • CMD(Common Module Definition,通用模块定义),代表产品为:Sea.js

2、服务器端的模块化:

服务器端的模块化规范是使用CommonJS规范:

  • 使用require引入其他模块或者包
  • 使用exports或者module.exports导出模块成员
  • 一个文件就是一个模块,都拥有独立的作用域

3、ES6模块化:

ES6模块化规范中定义:

  • 每一个js文件都是独立的模块
  • 导入模块成员使用import关键字
  • 暴露模块成员使用export关键字

注:推荐使用ES6模块化,因为AMD,CMD局限使用与浏览器端,而CommonJS在服务器端使用。 ES6模块化是浏览器端和服务器端通用的规范.

◆ ES6模块化开发步骤:

1、在NodeJS中安装babel

打开终端,输入命令:

npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node 

安装完毕之后,再次输入命令安装:

npm install --save @babel/polyfill

2、创建babel.config.js

在项目目录中创建babel.config.js文件。 编辑js文件中的代码如下:

const presets = [
    ["@babel/env",{
        targets:{
            edge:"17",
            firefox:"60",
            chrome:"67",
            safari:"11.1"
        }
    }]
]

 //暴露
module.exports = { presets }

3、创建index.js文件

在项目目录中创建index.js文件作为入口文件,在index.js中输入需要执行的js代码。

console.log("ok");

4、使用npx执行文件

打开终端,输入命令:

npx babel-node ./index.js
◆ 设置默认导入/导出:

1、默认导出

export default {
    成员A,
    成员B,
    .......
}

示例:

let num = 100;
export default{
    num
}

2、默认导入

import 接收名称 from "模块标识符"

示例:

import test from "./test.js"

注:在一个模块中,只允许使用export default向外默认暴露一次成员,千万不要写多个export default。如果在一个模块中没有向外暴露成员,其他模块引入该模块时将会得到一个空对象。

◆ 设置按需导入/导出:

1、按需导出

export let num = 998;
export let myName = "jack";
export function fn = function(){ console.log("fn") }

2、按需导入

import { num,fn as printFn ,myName } from "./test.js"
//同时导入默认导出的成员以及按需导入的成员
import test,{ num,fn as printFn ,myName } from "./test.js"

注:一个模块中既可以按需导入也可以默认导入,一个模块中既可以按需导出也可以默认导出

◆ 直接导入并执行代码:
import "./test2.js";
发布了292 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/sky6even/article/details/104063267