我开始在Aurelia web项目中使用JSPM,我想知道使用import "<client side library>"
是否有任何后果或优势?
我见过JS类中客户端库的代码:
import "jquery";
import "bootstrap/css/bootstrap.css!"
import "bootstrap";
export class App {
constructor {
}
}
问题:与传统的<script>
和<link>
标签包含在.html
文件中相比,以这种方式导入有什么区别/优点/缺点?
<html>
<head>
<link rel="stylesheet" src="<bootstrap path>/bootstrap.css">
</head>
<body>
<script type="text/javascript" src="<bootstrap path>/bootstrap.js"></script>
</body>
</html>
我的反复试验表明,通过在特定的class/js文件中使用import
,它将库限制在该特定的视图文件中,而不是全局可用。
最终,当您为生产构建这些项目时,这些库不需要存在于index.html中吗?
我的观点是:应该使用import
关键字,原因如下:
- 风格问题:这是ES6风格,Aurelia有点强迫你使用它
-
可读性这很重要:其他开发人员希望您使用
import
,因此可能会混淆他们 - 同样,
import
负责加载,所以如果您只添加一个脚本标记,您可能会添加一些import
,然后重新声明一些函数 -
Beauty:我认为在代码中有100个
<script>
标签不是很好看 - 捆绑生产。你会用Grunt还是Gulp来凹和丑吗?如果是这样,那就需要额外的工作,因为在默认配置中,它是开箱即用的。如果不…嗯,不,你应该这么做
- 汇总。最甜蜜的部分来了
JSPM太棒了!不过,这与这个项目有点不同——将存储库与包管理器和客户端模块相结合加载程序,而不是简单地捆绑模块。JSPM允许您使用任何模块格式,甚至在没有构建步骤的情况下进行开发,因此它是创建应用程序的绝佳选择。汇总生成较小不使用复杂SystemJS格式的bundle,因此是一个更好的创建库的选项未来版本的JSPM可能使用Rollup内部,因此您将两全其美。
Rollup是使用import
的另一个pro。它所做的是剥离你使用的库,并获取你需要的最少的代码量,所以如果你只需要一些来自jQuery的东西,你就不需要让你的访问者下载50KB(或者现在是多少?)。
你可以在这里阅读更多关于Rollup的信息。