热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ES6】模块化规范,Model的基本用法、匿名函数

非ES6模块化规范AMD和CMD适用于浏览器端的javascript模块化

非ES6模块化规范



  • AMD和CMD适用于浏览器端的javascript模块化

  • CommonJS适用于服务端的Javascript模块化
    这些模块化标准,还是存在一定的差异性与局限性,并不是浏览器与服务器通用的模块化标准,
    在ES6语法规范中,在语言层面定义了ES6模块化规范,是浏览器与服务器端通用的模块化开发规范


ES6模块化规范中定义(统一规范)



  • 第个js文件都是一个独立的模块

  • 导入模块成员使用import关键字

  • 暴露模块成员使用export凑字

//安装babel
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node
npm install --save @babel/polyfill
//在项目根目录创建babel.config.js 里面放
module.exports={presets}
const presets = [
["@babel/env",{
targets:{
edge:"17",
firefox:"60",
chrome:"67",
safari:"11.1"
}
}]
//通过
npx babel-node index.js
//执行代码

在这里插入图片描述
在这里插入图片描述


export default{}暴漏

//一个模块只能有一个 export default {}
//且导入和导出的模块名不需要保持一致
//导出
const math = { name , age }
export default math;
//导入
import Math123 from './math.js'

//导入方法 import name from './model.js'
//同时导入,必须export default的在前,export 的在后
import age,{a,b,c} from './model.js

export{}暴漏


//一个模块 export{} 可以有多个
//按需导入,不能随意命名,要与导出的文件、变量名、方法名一一对应
//导入name, 导出里面就有name变量导出
//暴漏的index.js模块
function fun1(){}
export {fun1}
//在引入的.vue文件里面
import {fun1} from './index.js'
//使用
fun1()
//as别名
//导出
export {
cong as fun1
}
//导入
import {fun1 as name} from './index.js'
//使用
name()

混合引入

//同时导入,必须export default的在前,export 的在后
export default age
export a,b,c
import age,{a,b,c} from './model.js

中转导入(在一个文件夹下有很多模块文件,使用)

在模块文件夹中增加一个index.js文件作为中转模块,这样可以直接导入
项目文件夹



  • 模块文件夹

    • package1.js

    • package2.js

    • package3.js



  • index.js




//在引入的.vue文件里面
import {name} from './model.js'

//模块导入,导出都可以as别名//export 导出方式
import name as cong from './model.js'
//把name设置成别名cong,然后使用cong
//export 声明或语句 ,export const name='丛继永' 导出
// 整体导入,会导入所有输出,包括通过 export default 导出的
import * as obj from './model.js'
//在模块顶层的this指向undefined
//不按模块导入this指向的windows
if (typeof this!=='undefined'){
throw new Error('请使用模块方式加载!')
}
//import命令具有提升效果,会提升到整个模块的头部,先执行
console.log(123)
console.log(456)
import './module.js' //先执行
//import 和 export 命令只能在模块的顶层,不能在代码中执行
//import()可以按条件导入,可以放在代码中执行。和webpack一起使用,有不兼容问题
if(){
import('model.js').then().catch() // promise对象
}
//导入导出的复合写法(不用)
//复合写法导出的,无法在当前模块中使用
export {name} from './module.js'
//相当于
import {name} from './module.js'
export {name} from './module.js'

匿名函数导入导出

// 外部js
;var main = (function(){
function fun1(a,b,c){console.log(1,2,3)}
function fun2(a,b,c){}
return {
“fun1”:fun1,
“fun2”:fun2
}
})()
// 引入js
main.fun1(1,2,3)



推荐阅读
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
author-avatar
mobiledu2502873611
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有