我正在JS上构建一个“库”,并且强制性地只有一个.js文件。
我刚刚开始构建,直到现在我都知道了:
app-es6 / main.js
class Sjs {
create(obj) {
console.log(obj);
}
}
index.html
<script src="app/main.js"></script>
<script>
let sjs = new Sjs();
sjs.create({
type: 'select'
});
</script>
.babelrc
{
"presets": ["es2015"]
}
1)该类不应在html中实例化,该实例应从js准备就绪,因此我可以只键入sjs.create(),例如jQuery,moment等。
2)如果我需要导入更多JS文件,以构建更结构化的样式,我可以“包装”到单个js中,将其最小化吗?
感谢您的咨询。
答案 0 :(得分:1)
1)该类不应在html中实例化,该实例应从js准备就绪,因此我可以只键入sjs.create(),例如jQuery,moment等。
只需将其放在main.js
声明之后的class
中即可:
let sjs = new Sjs();
全局范围内的 let
创建一个全局变量(尽管不是全局对象的属性[通常在浏览器中以window
的身份访问)。如果还需要该属性,请使用var
而不是let
或分配给window.sjs
(这也会创建一个全局变量;全局对象上的所有属性都是全局变量,仅此而已)从ES2015开始,并不是所有的全局变量都是全局对象的属性。
也就是说,如果是单身人士,那么使用class
并不会带来太多好处。值得注意的是,jQuery和MomentJS都公开了功能(jQuery
/ $
,moment
),而不是不可调用的对象。
2)如果我需要导入更多JS文件,以构建更结构化的样式,我可以“包装”到单个js中,将其最小化吗?
您正在寻找一个{em> bundler ,例如Webpack,Rollup等。它们具有用于与Babel集成,进行缩小等功能的插件。