为什么要模块化开发

1. 依赖关系(a文件依赖b文件中的方法,b文件必须在a文件之前引入)
2. 命名问题 (多个文件变量名,方法名相同会出现覆盖)
3. 代码组织(后期不好维护)

模块化规范有

1. Common.js 规范  node,webpack使用的Common.js规范

Common.js 的导出与引入

结论:
1.module.exports = { }暴露出去。require 引入。
如果没有使用 module.exports将其暴露,将默认得到一个空对象。 2.同一个文件只能只用一个 module.exports,如果多个,将会出现覆盖。
后面的覆盖其前面的。 3.如果需要导出多个,可以放置在一个对象中 module.exports = { a:'',b:''} 4.暴露多个对象,还可以使用下面这一种
exports.say = say
exports.hello = hello
调用的方式都是相同的。 5.无论是使用 module.exports还是exports.xxx 进行导出。
我可以都是可以进行解构。因为导出的是一个对象。
let { say, hello}= require('./a')

没有导出默认得到一个空对象

a.js
function say(){
console.log('我是a.js')
}
demo.js
let a= require('./a')
console.log(a)
因为没有暴露出去,所以得到的是一个空对象

module.exports 暴露多个方法

function say(){
console.log('我是a.js')
}
function hello(){
console.log('hello呀')
} module.exports ={
say,
hello
}

node中使用ES6模块规范

结论:
1. export default 暴露出去 export default obj
通过 import A from "./a" 引入 2.如果在node中使用ES6模块的方式导出,将会报错。
Cannot use import statement outside a module
不能在模块外使用import语句。 解决办法:在根目录下创建一个package.json文件。
然后去声明一个模块类型。
可以使用命令:npm init -y
package.json文件
{
"name": "demo",
"version": "1.0.0",
"description": "",
"type": "module",
"main": "demo.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
特别说明的是:
"type": "module", 表示的是模块类型。默认是commonjs.
我们因为中node使用了es6模块的方式,隐藏要使用 module "main": "demo.js",表示的是默认执行哪一个文件 如何还报错:Did you mean to import ../xxx.js?
是因为你引入的路径不是全路径,省略了文件的后缀名。
更改为引入文件的全路径(添加上文件后缀名就行) 进一步思考:
因为你在项目的根目录下声明了模块的类型是 module。
那么你就不能够使用 Common.js规范。使用的话会报错
因此:建议只用一种类型。通常在node中,我们使用的是 Common.js

模块化Common.js与ES6的更多相关文章

  1. 模块化规范Common.js,AMD,CMD

    随着网站规模的不断扩大,嵌入网页中的javascript代码越来越大,开发过程中存在大量问题,如:协同开发,代码复用,大量文件引入,命名冲突,文件依赖. 模块化编程称为迫切的需求. 所谓的模块,就是实 ...

  2. 关于common.js里面的module.exports与es6的export default的思考总结

    背景 公司项目需要裁切功能,基于第三方图片裁切组件vue-cropper(0.4.0版本),封装了图片裁切组件(picture-cut)(放在公司内部组件库,仅限于公司内部使用) 在vue-cropp ...

  3. JS 模块化 - 02 Common JS 模块化规范

    1 Common JS 介绍 Common JS 是模块化规范之一.每个文件都是一个作用域,文件里面定义的变量/函数都是私有的,对其他模块不可见.Common JS 规范在 Node 端和浏览器端有不 ...

  4. 模块化 require.js 入门教学(前端必看系列)

    在工作的时候总是会用到模块化开发,那接下来我就顺着这个问题来说一下什么是模块化 前端模块化 !!! JS 模块化提供给我们三种规范 分别就是 No.1 commonjs  这个其实也就代表了node. ...

  5. VUEJS文件扩展名esm.js和common.js是什么意思

    vue.js : vue.js则是直接用在<script>标签中的,完整版本,直接就可以通过script引用. vue.common.js :预编译调试时,CommonJS规范的格式,可以 ...

  6. angularjs 1 开发简单案例(包含common.js,service.js,controller.js,page)

    common.js var app = angular.module('app', ['ngFileUpload']) .factory('SV_Common', function ($http) { ...

  7. 封装自己的Common.js工具库

    Code/** * Created by LT on 2013/6/16. * Common.js * 对原生JS对象的扩展 * Object.Array.String.Date.Ajax.Cooki ...

  8. vue.common.js?e881:433 TypeError: Cannot read property 'nodeName' of undefined

    我觉得吧,是这么个原因,就是响应式要找这个node改它的内容,没找着,就报错了. 用computed监控vuex的state属性,绑定到页面上,如果这个属性改了,因为响应式,那么就要更改页面,如果页面 ...

  9. 常用js方法整理common.js

    项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...

  10. 项目中常用js方法整理common.js

    抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...

随机推荐

  1. 小白必看!JS中循环语句大集合

    摘要:JavaScript中,一共给开发者提供了一下几种循环语句,分别是while循环,do-while循环,for循环,for Each,for-in循环和for-of循环. 本文分享自华为云社区& ...

  2. vue2升级vue3: h、createVNode、render、createApp使用

    h.createVNode 杂乱笔记,凑合着看,不喜勿喷! h 函数是什么 h 函数本质就是 createElement() 的简写,作用是根据配置创建对应的虚拟节点,在vue 中占有极其重要的地位! ...

  3. Cesium笔记(3):基本控件简介—ImageryProvider地图瓦片地图配

    cesiumjs中可定制多种图层,可以使用互联网上很多地图提供商的图层数据,也可以使用自己的地图数据.Cesium支持多种标准化格式的GIS瓦片服务,可以把栅格图层绘制到地球的表面--cesiumjs ...

  4. PPT 动画-莲花绽放

    画两圆,合并形状 -> 相交 复制8个图片,一共9片 旋转 最后动画 -> 平滑

  5. PPT 动画入门

    元素动画 进入动画 元素从无到有的过程 退出动画 元素从有到无的过程 退出动画和进入动画,一对一 强调动画 在元素上变化的过程(如放大) 动作路径 3D动画 三维动画 低版本不支持 组合动画 切换动画 ...

  6. leaflet 绘制 带箭头的线

    箭头不是画的线段,是贴的图标,再按方向旋转一下. 代码: //添加箭头线 function addLineDirection(polylinePointArr, source, target) { v ...

  7. k8s探针详解

    一.探针类型 Kubernetes(k8s)中的探针是一种健康检查机制,用于监测Pod内容器的运行状况.主要包括以下三种类型的探针: 1.存活探针(Liveness Probe) 2.就绪探针(Rea ...

  8. webpack升级-心得

  9. freeswitch配置SBC的方案

    概述 freeswitch 是一款好用的开源软交换平台. 但是,fs不是专为SBC而开发的,所以需要做一些定制化的配置和开发. 本文主要介绍如何利用fs的基本功能配置一个简单的SBC方案,满足一般化需 ...

  10. Linux 文件目录配置及命令总结

    前言 在Linux中,一切皆文件,而每一个文件和目录都是从根目录开始的 Linux文件目录的作用 /bin目录:用来存放二进制可执行命令的目录,用户常用的命令都存在该目录下. /sbin目录:用来存放 ...