美文网首页
ES6---模块

ES6---模块

作者: 学的会的前端 | 来源:发表于2020-01-11 20:34 被阅读0次

模块

  1. ES5没有模块
  2. Python,PHP,Java知道模块。
  3. 如何把模块引入JS。
    只要能把一个豆腐切成两块,这两块就是两个模块,过程称为模块化。

模块化方法:

  1. 把代码放入单独的.js文件中,分别引入。引入顺序(即加载顺序)很重要。
  2. 用其他办法(例如注释),将代码分块也可。

依赖。利用main.js可以控制1.js2.js的执行时机。

作用:延时加载,改变模块的加载顺序。

  1. main.js
setTimeout(function(){
  window.modlue1()
},2000) //2s后执行module1

setTimeout(function(){
  window.modlue2()
},1000) //1s后执行module2
  1. 1.js
window.module1 = function(){
  alert(1)
}
//在index.html文件中先引入1.js,先加载,但2s后执行.
//window.module 导出口.
  1. 2.js
window.module2 = function(){
  alert(2)
}
//在index.html文件中后引入2.js,后加载,但1s后执行.

模块内的变量会互相干扰,因为都是全局变量,但是也可以有自己的局部变量

  1. 互相干扰的例子
//1.js
var x = "模块一"
window.module1 = function(){
  alert(x) 
}
// 2.js
var x = "模块二"
window.module2 = function(){
  alert(x) 
}
//main.js
setTimeout(function(){
  window.modlue1() //alert的结果是模块二
},2000) 

setTimeout(function(){
  window.modlue2()
},1000) //alert的结果是模块二
  1. 解决办法一:使用立即执行函数
!function(){
  var x = "模块二"
`window.module2 = function(){
    alert(x) 
  }
}()
  1. 解决办法二:{}+let
{
  let x = "模块一"
  window.module1 = function(){
    alert(x) 
  }
}

模块之间可以互相依赖

  1. skills,js
window.skills = ['HTML','CSS','JS']
  1. 1.js
{
  let x = "模块一";
  let skills = window.skills;
  window.module1 = function(){
    alert(x + skills); 
  }
}

ES6的模块---导入及导出

  1. index.html
<script type = "module" src = "main.js">
  1. 1.js
import skills from "./skills.js";
let name = "qiqi";
// let skills = window.skills;
let module1 = function() {
  alert(`我是${name},我会${skills}`);
};
export default module1;

  1. 2.js
import skills from "./skills.js";
let name = "lili";
// let skills = window.skills;
let module2 = function() {
  alert(`我是${name},我会${skills}`);
};
export default module2;

  1. skills.js
let skills = ["HTML", "CSS", "JS"];
export default skills;

  1. main.js
import module1 from "./1.js";
import module2 from "./2.js";

setTimeout(function() {
  module1();
}, 3000);

setTimeout(function() {
  module2();
}, 2000);

语法

  1. 一个模块可以导出多个变量,导入的时候,使用什么引入什么即可
export {sayHello,name,age}; //导出
import {name} from '''./1.js'; //导入
  1. 把其中一个变量作为默认变量导出,导入的时候随意起一个名字即可,都代表导出的变量
export default sayHello; //默认导出
import xxx form "./1.js"; //xxx代表sayHello
  1. 两个模块导出的额变量名一样,且还不是默认导出,那么使用时要给变量改名字
export name; //两个模块都导出name ;
import {name as name1} from "./1.js" //使用时将name改名字.
import {name as name2} form "./2.js"
  1. 只导入模块,则函数不会执行,但是代码会执行
import "./1.js"
//想要代码执行,必须导出函数并且调用函数
  1. 全部导入则使用*
import * as x from "./1.js"
  1. 路径规则
相对路径,一定要使用./开头.

对于不支持import 和export的浏览器

使用parcel

npm install -g parcel-bundler
parcel index.html

相关文章

  • ES6---模块

    模块 ES5没有模块 Python,PHP,Java知道模块。 如何把模块引入JS。只要能把一个豆腐切成两块,这两...

  • es6---函数扩展

    函数扩展 函数参数的默认值 基本用法 当y的值为false或者‘’时,其实还是应该输出fasle和’',正确的判断...

  • es6---变量let和const

    一、 变量 函数 数组 字符串 面向对象 promise generater 模块化 变量: var的缺点:1、可...

  • ES6---全新的对象object

    在JavaScript中,对象是一个很重要的概念,开发过程中,我们肯定离不开对象的。ES6追求高效、简洁,这次标准...

  • ES6---新版字符串

    ES5的字符串形式 ES6语法糖的字符串形式 插入JS代码 函数接字符串 fn${name} 是一个 ${pers...

  • ES6---新版变量声明:let和cons

    let和const a = 1会声明一个全局变量是错的,只有在没有a这个变量的时候,a = 1才会声明一个全局变量...

  • ES6---函数与对象的语法糖

    对未定义的参数的解决办法(默认参数值) 在调用时解析 在函数被调用时,参数默认值会被解析,所以不像Python中的...

  • ES6---迭代器与生成器

    字面量增强 原有字面量加强 字面量的含义字面量就是构造出来的量,不要用new函数构造的量 ,写出来的内容就是他的值...

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

网友评论

      本文标题:ES6---模块

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