es5一个js文件导出多个模块怎么写

JavaScript047

es5一个js文件导出多个模块怎么写,第1张

es6

import ... form...替代 require()

//不接收对象 require:require('s.css')//(es5)improt  's.css' //(es6)//接收对象var o = require('s.js')//es(5)import o form s.js    //(es6)

对象的写法

导出一个模块对象(es5):

module.exports={

add:add,    sub:sub}

导出一个模块对象(es6):module.exports={

add,    sub}

注意:这种写法属性名和属性值变量是同一个,否则要分开写module.exprots={

addFn:add,    sub}  

一个对象中方法的写法

//es5module.exports={

addFun:function(x,y){        return x+y

}

}//es6module.exports={

addFun(x,y){        return x+y

}

}

导出对象的写法

calc.js中有两个函数:

function add(){}

function sub(){}

//写法一

es5写法:

module.exports.add = add

module.exports.sub = sub

使用:

var calc = require('./calc.js')

es6写法:

exprot function add(){}

exprot function sub(){}

//写法二

es5:

module.exports = {add:add,sub:sub}

es6:

exprot default{

add,sub}

//表示取得calc.js中所有暴露出来的对象(es6)import calc from './calc.js'

//只获取到calc.js中的add方法(按需获取)import {add} from './calc.js'

用export 和import 的写法注意点

1、如果模块中是使用 export default {} 方式导出的对象

只能通过  import 对象名称 from '模块路径'

不能通过  import {对象名称} from '模块路径'2、如果就想要import {对象名称} from '模块路径'通过这种方式来按需导入对象中的某个属性

那么应该使用 export 跟着要导出的对象或者方法名称    export function add(){}    export function substrct(){}

那么就可以使用:    import {add,substrct} from '模块路径'

只需要直接使用 add()方法即可

注意这里不能直接使用:  import cacl from '模块路径' 这种方式导入,会报错

最近开发支付宝小程序,记录一下遇到的坑

1 sjs只支持从sjs文件中导入模块,不能从其他js中引入。这个限制,只能在sjs里写一些小功能。

2 sjs不支持正则!sjs支持es6语法,这比微信小程序的wxs要进步一些。在 SJS 自定义脚本中不支持直接 new RegExp() 构造 regexp 对象,生成 regexp 对象需要使用 getRegExp 函数。例如:

3 下拉刷新开启,需要在app.json的window项 和页面的page.json 同事这种:pullRefresh:true

4 sjs中不能使用new 语法, new Date() 可以用 Date 替代

5 ref 有bug。 页面中多个子组件ref, 设置和提取不成功。

6 不能通过 import的方式导入本地图片等静态资源,只能通过写相对路径字符串的方式去调整图片的引用。

总结一下:

搞了一天的支付宝小程序。这些小程序做的呀,真的不知道该怎么说。为了安全,做一些限制可以理解。但是各家都自己搞一套非标准的东西,让我们这些开发人员真难受。这里面最典型的就是wxs/sjs。这种东西,就不应该出现。这东西太坑了。